Petunjuk Pembuatan Landing Page untuk Pembayaran Direct Debit
Pada artikel ini akan diberikan panduan bagaimana cara membuat landing page yang berisikan informasi transaksi setelah customer menyelesaikan pembayaran melalui payment channel direct debit. Payment channel yang tersedia di Midtrans saat ini adalah CIMB Clicks, Epay BRI, Line Pay | Mandiri e-cash. Ketiga payment channel ini hanya membaca Finish URL -- untuk semua produk(Snap, Snap redirect(vtweb), Core API)-- yang dapat di konfigurasi di MAP (dashboard Midtrans)
Langkah pertama, login ke MAP↗. Pilih menu Setting -> configuration, dan isi Finish URL.
SNAP dan CORE API
Midtrans akan mengirimkan response yang perlu didapatkan di script pada Finish URL. Contoh code dibawah dibuat dalam PHP native. Silahkan sesuaikan dengan environment website anda.
<?php
$raw_response = $_POST['response']; //get the json response
$response = preg_replace('/\\\\/', '', $_POST['raw_response']); //clean up response from backslash
$decoded_response = json_decode($response);
$transaction_status = $decoded_response ->transaction_status;//how to access
?>
Response akan dikirim dalam format JSON, dalam beberapa kasus terjadi adanya penambahakn backslash dan tanda petik ("). Berikut contoh response yang mungkin diterima.
{
\"status_code\" : \"200\",
\"status_message\" : \"Success, transaction is found\",
\"transaction_id\" : \"58b48d1c-3e51-46f8-a2fb-ad5fa668f534\",
\"order_id\" : \"34\",
\"gross_amount\" : \"19999998.00\",
\"payment_type\" : \"cimb_clicks\",
\"transaction_time\" : \"2018-01-26 08:57:45\",
\"transaction_status\" : \"settlement\",
\"approval_code\" : \"1516957074590\",
\"signature_key\" : \"30b048ffff95e08c34cf265268224f0b6460d7716b3d70424a7203609a78b335280fe6137a9938cd3af24533fdafcfe8771203f6f30f21fd141a378bba1685fb\"
}
Jika response yang didapatkan seperti itu, maka perlu dibersihkan terlebih dahulu sehingga menjadi seperti ini.
{
"status_code" : "200",
"status_message" : "Success, transaction is found",
"transaction_id" : "58b48d1c-3e51-46f8-a2fb-ad5fa668f534",
"order_id" : "34",
"gross_amount" : "19999998.00",
"payment_type" : "cimb_clicks",
"transaction_time" : "2018-01-26 08:57:45",
"transaction_status" : "settlement",
"approval_code" : "1516957074590",
"signature_key" : "30b048ffff95e08c34cf265268224f0b6460d7716b3d70424a7203609a78b335280fe6137a9938cd3af24533fdafcfe8771203f6f30f21fd141a378bba1685fb"
}
Kemudian dilakukan decode dari json tersebut sehingga bisa di baca oleh PHP. Berikut hasil decode response tersebut
stdClass Object
(
[status_code] => 200
[status_message] => Success, transaction is found
[transaction_id] => 58b48d1c-3e51-46f8-a2fb-ad5fa668f534
[order_id] => 34
[gross_amount] => 19999998.00
[payment_type] => cimb_clicks
[transaction_time] => 2018-01-26 08:57:45
[transaction_status] => settlement
[approval_code] => 1516957074590
[signature_key] => 30b048ffff95e08c34cf265268224f0b6460d7716b3d70424a7203609a78b335280fe6137a9938cd3af24533fdafcfe8771203f6f30f21fd141a378bba1685fb
)
Sekarang kira dapat menggunakan response tersebut untuk memberikan informasi ke pelanggan.
Snap Redirection (vtweb)
Ketika pelanggan kembali ke website anda, Finish URL anda akan ditambahkan dengan query string yang berisikan merchant_id, status_code, dan transaction_status. Informasi dari query string dapat diambil dengan menggunakan method GET. Untuk mendapatkan merchant_id dengan method get caranya adalah sebagai berikut: $_GET['merchant_id'] . Gunakanlah informasi-informasi ini hanya untuk menampilkan pesan ke halaman website anda. SANGAT TIDAK DISARANKAN menggunakan informasi-informasi tersebut untuk MEMPERBARUI DATABASE! Hal ini disebabkan karena query string mudah untuk dimodifikasi oleh pihak yang tidak bertanggung jawab.
Contoh URL untuk transaksi dengan status deny
https://example.com/finish?merchant_id=MXXXX&order_id=xxxx&status_code=202&transaction_status=deny
Contoh URL untuk transaksi dengan status pending
https://example.com/finish?merchant_id=MXXXX&order_id=xxxx&status_code=201&transaction_status=pending
Contoh URL untuk transaksi yang berhasil.
https://example.com/finish?merchant_id=M118543&order_id=1518077904&status_code=200&transaction_status=settlement
Contoh code untuk mengambil informasi pada query string dalam PHP.
<?php
$order_id = $_GET['order_id']
$txn_status = $_GET['transaction_status']
?>
Can't find your answer? How about looking at our Tech Docs?
Tech docs
Our API and plug-ins play well with platforms from PHP, Shopify, Woo Commerce to Android and many more.
Learn more