Baca Juga :  Membuat, Mengakses dan Menghancurkan Session PHP dan Variabel Cookie

Cara Integrasi Paypal Payment Gateway Menggunakan PHP

5 873

Dalam tutorial ini, kita akan melihat bagaimana cara mengintegrasikan payment gateway di PHP via Paypal. Kita akan melihat contoh kode di PHP untuk integrasi pembayaran. Dalam contoh ini, kami menggunakan mode Sandbox Paypal untuk memeriksa arus pembayaran sebelum live.

Langkah Integrasi Pembayaran Paypal

  1. Login / Daftar dengan https://developer.paypal.com/
  2. Buka Dashboard -> Sandbox -> Accounts dan buat akun uji untuk penjual dan pembeli dengan memilih Bisnis dan Pribadi masing-masing.
  3. Login ke akun bisnis Sandbox dan masuk ke My Account -> Profile -> My selling tools
    • Kelola tombol PayPal dan salin kode tombol dan tempel di halaman kamu.
    • Kelola Preferensi Website dan aktifkan Auto Return dan enter Return URL.
    • Mengelola pemberitahuan pembayaran Instan dan pilih Terima pesan IPN (Diaktifkan) dan masukkan URL Pemberitahuan.

Contoh Pembayaran Gateway Paypal PHP

Dalam contoh ini, kita memiliki empat file untuk digunakan dalam proses pembayaran. Ini adalah

  1. index.php – Mengandung formulir dengan parameter pembayaran Paypal dan tombol Beli sekarang.
  2. payment.php – IPN pendengar untuk menerima pemberitahuan pembayaran dan update database pembayaran.
  3. thanks.php – Menunjukkan pesan sukses setelah pembayaran.
  4. cancel.php – Mengakui pengguna jika pembayaran dibatalkan.

Mengirimkan Parameter Pembayaran ke Sandbox Paypal

Formulir ini berisi item_name, item_number, jumlah, mata uang dan lebih banyak parameter dengan tombol Beli sekarang. Kita perlu menyalin kode tombol Paypal dari My Account -> Profile -> My selling tools -> tombol PayPal. Setelah mengklik tombol ini, parameter dikirim ke Sandbox Paypal seperti yang disebutkan dalam bentuk action.

<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>

Pemberitahuan Pembayaran Instan Listener

Dalam contoh ini, kita memiliki payment.php sebagai pendengar IPN untuk menerima notifikasi pembayaran. Paypal menyediakan Contoh Kode IPN listener untuk berbagai bahasa. Kami telah menggunakan paypal_ipn.php dan membuat perubahan untuk mengupdate database Payment.

...
if (strcmp ($res, "VERIFIED") == ) {
	// 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 listener IPN ke Paypal ini masuk ke My Account -> Profile -> My selling tools dan pilih Receive IPN messages (Enabled) dan masukkan path absolut file ini sebagai Notification URL.

Baca Juga :  Membuat, Mengakses dan Menghancurkan Session PHP dan Variabel Cookie

 

 

Get real time updates directly on you device, subscribe now.

5 Comments
  1. firman says

    kalo cara membayar tagihan ke sandbox Paypal gmana kang .maaff mohon pencerahannya

    1. Infokoding says

      masukkan API paypal ke dalam website

  2. budiman says

    Mas itu 4 file phpnya diupload ke hosting kan?

    1. Infokoding says

      iya di upload ke hosting

      1. budiman says

        1. Saya pakai contoh kode ipn yg dari github,
        2. Sudah upload ke hosting,
        3. Set url pemberitahuan di paypal
        4. Tes pakai IPN simulator hasilnya : IPN was sent and the handshake was verified.
        5. Ketika saya cek riwayat pemberitahuan hasilnya tidak ada transaksi?

Leave A Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.