vietqr-core-sdk

Multilingual SDK Integration Guide

The VietQR Core SDK suite offers native, zero-dependency integration libraries across 9 programming languages.


1. Rust SDK (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);
}

2. Go SDK (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)
}

3. Node.js & TypeScript SDK (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);

4. PHP SDK (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";

5. Python SDK (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)

6. Java SDK (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);
    }
}

7. .NET C# SDK (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}");

8. C SDK (C99) (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;
}

9. C++ SDK (C++17) (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;
}