Midtrans / midtrans-php

Official Midtrans Payment API Client for PHP | https://midtrans.com
MIT License
318 stars 106 forks source link

Apakah bisa menonaktifkan redirect ke Finish URL? #51

Closed adeindriawan closed 3 years ago

adeindriawan commented 3 years ago

Saya sedang mengintegrasikan Snap Midtrans ke dalam aplikasi saya dengan Laravel sebagai backend, dan React sebagai frontend. Aplikasi tersebut berkonsep single page app (SPA) sehingga perpindahan antar halaman di-handle oleh react-router/react-router-dom tanpa proses reload/refresh/redirect halaman web.

Saat ini saya sedang menambahkan fitur Snap di aplikasi tersebut, namun sedang mengalami kesulitan karena tiap kali user selesai memilih metode pembayaran, Snap akan me-redirect aplikasi ke URL yang sudah ditentukan di Midtrans Dashboard. Proses redirect tersebut membuat state aplikasi saya menjadi terganggu. Padahal, saya sudah menggunakan JS callbacks, khususnya pada opsi onPending. Sebagaimana yang tertulis di dokumentasi,

If Merchant use snap.js JS callbacks (onPending, onSuccess, onError), those JS callbacks will be triggered instead of redirection.

Saya sudah mencoba menghapus Finish URL di dashboard maupun override Finish URL melalui backend, namun hasilnya Snap akan terus me-redirect (kali ini ke halaman utama frontend aplikasi saya). Saya juga sudah lihat dokumentasi, dan sepertinya tidak ada opsi untuk menonaktifkan fitur redirect ke Finish URL tersebut.

Mohon arahannya, terima kasih.

Xaxxis commented 3 years ago

Hi @adeindriawan Jika anda membuka halam snap melalui Snap.JS maka secara default tidak akan melakukan redirect. Akan sangat sulit jika tanpa melihat sample code anda. Pada dasarnya library snap.js tidak spesifik di design untuk ReactJS. Tapi in theory, selama ReactJS berjalan di frontend dan implementasi Anda sudah sesuai, seharusnya bisa digunakan bersamaan dengan snap.js.

Untuk details terkait Snap.JS anda dapat melihat pada halaman dokumentasi berikut https://snap-docs.midtrans.com/#snap-js Discussion terkait implementasi Snap.JS dengan reacJS

Terima kasih

Xaxxis commented 3 years ago

Hi @adeindriawan Menambahkan penjelasan diatas, Anda bisa make sure kembali untuk payment method yang digunakan, beberapa payment-method seperti direct-debit, cardless credit seperti akulaku expected saat melakukan pembayaran, memang akan diarahkan (redirect) ke halaman payment provider (bank) dan setelah customer berhasil bayar, akan diarahkan Finish redirect-url.

Terima kasih

Xaxxis commented 3 years ago

No response from the author, If you have any general questions, please contact us via email support@midtrans.com

Thank you

rakafebriansy commented 1 month ago

cukup kasih callback aja di frontend nya @adeindriawan. kebetulan saya pakai vue. window.snap.pay(res.snap_token, { onSuccess: function (result) { messageResponse.value = "Berhasil melakukan transaksi, Silahkan Tunggu Konfirmasi Dari Kami"; }, onPending: function (result) { messageResponse.value = "Pembayaran Anda sedang diproses. Mohon selesaikan pembayaran segera."; }, onError: function (result) { errorValue.value = "Maaf, terjadi kesalahan. Silakan coba lagi"; }, onClose: function () { errorValue.value = "you closed the popup without finishing the payment"; }, }); kalau kita nyediakan callback di pemanggilan snap di frontend, maka midtrans gak akan redirect ke finish_url

Gaguna jir, masih aja ke-redirect ke http://localhost:5173/product/1?order_id=6&status_code=200&transaction_status=settlement