QR & deposit address

Membuat QR pembayaran sekaligus alamat deposit unik untuk order tersebut. Alamat diturunkan dari HD wallet khusus merchant Anda, sehingga tidak pernah dipakai dua kali.

Buat QR

POST/pgqr/fiat/create

Header wajib: api-key.

FieldTipeKeterangan
merchant_idstringID merchant Anda
transactionIDstringorder_no dari langkah 1
tokenAddressstringKontrak token
networkstringETHEREUM | BINANCE | TRON | SOLANA
walletTypestringMETAMASK | WALLETCONNECT | TRUSTWALLET | PHANTOM
bash
curl -X POST "$HASHPAY_BASE/pgqr/fiat/create" \
  -H "api-key: $HASHPAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "merchant_id": "10001",
    "transactionID": "INV-2026-0001",
    "tokenAddress": "0xaD322e530C15330442841b4C400D730103B0af87",
    "network": "ETHEREUM",
    "walletType": "METAMASK"
  }'
Respons 201
{
  "status_code": 201,
  "message": "success",
  "data": {
    "request": {
      "tokenName": "USDT",
      "tokenAddress": "0xaD32...af87",
      "transactionID": "INV-2026-0001",
      "network": "ETHEREUM",
      "walletType": "METAMASK",
      "order_no": "INV-2026-0001",
      "amount": "8.424283",
      "amountFiat": "150000",
      "feeAmount": "0.084243",
      "feeAmountFiat": "1500.00",
      "feeIsIncluded": true,
      "uniqueCode": "470",
      "uniqueCodeAmount": "0.000470",
      "totalAmount": "8.424753",
      "totalAmountFiat": "150001.50",
      "expiredAt": 1789854291,
      "destinationAddress": "0x2AC2223419f32a6Aab57D9d4cb3210C97Bc62d51"
    },
    "qrValue": "ethereum:0xaD32...@11155111/transfer?address=0x2AC2...&uint256=8424753"
  }
}

Field penting

FieldKeterangan
destinationAddressAlamat deposit unik untuk order ini
totalAmountNominal crypto yang harus persis dikirim pelanggan
qrValueString QR: EIP-681 (EVM) atau deep link wallet (Trust Wallet / Phantom)
uniqueCode3 digit kode unik untuk memetakan pembayaran ke order
expiredAtBatas waktu pembayaran (Unix detik)

Menampilkan QR

  • Render qrValue menjadi QR code (library apa pun, mis. qrcode).
  • Tampilkan totalAmount + tokenName secara eksplisit.
  • Sediakan tombol salin destinationAddress.
  • Tampilkan hitung mundur sampai expiredAt.
React — render QR
import QRCode from "react-qr-code";

export function PaymentQR({ qrValue, totalAmount, tokenName, address }) {
  return (
    <div>
      <QRCode value={qrValue} size={220} />
      <p>Kirim tepat {totalAmount} {tokenName}</p>
      <code>{address}</code>
    </div>
  );
}