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/createHeader wajib: api-key.
| Field | Tipe | Keterangan |
|---|---|---|
merchant_id | string | ID merchant Anda |
transactionID | string | order_no dari langkah 1 |
tokenAddress | string | Kontrak token |
network | string | ETHEREUM | BINANCE | TRON | SOLANA |
walletType | string | METAMASK | 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
| Field | Keterangan |
|---|---|
destinationAddress | Alamat deposit unik untuk order ini |
totalAmount | Nominal crypto yang harus persis dikirim pelanggan |
qrValue | String QR: EIP-681 (EVM) atau deep link wallet (Trust Wallet / Phantom) |
uniqueCode | 3 digit kode unik untuk memetakan pembayaran ke order |
expiredAt | Batas waktu pembayaran (Unix detik) |
Menampilkan QR
- Render
qrValuemenjadi QR code (library apa pun, mis.qrcode). - Tampilkan
totalAmount+tokenNamesecara 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>
);
}