QRIS — Cek Status
Mengecek status pembayaran QRIS menggunakan trace_number yang didapat dari response Buat QRIS.
URL: POST /api/v1/merchant/payin/qris/check
Request
Headers
| Header | Wajib | Keterangan |
|---|---|---|
X-API-Key | Ya | API Key merchant |
Content-Type | Ya | application/json |
Body
| Field | Tipe | Wajib | Keterangan |
|---|---|---|---|
trace_number | String | Ya | trace_number dari response QRIS create |
Contoh Request
{
"trace_number": "240501001234"
}
curl -X POST "https://api-sandbox.alfakios.com/api/v1/merchant/payin/qris/check" \
-H "Content-Type: application/json" \
-H "X-API-Key: apk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-d '{"trace_number": "240501001234"}'
Response
Spesifikasi
| Field | Tipe | Keterangan |
|---|---|---|
req_id | String | req_id dari transaksi asal |
ref_id | String | ID referensi internal |
product_id | String | Kode produk QRIS |
trace_number | String | Trace number yang dicek |
status | String | SUCCESS, 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 (payer info, dll) |
Contoh Response — Dibayar (SUCCESS)
{
"success": true,
"message": "Pembayaran QRIS diterima",
"rc": "000",
"data": {
"req_id": "QRIS-20240501-001",
"ref_id": "1777946295495371000",
"product_id": "GPAY",
"trace_number": "240501001234",
"status": "SUCCESS",
"rc": "000",
"description": "Payment Received",
"message": "Pembayaran QRIS berhasil dikonfirmasi",
"amount": "150000",
"data": {
"payer_name": "ANDI WIJAYA",
"payer_number": "08123456789",
"issuer": "BCA Mobile",
"paid_at": "2024-05-01T10:08:32Z",
"rrn": "240501123456"
}
}
}
Contoh Response — Belum Dibayar (PENDING)
{
"success": true,
"message": "Menunggu pembayaran",
"rc": "021",
"data": {
"req_id": "QRIS-20240501-001",
"ref_id": "1777946295495371000",
"product_id": "GPAY",
"trace_number": "240501001234",
"status": "PENDING",
"rc": "021",
"description": "Waiting Payment",
"message": "QRIS belum dibayar",
"amount": "150000",
"data": {}
}
}
Contoh Response — Tidak Ditemukan
Jika trace_number tidak valid atau tidak terdaftar di merchant ini:
HTTP Status: 404 Not Found
{
"success": false,
"message": "Transaction not found"
}
Rekomendasi Polling
Gunakan interval polling yang meningkat agar tidak membebani server:
Detik 0–30 : polling setiap 3 detik
Detik 30–60 : polling setiap 5 detik
Detik 60+ : polling setiap 10 detik
> 5 menit : tampilkan "QR kedaluwarsa" ke pelanggan
Catatan
- Endpoint ini hanya bisa mengecek QRIS yang dibuat oleh merchant yang sama (API Key yang sama).
- Setelah pembayaran dikonfirmasi (
status: "SUCCESS"),trace_numberdapat digunakan untuk refund via QRIS Refund jika diperlukan.