Dalam tutorial ini, kita akan belajar tentang bagaimana mengintegrasikan payment gateway dalam PHP melalui Paypal. Dalam contoh ini, kita akan menggunakan mode sandbox (test) Paypal untuk memeriksa payment flow sebelum ditampilkan.
Langkah Integrasi payment Paypal
- Masuk / Daftar dengan https://developer.paypal.com/
- Klik Dasbor -> sandbox -> Akun dan buat akun untuk penjual dan pembeli dengan memilih Bisnis dan Pribadi masing-masing.
- Login ke akun bisnis Sandbox dan masuk ke Akun Saya -> Profil -> my selling tools
– manage button PayPal dan salin kode button dan paste di halaman Anda.
– manage preferensi Situs Web dan nyalakan Pengembalian Otomatis dan masukkan URL Pengembalian.
– Kelola pemberitahuan pembayaran Instan dan pilih Terima pesan IPN (Diaktifkan) dan masukkan URL Pemberitahuan.
Contoh Gateway Payment Paypal PHP
Dalam contoh ini, saya memiliki empat file untuk digunakan dalam proses pembayaran.
- index.php – Berisi formulir dengan parameter pembayaran Paypal dan button Beli sekarang.
- payment.php – IPN listener untuk menerima pemberitahuan pembayaran dan memperbarui database pembayaran.
- thanks.php – Menampilkan pesan sukses setelah pembayaran.
- cancel.php – Acknowledge user jika pembayaran dibatalkan.
Mengirim Parameter Pembayaran ke Paypal Sandbox
Form ini berisi item_name, item_number, jumlah, mata uang, dan parameter lainnya dengan button Beli sekarang Kita perlu menyalin kode button Paypal dari My Account-> Profil -> My selling tools -> button PayPal. Setelah mengklik button ini, params dikirim ke sandbox Paypal seperti yang disebutkan dalam form action.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<img src="camera.jpg" /> <h3>Camera <br> $0.01</h3> <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_top"> <input type='hidden' name='business' value='Paypal_Business_TestAccount_Id'> <input type='hidden' name='item_name' value='Camera'> <input type='hidden' name='item_number' value='CAM#N1'> <input type='hidden' name='amount' value='0.01'> <input type='hidden' name='no_shipping' value='1'> <input type='hidden' name='currency_code' value='USD'> <input type='hidden' name='notify_url' value='http://SITE NAME/payment.php'> <input type='hidden' name='cancel_return' value='http://SITE NAME/cancel.php'> <input type='hidden' name='return' value='http://SITE NAME/success.php'> <!-- COPY and PASTE Your Button Code --> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="hosted_button_id" value="### COPY FROM BUTTON CODE ###"> <input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_buynow_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> </form> |
Listener Pemberitahuan Pembayaran Instan
Dalam contoh ini, kami memiliki payment.php sebagai IPN listener untuk menerima pemberitahuan pembayaran. Paypal menyediakan contoh kode IPN listener untuk berbagai bahasa. Saya telah menggunakan paypal_ipn.php dan melakukan perubahan untuk memperbarui database pembayaran.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
if (strcmp ($res, "VERIFIED") == 0) { // assign posted variables to local variables $item_name = $_POST['item_name']; $item_number = $_POST['item_number']; $payment_status = $_POST['payment_status']; $payment_amount = $_POST['mc_gross']; $payment_currency = $_POST['mc_currency']; $txn_id = $_POST['txn_id']; $receiver_email = $_POST['receiver_email']; $payer_email = $_POST['payer_email']; include("dbcontroller.php"); $db = new DBController(); // check whether the payment_status is Completed $isPaymentCompleted = false; if($payment_status == "Completed") { $isPaymentCompleted = true; } // check that txn_id has not been previously processed $isUniqueTxnId = false; $result = $db->selectQuery("SELECT * FROM payments WHERE txn_id = '$txn_id'"); if(empty($result)) { $isUniqueTxnId = true; } // check that receiver_email is your PayPal email // check that payment_amount/payment_currency are correct if($isPaymentCompleted && $isUniqueTxnId && $payment_amount == "0.01" && $payment_currency == "USD") { $payment_id = $db->insertQuery("INSERT INTO payment(item_number, item_name, payment_status, payment_amount, payment_currency, txn_id) VALUES('$item_number', '$item_name', $payment_status, '$payment_amount', '$payment_currency', '$txn_id')"); } // process payment and mark item as paid. if(DEBUG == true) { error_log(date('[Y-m-d H:i e] '). "Verified IPN: $req ". PHP_EOL, 3, LOG_FILE); } } |
Setelah mengatur IPN listener ke Paypal, buka my akun -> Profil -> My selling tools dan pilih Terima pesan IPN (Diaktifkan) dan masukkan absolut file sebagai URL Pemberitahuan. Oke itulah tadi pembahasan saya tentang Cara Integration Paypal Payment Gateway dengan PHP semoga bermanfaat.