QRIS — Buat Transaksi
Membuat QRIS pembayaran untuk satu transaksi. Pelanggan memindai QR code yang dihasilkan menggunakan aplikasi m-banking atau dompet digital.
URL: POST /api/v1/merchant/payin/qris/create
Request
Headers
| Header | Wajib | Keterangan |
|---|---|---|
X-API-Key | Ya | API Key merchant |
Content-Type | Ya | application/json |
X-Signature | Kondisional | Jika Signature Validation aktif |
X-Timestamp | Kondisional | Unix timestamp (jika Signature Validation aktif) |
Body
| Field | Tipe | Wajib | Keterangan |
|---|---|---|---|
req_id | String | Ya | ID unik transaksi dari merchant (idempotency key) |
product_id | String | Ya | Kode produk QRIS (contoh: "GPAY") |
amount | String | Ya | Nominal pembayaran dalam IDR (digits only) |
Contoh Request
{
"req_id": "QRIS-20240501-001",
"product_id": "GPAY",
"amount": "150000"
}
curl -X POST "https://api-sandbox.alfakios.com/api/v1/merchant/payin/qris/create" \
-H "Content-Type: application/json" \
-H "X-API-Key: apk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-d '{
"req_id": "QRIS-20240501-001",
"product_id": "GPAY",
"amount": "150000"
}'
Response
Spesifikasi
| Field | Tipe | Keterangan |
|---|---|---|
req_id | String | req_id yang dikirim merchant |
ref_id | String | ID referensi internal sistem |
product_id | String | Kode produk QRIS |
trace_number | String | Nomor unik dari GPay — simpan untuk cek status dan refund |
status | String | SUCCESS (QRIS berhasil dibuat), PENDING, atau FAILED |
rc | String | Kode respon |
description | String | Keterangan RC |
message | String | Pesan detail |
amount | String | Nominal pembayaran |
data | Object | Data tambahan dari GPay, termasuk QR string/URL |
Contoh Response Berhasil
{
"success": true,
"message": "QRIS created successfully",
"rc": "000",
"data": {
"req_id": "QRIS-20240501-001",
"ref_id": "1777946295495371000",
"product_id": "GPAY",
"trace_number": "240501001234",
"status": "SUCCESS",
"rc": "000",
"description": "QRIS Created",
"message": "QRIS berhasil dibuat",
"amount": "150000",
"data": {
"qr_string": "00020101021226670016ID.CO.BCA.WWW01189360050300000068790215240501001234...",
"qr_url": "https://api.gpay.co.id/qris/240501001234.png",
"expired_at": "2024-05-01T10:15:00Z"
}
}
}
Contoh Response Gagal
{
"success": true,
"message": "QRIS creation failed",
"rc": "009",
"data": {
"req_id": "QRIS-20240501-002",
"status": "FAILED",
"rc": "009",
"description": "Biller Error",
"message": "GPay tidak tersedia saat ini",
"data": {}
}
}
Langkah Selanjutnya
Setelah mendapatkan QRIS:
- Tampilkan QR code kepada pelanggan menggunakan
data.qr_string(render menjadi QR image) ataudata.qr_url(langsung tampilkan gambar). - Simpan
trace_number— digunakan untuk cek status dan refund. - Polling status via Cek Status QRIS atau tunggu webhook callback.
Catatan
- QR code memiliki masa berlaku (lihat
data.expired_at). Jika kedaluwarsa tanpa pembayaran, buat QRIS baru denganreq_idbaru. - Jika koneksi terputus saat membuat QRIS, coba lagi dengan
req_idyang sama — sistem akan mengembalikan QRIS yang sudah dibuat tanpa membuat duplikat.