Guest checkout, juga dikenal sebagai one-off payment, adalah cara paling sederhana bagi pelanggan untuk menyelesaikan transaksi tanpa perlu membuat akun. Selama proses ini, pelanggan memasukkan detail kartu mereka, mengautentikasi diri mereka sendiri, dan menyelesaikan pembelian mereka.
Alur guest checkout
1. Buat payment session
Request - POST /sesi
| Response - POST /sesi
|
---|
2. Kumpulkan informasi kartu
a. Buat card_session.js di halaman Anda.
b. Kumpulkan informasi kartu menggunakan Xendit.payment.collectCardData(reqData, xenditResponseHandler)
. Ini akan mengumpulkan informasi kartu dan mengirimkannya ke Xendit dengan card_session.js.
Permintaan - untuk card_session_js
| response - dari card_session_js
|
---|
Penting: Simpan payment_request_id
. Anda akan memerlukannya untuk mengambil status transaksi dan akan disertakan dalam webhook pembayaran untuk pembaruan status.
3. Alihkan ke halaman otentikasi
Alihkan pembeli ke halaman otentikasi yang disediakan oleh action_url
objek respons dari pembeli. Di sinilah pemegang kartu menyelesaikan otentikasi 3D Secure.
4. Pembeli menyelesaikan otentikasi
Setelah berhasil mengautentikasi, pembeli akan diarahkan ke success_return_url
. Jika otentikasi gagal, autentikasi akan dialihkan ke failure_return_url
.
5. Terima webhook
Xendit akan mengirimkan webhook pembayaran ke titik akhir webhook Anda yang dikonfigurasi, menunjukkan status akhir transaksi. Anda dapat mencocokkan webhook ini dengan yang payment_request_id
Anda simpan sebelumnya.
Contoh payment.capture
webhook:
{
"created": "2024-12-18T05:46:35.109Z",
"business_id": "62440e322008e87fb29c1fd0",
"event": "payment.capture",
"data": {
"type": "PAY",
"status": "SUCCEEDED",
"country": "ID",
"created": "2024-12-18T05:46:08.192Z",
"updated": "2024-12-18T05:46:30.627Z",
"captures": [
{
"capture_id": "cptr-08f17fa3-e80c-4d8e-8c34-17aa3400bc1c",
"capture_amount": 10000,
"capture_timestamp": "2024-12-18T05:46:34.234Z"
}
],
"currency": "IDR",
"payment_id": "py-3f57d678-2448-4c9f-a433-8468d366fb5c",
"business_id": "62440e322008e87fb29c1fd0",
"customer_id": "cust-7de9a9b4-37e8-40ad-b665-d97f42e538c5",
"channel_code": "CARDS",
"reference_id": "97ba0a32-b996-4abf-8a7b-6184a6644676_b8d18f2f-3",
"capture_method": "AUTOMATIC",
"request_amount": 10000,
"payment_details": {
"authorization_data": {
"reconciliation_id": "7345007929096981703954",
"authorization_code": "831000",
"acquirer_merchant_id": "xendit_ctv_agg",
"network_response_code": "00",
"network_transaction_id": "016153570198200",
"cvn_verification_result": "M",
"retrieval_reference_number": "435205253972",
"address_verification_result": "M",
"network_response_code_descriptor": "Approved and completed sucessfully"
},
"authentication_data": {
"flow": "CHALLENGE",
"a_res": {
"eci": "05",
"message_version": "2.1.0",
"authentication_value": "AAIBBYNoEwAAACcKhAJkdQAAAAA=","directory_server_trans_id": "e537f539-d59f-4ebe-8d56-7fdc31a8e9b4"
}
}
},
"payment_request_id": "pr-5593127f-8c7b-4d2f-b487-c785ffc21e2f"
},
"api_version": "v3"
}
Disarankan untuk menyimpan payment_id
dan payment_details
dari webhook, yang berkorelasi dengan payment_request_id
, sebagai bukti pembayaran.
Guest checkout tanpa autentikasi (one-off payment)
Kami sangat menyarankan Anda untuk melakukan autentikasi saat memproses transaksi kartu. Autentikasi tidak hanya memberikan liability shift (melindungi Anda dari sengketa penipuan tertentu), tetapi juga untuk memverifikasi identitas pengguna.
Namun, berdasarkan permintaan dan setelah penilaian berbasis resiko, Xendit dapat mengaktifkan guest checkout tanpa mewajibkan autentikasi. Kami akan melakukan penilaian berbasis risiko sebelum mengizinkan Anda menerima transaksi tanpa autentikasi.
Alur guest checkout tanpa autentikasi
Cara menerapkan
1. Buat payment session
Request - POST /sesi
| Response - POST /sesi
|
---|
2. Kumpulkan informasi kartu
Mirip dengan alur yang diautentikasi, buat card_session.js pada halaman Anda dan gunakan Xendit.payment.collectCardData(reqData, xenditResponseHandler)
untuk mengumpulkan informasi kartu. Ini akan mengumpulkan detail kartu dan mengirimkannya ke Xendit menggunakan card_session.js.
Request - untuk card_session_js
| Response - dari card_session_js
|
---|
Penting: Pastikan untuk menyimpan karena payment_request_id
Anda akan memerlukannya untuk mengambil status transaksi di tahap selanjutnya.
3. Terima webhook
Xendit akan segera mengirimkan webhook pembayaran ke endpoint webhook Anda dengan status transaksi akhir. Anda dapat mencocokkan webhook pembayaran dengan payment_request_id.
Contoh payment.capture
webhook
{
"created": "2024-12-18T05:46:35.109Z",
"business_id": "62440e322008e87fb29c1fd0",
"event": "payment.capture",
"data": {
"type": "PAY",
"status": "SUCCEEDED",
"country": "ID",
"created": "2024-12-18T05:46:08.192Z",
"updated": "2024-12-18T05:46:30.627Z",
"captures": [
{
"capture_id": "cptr-08f17fa3-e80c-4d8e-8c34-17aa3400bc1c",
"capture_amount": 10000,
"capture_timestamp": "2024-12-18T05:46:34.234Z"
}
],
"currency": "IDR",
"payment_id": "py-3f57d678-2448-4c9f-a433-8468d366fb5c",
"business_id": "62440e322008e87fb29c1fd0",
"customer_id": "cust-7de9a9b4-37e8-40ad-b665-d97f42e538c5",
"channel_code": "CARDS",
"reference_id": "97ba0a32-b996-4abf-8a7b-6184a6644676_b8d18f2f-3",
"capture_method": "AUTOMATIC",
"request_amount": 10000,
"payment_details": {
"authorization_data": {
"reconciliation_id": "7345007929096981703954",
"authorization_code": "831000",
"acquirer_merchant_id": "xendit_ctv_agg",
"network_response_code": "00",
"network_transaction_id": "016153570198200",
"cvn_verification_result": "M",
"retrieval_reference_number": "435205253972",
"address_verification_result": "M",
"network_response_code_descriptor": "Approved and completed sucessfully"
},
"authentication_data": {
"flow": "CHALLENGE",
"a_res": {
"eci": "05",
"message_version": "2.1.0",
"authentication_value": "AAIBBYNoEwAAACcKhAJkdQAAAAA=","directory_server_trans_id": "e537f539-d59f-4ebe-8d56-7fdc31a8e9b4"
}
}
},
"payment_request_id": "pr-5593127f-8c7b-4d2f-b487-c785ffc21e2f"
},
"api_version": "v3"
}
Seperti halnya alur yang diautentikasi, Anda dapat menyimpan dan payment_id
payment_details
berkorelasi dengan sebagai payment_request_id
bukti pembayaran.
4. Dapatkan status transaksi
Jika Anda lebih suka melakukan polling untuk status transaksi daripada hanya mengandalkan webhook, Anda dapat menggunakan endpoint Permintaan Pembayaran GET dengan payment_request_id
.
Minta: GET https://api.xendit.co/v3/payment_requests/YOUR_PAYMENT_REQUEST_ID
Ini akan mengembalikan status transaksi.
response - dari payment_requests
|
---|