The VietQR Core SDK suite offers native, zero-dependency integration libraries across 9 programming languages.
sdks/rust)Add to Cargo.toml:
[dependencies]
vietqr = { path = "sdks/rust" }
Usage:
use vietqr::{EMVCoBuilder, BankCatalog, QuickLink, Deeplink};
fn main() {
let qr = EMVCoBuilder::new("970436", "1234567890")
.amount(100_000)
.memo("Order 101")
.account_name("NGUYEN VAN A")
.build();
println!("EMVCo QR: {}", qr);
let quicklink = QuickLink::new("970436", "1234567890")
.domain("qr.yourdomain.com")
.amount(100_000)
.memo("Order 101")
.template("compact2")
.build();
println!("QuickLink: {}", quicklink);
}
sdks/golang)package main
import (
"fmt"
"github.com/vietqr/vietqr-core-sdk/sdks/golang"
)
func main() {
qr, _ := vietqr.New("970436", "1234567890").
WithAmount(100000).
WithMemo("Order 101").
WithAccountName("NGUYEN VAN A").
Build()
fmt.Println("EMVCo QR:", qr)
link := vietqr.NewQuickLink("970436", "1234567890").
WithDomain("qr.yourdomain.com").
WithAmount(100000).
WithTemplate("compact2").
Build()
fmt.Println("QuickLink:", link)
}
sdks/nodejs)import { VietQR, QuickLink } from 'vietqr-core-sdk';
const qr = new VietQR('970436', '1234567890')
.setAmount(100000)
.setMemo('Order 101')
.setAccountName('NGUYEN VAN A')
.build();
console.log('EMVCo QR:', qr);
const link = new QuickLink('970436', '1234567890')
.setDomain('qr.yourdomain.com')
.setAmount(100000)
.setTemplate('compact2')
.build();
console.log('QuickLink:', link);
sdks/php)<?php
require_once __DIR__ . '/vendor/autoload.php';
use VietQR\VietQR;
use VietQR\QuickLink;
$qr = (new VietQR('970436', '1234567890'))
->setAmount(100000)
->setMemo('Order 101')
->setAccountName('NGUYEN VAN A')
->build();
echo "EMVCo QR: " . $qr . "\n";
$link = (new QuickLink('970436', '1234567890'))
->setDomain('qr.yourdomain.com')
->setAmount(100000)
->setTemplate('compact2')
->build();
echo "QuickLink: " . $link . "\n";
sdks/python)from vietqr import VietQR, QuickLink
qr = (VietQR("970436", "1234567890")
.set_amount(100000)
.set_memo("Order 101")
.set_account_name("NGUYEN VAN A")
.build())
print("EMVCo QR:", qr)
link = (QuickLink("970436", "1234567890")
.set_domain("qr.yourdomain.com")
.set_amount(100000)
.set_template("compact2")
.build())
print("QuickLink:", link)
sdks/java)import io.vietqr.VietQR;
import io.vietqr.QuickLink;
public class App {
public static void main(String[] args) {
String qr = new VietQR("970436", "1234567890")
.amount(100000)
.memo("Order 101")
.accountName("NGUYEN VAN A")
.build();
System.out.println("EMVCo QR: " + qr);
String link = new QuickLink("970436", "1234567890")
.domain("qr.yourdomain.com")
.amount(100000)
.template("compact2")
.build();
System.out.println("QuickLink: " + link);
}
}
sdks/dotnet)using VietQR.Core;
var qr = new VietQRBuilder("970436", "1234567890")
.WithAmount(100000)
.WithMemo("Order 101")
.WithAccountName("NGUYEN VAN A")
.Build();
Console.WriteLine($"EMVCo QR: {qr}");
var link = new QuickLink("970436", "1234567890")
.WithDomain("qr.yourdomain.com")
.WithAmount(100000)
.WithTemplate("compact2")
.Build();
Console.WriteLine($"QuickLink: {link}");
sdks/c)#include "vietqr.h"
#include <stdio.h>
int main() {
vietqr_t qr;
vietqr_init(&qr, "970436", "1234567890");
vietqr_set_amount(&qr, 100000);
vietqr_set_memo(&qr, "Order 101");
vietqr_set_account_name(&qr, "NGUYEN VAN A");
char buffer[1024];
vietqr_build_emvco(&qr, buffer, sizeof(buffer));
printf("EMVCo: %s\n", buffer);
char url[512];
vietqr_build_quicklink(&qr, "qr.yourdomain.com", "compact2", url, sizeof(url));
printf("QuickLink: %s\n", url);
return 0;
}
sdks/cpp)#include "vietqr.hpp"
#include <iostream>
int main() {
auto qr = vietqr::VietQR("970436", "1234567890")
.amount(100000)
.memo("Order 101")
.account_name("NGUYEN VAN A")
.build();
std::cout << "EMVCo: " << qr << std::endl;
auto img = vietqr::QuickLink("970436", "1234567890")
.domain("qr.yourdomain.com")
.amount(100000)
.template_name("compact2")
.build();
std::cout << "Image URL: " << img << std::endl;
return 0;
}