ambil response qr code untuk prefix qr_ gakmuncul
min mau nany, kan saya bikin pembayaran lewat qr code nih, nah saat development kan buat simulasi pembayaran qr code nya kan dari sesuai contoh harus pakai "id": "qr_61cb3576-3a25-4d35-8d15-0e8e3bdba4f2", dimana qr_ nya itu muncul saat membuat qrcode nya dengan postman lewat api langsung ke POST https://api.xendit.co/qr_codes yang nanti nya kan dapet respon nya nih dapet qr_ ini,
misal nya
{
"id": "qr_61cb3576-3a25-4d35-8d15-0e8e3bdba4f2",
"reference_id": "order-id-1666420204",
"business_id": "58cd618ba0464eb64acdb246",
"type": "DYNAMIC",
"currency": "IDR",
"amount": 10000,
"channel_code": "ID_DANA",
"status": "ACTIVE",
"qr_string": "0002010102##########CO.XENDIT.WWW011893600#######14220002152#####414220010303TTT####015CO.XENDIT.WWW02180000000000000000000TTT52045######ID5911XenditQRIS6007Jakarta6105121606##########3k1mOnF73h11111111#3k1mOnF73h6v53033605401163040BDB",
"expires_at": "2022-10-23T09:56:43.60445Z",
"created": "2022-10-22T06:30:05.86474Z",
"updated": "2022-10-22T06:30:05.86474Z",
"basket": null,
"metadata": null
}
nah kan disitu ada qr_ nya tuh , tapi kalau saya pake dengan cara ini pake 'PaymentRequestParameters'
$apiInstance = new PaymentRequestApi();
$paymentRequestParameters = new PaymentRequestParameters([
'reference_id' => $this->externalId,
'amount' => $product->price,
'currency' => 'IDR',
'payment_method' => [
'type' => 'QR_CODE',
'reusability' => 'ONE_TIME_USE',
'qr_code' => [
'channel_code' => 'QRIS', // Ganti dengan channel yang diinginkan (misal: 'ID_DANA')
]
],
'description' => 'Pembelian ' . $product->name,
'metadata' => [
'product_id' => $product->id,
'user_id' => auth()->id()
]
]);
$result = $apiInstance->createPaymentRequest(
null,
null,
null,
$paymentRequestParameters
);
// Simpan ID dari Xendit
$qrId = $result['id'] ?? null;
// Simpan qr_string dari respons Xendit
$qrString = $result['payment_method']['qr_code']['channel_properties']['qr_string'] ?? null;
if (!$qrId || !$qrString) {
throw new \Exception('QR ID atau QR string tidak ditemukan dalam respons Xendit');
}
// Update payment transaction dengan data QR
$payment->update([
'xendit_reference_id' => $result['id'],
'xendit_response' => json_encode($result),
'metadata' => [
'qr_id' => $qrId,
'qr_string' => $qrString,
'qr_code_path' => 'qr_codes/' . $this->externalId . '.png'
]
]);
maka hasil nya membuat QR Code nya itu dapet response nya kaya gini, tapi saya cek di dashbord xendit bagian qr mode (test mode) Qr nya kebuat,
{
"qr_id": "pr-38f66543-0524-4301-884e-efe5b0ad18e2",
"qr_string": "some-random-qr-string",
"reference_id": "purchase-4-20250526180337",
"result": {
"Xendit\\PaymentRequest\\PaymentRequest": {
"id": "pr-38f66543-0524-4301-884e-efe5b0ad18e2",
"created": "2025-05-26T11:03:49.612364506Z",
"updated": "2025-05-26T11:03:49.612364506Z",
"reference_id": "purchase-4-20250526180337",
"business_id": "6575523b9b07e7080d368d89",
"customer_id": null,
"customer": null,
"amount": 1000.0,
"min_amount": null,
"max_amount": null,
"country": "ID",
"currency": "IDR",
"payment_method": {
"id": "pm-40abffa7-24ca-4a94-9b2f-d80232ea2cdc",
"type": "QR_CODE",
"created": "2025-05-26T11:03:49.728042854Z",
"updated": "2025-05-26T11:03:49.728042854Z",
"description": null,
"reference_id": "5ddb478f-5d76-4e95-a63d-4d8059feba34",
"card": null,
"direct_debit": null,
"ewallet": null,
"over_the_counter": null,
"virtual_account": null,
"qr_code": {
"channel_code": "QRIS",
"channel_properties": {
"qr_string": "some-random-qr-string"
}
},
"reusability": "ONE_TIME_USE",
"status": "ACTIVE",
"metadata": null
},
"description": "Pembelian 1000",
"failure_code": null,
"capture_method": "AUTOMATIC",
"initiator": null,
"card_verification_results": null,
"status": "PENDING",
"actions": [],
"metadata": {
"product_id": 5,
"user_id": 4
},
"shipping_information": null,
"items": null
}
}
}
nah disini gak dapet si prefix qr_ nya, soal nya pas saya cek di bagian untuk simulasi nya pembayaran untuk qr tuh harus pakai awalan qr_ nah disini bingung, gimana cara nya buat bayar silmulasi nya, berbeda kalau pake api http langsung, pake postman saat create qr cod enya muncul, itu qr...
ni juga buat simulasi bayar pake QR code harus copy paste kaya gini
- bikin pake xendit-sdk -> udah dapet respon nya -> qr nya ada di dasboard sendit -> bikin manual qr lagi pake postman ->masukin amount nya sama seperti yang sebelum nya pake sdk ->dapet 'qr_' nya -> pasti di response yang satya dapet dari SDK pada bagian ['payment_moethod']['reference_id'] (paste 'disini qr_' nya) -> lalu simulasi bayar pake postman contoh nya 'https://api.xendit.co/qr_codes/qr_61cb3576-3a25-4d35-8d15-0e8e3bdba4f2/payments/simulate' (kalo gak pake awalan qr_ malah data not found
tapi kalo sudah dibayar dapet respon dari sxendit, malah dapet
{
"data": {
"id": "qrpy_dee3f18e-c0c0-48e9-8748-e2ad55277203",
"type": "DYNAMIC",
"qr_id": "qr_de15cadf-08bc-4486-96ae-8bf5de9b7861",
"amount": 1000,
"status": "SUCCEEDED",
"created": "2025-05-26T10:00:28.020782Z",
"currency": "IDR",
"metadata": null,
"qr_string": "some-random-qr-string",
"expires_at": "2025-05-28T09:59:37.574055Z",
"business_id": "6575523b9b07e7080d368d89",
"channel_code": "ID_XENDIT",
"reference_id": "purchase-4-20250526165255",
"payment_detail": {
"name": null,
"source": "DANA",
"receipt_id": null,
"customer_pan": null,
"merchant_pan": null,
"account_details": null
}
},
"event": "qr.payment",
"created": "2025-05-26T10:00:28.245Z",
"api_version": "2022-07-31",
"business_id": "6575523b9b07e7080d368d89"
}
atau emang qr_id muncul pas udah bayar kali ya?
terus 1 lagi untuk yang qr_string itu kan nanti dapet saat live nya itu kan dapat kaya gini
"qr_string": "0002010102##########CO.XENDIT.WWW011893600#######14220002152#####414220010303TTT####015CO.XENDIT.WWW02180000000000000000000TTT52045######ID5911XenditQRIS6007Jakarta6105121606##########3k1mOnF73h11111111#3k1mOnF73h6v53033605401163040BDB",
nah berarti kode qr_string ini , saya buatkan sendiri gambar qr_code nya?
btw sata isi kolom callback di dashboard xendit nya di : QR CODE : QR code terbayarkan & di-refund REQUEST PAYMENT V2 (/v2/payment_requests) : Pembayaran Berhasil METODE PEMBAYARAN V2 (/v2/payment_methods): Metode pembayaran
soalnya buat invoice nya sudah kepake buat website lain..