Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)
Hai! Hai! Hari ini kita akan menggabungkan Paypal dengan PHP untuk memungkinkan pemrosesan pembayaran yang mudah di situs web Anda.
Produk jadi: Pratinjau
Langkah 1 - Membuat Akun PayPal
Untuk tutorial ini Anda akan memerlukan Akun PayPal Premier dan situs web online. Mulailah dengan pergi ke paypal.com dan klik "signup" di bagian atas halaman.



Klik Get Started di bawah Judul Premier; Anda akan dialihkan ke formulir pendaftaran. Harap isi semua informasi yang diperlukan. Ketika akun Anda telah dibuat, login dan lanjutkan ke langkah 2.
Langkah 2 - Aktifkan IPN
Pada langkah ini kita akan mengaktifkan Instant Payment Notification (IPN), jadi ketika login, silakan klik Profile dan kemudian pilih Instant Payment Notification



Sekarang di layar berikutnya Anda akan melihat bahwa IPN diatur ke "off"; klik "Edit" untuk mengubahnya.



Pada awal tutorial ini, saya menyebutkan bahwa Anda akan membutuhkan situs web online. Mengapa? Kita akan meminta PayPal untuk mengirimkan data kepada kita saat pembayaran selesai. PayPal tidak dapat mencapai situs web host lokal kecuali Anda telah mengatur semua pengaturan dengan benar. (Ini termasuk membuka port di router Anda). Jadi, saya akan memasukkan url ke skrip validasi saya misalnya http://www.yourdomain.com/PayPal/ipn.php. PayPal akan mengirimkan pemberitahuan ke server saya, di URL yang telah saya tentukan.



Langkah 3 - Membangun Halaman HTML Sederhana
Oke, sekarang kita membutuhkan halaman html sederhana dan dasar di mana pengunjung Anda dapat membeli akses ke area unduhan Anda.
Saya tidak akan menjelaskan semua HTML karena saya pikir Anda harus tahu dasar-dasar HTML sebelum Anda mulai dengan PHP.
index.php - Halaman HTML sederhana dengan stylesheet.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Nettuts.com | Purchase access to download area</title> <link rel="stylesheet" type="text/css" media="All" href="css/style.css" /> </head> <body> <div id="wrap"> <h3>Purchase Access</h3> <p>Please click the button below to receive login details for the download area. <br /> Already have an account? <a href="login.php">Login</a> here.</p> <!-- Paste your PayPal button code here (That you will get in the next step) --> </div> </body> </html>
css/style.css - Stylesheet sederhana untuk Halaman HTML kita.
body{ background: #2D2D2D; /* Set Website Background Color */ font: 11px 'Verdana'; /* Set Website Font Size & Font Type */ } #wrap{ margin: 0 auto; /* Center Our Content */ width: 500px; /* Set The Width For Our Content */ background: #FFF; /* Set Content Background Color */ padding: 10px; /* Set Padding For Content */ border: 1px solid #000; /* Add A Border Around The Content */ }



Langkah 4 - Membangun Tombol PayPal
Kita perlu membuat tombol pembelian, jadi silakan klik Merchant Services, lalu pilih Website Payments Standard



Anda dapat memilih tiga jenis tombol, Sell single items, Sell multiple items dan, Subscription. Sekarang dalam tutorial ini kita akan membuat satu item. Ketika seseorang membeli item tunggal ini, dalam hal ini akses ke area unduhan. Setelah pembayaran telah divalidasi, email akan dikirim dengan rincian yang ada.



Mari masukkan beberapa informasi untuk tombol pembelian kita; Anda dapat meninggalkan sisanya seperti itu.



Setelah selesai mengisi setiap bagian, buat kodenya. Salin kode ini ke clipboard Anda, lalu tempelkan di dalam index.php - dimana saya menambahkan komentar di halaman html. Harap tinjau langkah 3, jika diperlukan.



Ini harus bekerja dengan sempurna. Pengguna dapat mengklik tombol dan menyelesaikan pembelian mereka.
Langkah 5 - Menulis ipn.php
Pertama, buat ipn.php agar kita bisa mulai menulis. Kita akan menggunakan cuplikan kecil yang saya buat dari cuplikan yang lebih besar yang dapat Anda peroleh dari situs web Paypal.
Harap perhatikan bahwa tidak ada alasan untuk mengingat kode ini! Cuplikan sangat berguna dan menghemat waktu. Saya akan merincinya di bawah.
<?php mysql_connect("localhost", "user", "password") or die(mysql_error()); mysql_select_db("PayPal") or die(mysql_error()); // read the post from PayPal system and add 'cmd' $req = 'cmd=_notify-validate'; foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $req .= "&$key=$value"; } // post back to PayPal system to validate $header = "POST /cgi-bin/webscr HTTP/1.0\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; $header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30); if (!$fp) { // HTTP ERROR } else { fputs ($fp, $header . $req); while (!feof($fp)) { $res = fgets ($fp, 1024); if (strcmp ($res, "VERIFIED") == 0) { // PAYMENT VALIDATED & VERIFIED! } else if (strcmp ($res, "INVALID") == 0) { // PAYMENT INVALID & INVESTIGATE MANUALY! } } fclose ($fp); } ?>
Harap isi kredensial yang benar untuk database Anda sehingga kita dapat memasukkan data di langkah berikutnya.
Data POSTS PayPal ke url yang kita tentukan. Dalam contoh ini, kita hanya memerlukan alamat email dari pembeli, sehingga kita dapat mengiriminya informasi login-nya. Kode di atas ini akan membaca data yang dikirim PayPal dan mengembalikan infonya ke PayPal. Saya telah menambahkan dua komentar di mana kode harus datang jika divalidasi. Selain itu, saya juga menambahkan komentar yang menentukan apa yang harus dilakukan jika tidak divalidasi.
Langkah 6 - Membuat Database
Sekarang kita akan fokus pada apa yang seharusnya terjadi jika pembayaran diverifikasi. Pertama, kita perlu membangun tabel MySQL tempat kita menyimpan informasi pengguna. Hanya yang sederhana dengan kolom id, email dan kata sandi.



Selanjutnya, kita harus memasukkan rincian tabel kita; kita membutuhkan ID dengan pilihan primary key dan seharusnya auto increment; selanjutnya kolom email dan password.



Bagi Anda tidak memiliki waktu untuk memasukkan semua informasi ini, di bawah ini adalah kode Dump MySQL kecil untuk membuat ulang tabelnya.
CREATE TABLE `users` ( `id` int(10) NOT NULL auto_increment, `email` varchar(50) NOT NULL, `password` varchar(32) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Langkah 7 - Pembuatan Akun
Buka ipn.php lagi. Kita akan menulis kode berikut di bawah baris "// PAYMET VALIDATED".
Langkah pertama kita adalah mengambil alamat email pembeli; PayPal mengirimkan semua info ini ke ipn.php.
// PAYMENT VALIDATED & VERIFIED! $email = $_POST['payer_email'];
Kita harus membuat satu variabel terakhir - yang merupakan kata sandi yang akan kita hasilkan menggunakan php.
// PAYMENT VALIDATED & VERIFIED! $email = $_POST['payer_email']; $password = mt_rand(1000, 9999);
Seperti yang Anda lihat, kita menggunakan mt_rand untuk menghasilkan kata sandi acak - dalam hal ini nilai numerik antara 1000 dan 9999. Selanjutnya, kita perlu memasukkan data ini ke dalam database kita. Untuk melakukannya, kita akan menggunakan kueri innsert mysql.
// PAYMENT VALIDATED & VERIFIED! $email = $_POST['payer_email']; $password = mt_rand(1000, 9999); mysql_query("INSERT INTO users (email, password) VALUES('". mysql_escape_string($email) ."', '".md5($password)."' ) ") or die(mysql_error());
Di sini kita memberi tahu skrip kita untuk memasukkan email dan kata sandi ke dalam database kita. Saya telah menambahkan mysql_escape_string untuk memastikan bahwa injeksi mysql tidak dimungkinkan. Saya juga menambahkan fungsi md5 ke kata sandi kita sehingga akan disimpan sebagai hash 32-karakter. Sekarang akun sudah dibuat; mari kita lanjutkan ke langkah berikutnya.
Langkah 8 - Mengirim Email Kredensial Login
Kita perlu menulis beberapa kode yang akan mengirim email informasi login ke pembeli. Untuk mencapai ini, kita akan menggunakan fungsi php mail.
// PAYMENT VALIDATED & VERIFIED! $email = $_POST['payer_email']; $password = mt_rand(1000, 9999); mysql_query("INSERT INTO users (email, password) VALUES('". mysql_escape_string($email) ."', '".md5($password)."' ) ") or die(mysql_error()); $to = $email; $subject = 'Download Area | Login Credentials'; $message = ' Thank you for your purchase Your account information ------------------------- Email: '.$email.' Password: '.$password.' ------------------------- You can now login at http://yourdomain.com/PayPal/'; $headers = 'From:[email protected]' . "\r\n"; mail($to, $subject, $message, $headers);
Mari kita rinci fungsi email ini. Kita menggunakan variabel $email untuk mendapatkan alamat email pengguna dan menetapkannya ke variabel $to.
Variabel $subject adalah judul/subjek yang akan Anda lihat di program email Anda. Setelah ini, kita memiliki pesan kita, yang akan berisi ucapan terima kasih serta informasi akun. Variabel $email dan $password dalam pesan akan berubah menjadi informasi yang benar setelah email dikirim. Kita juga telah menetapkan header kustom. Ketika pengguna menerima email, alamat "from" akan ditampilkan sebagai "[email protected]".
Langkah 9 - Email Pembayaran Tidak Valid
Pembayaran tidak valid mungkin terjadi karena penipuan, tetapi juga karena masalah dengan PayPal; jadi kita ingin memastikan bahwa pelanggan kita mendapatkan apa yang dia bayar.
Jadi kita akan mengirim email ke administrator situs kita, menyuruhnya menghubungi pembeli untuk informasi lebih lanjut. Cukup salin kode email yang kita gunakan sebelumnya dan kemudian buat perubahan yang tercantum di bawah ini.
// PAYMENT INVALID & INVESTIGATE MANUALY! $to = '[email protected]'; $subject = 'Download Area | Invalid Payment'; $message = ' Dear Administrator, A payment has been made but is flagged as INVALID. Please verify the payment manualy and contact the buyer. Buyer Email: '.$email.' '; $headers = 'From:[email protected]' . "\r\n"; mail($to, $subject, $message, $headers);
Kode ini hampir sama seperti di atas, hanya kita membuat beberapa perubahan pada penerima, subjek dan pesan.
Langkah 10 - Login Pengguna
Ini adalah langkah terakhir kita, tempat kita membuat formulir login yang sederhana untuk pembeli kita. Buat file php baru, dan beri nama login.php. Kita akan menggunakan halaman HTML yang sama seperti yang digunakan untuk index.php, hanya saja kita akan membuat beberapa penyesuaian pada konten halaman, dan tentu saja menambahkan sedikit gaya pada formulir login kita.
login.php - Ini adalah halaman tempat pembeli kita dapat login.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Nettuts.com | Login</title> <link rel="stylesheet" type="text/css" media="All" href="css/style.css" /> </head> <body> <div id="wrap"> <h3>Login</h3> <p>Please enter your login credentials to get access to the download area</p> <form method="post" action="" > <fieldset> <label for="email">Email:</label><input type="text" name="email" value="" /> <label for="password">Password:</label><input type="text" name="password" value="" /> <input type="submit" value="Login" /> </fieldset> </form> </div> </body> </html>
Menambahkan ke style.css
label{ display: block; /* Make sure the label is on a single line */ margin: 3px; /* Create some distance away from the input fields */ } input{ padding: 3px; /* Give the text some more space */ border: 1px solid gray; /* Add a border around the input fields */ margin: 3px; /* Create some distance away from the labels */ }



Sekarang setelah kita membuat formulir, kita perlu memeriksa apakah kredensial login sudah benar. Saya membuat beberapa perubahan pada login.php sehingga kita dapat memulai:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Nettuts.com | Login</title> <link rel="stylesheet" type="text/css" media="All" href="css/style.css" /> </head> <body> <div id="wrap"> <?php mysql_connect("localhost", "paypalUser", "test123") or die(mysql_error()); mysql_select_db("PayPal") or die(mysql_error()); if(isset($_POST['email']) && isset($_POST['password'])){ // Verify }else{ ?> <h3>Login</h3> <p>Please enter your login credentials to get access to the download area</p> <form method="post" action="" > <fieldset> <label for="email">Email:</label><input type="text" name="email" value="" /> <label for="password">Password:</label><input type="text" name="password" value="" /> <input type="submit" value="Login" /> </fieldset> </form> <?php } ?> </div> </body> </html>
Kode di atas akan memeriksa apakah email dan kata sandi diposkan. Jika true, kita dapat memverifikasi kredensial. Jika tidak, kita mengembalikan kesalahan. Kode berikutnya yang akan kita tulis akan ditempatkan di bawah "// Verify". Pertama kita perlu mengubah variabel post menjadi variabel lokal.
$email = mysql_escape_string($_POST['email']); $password = md5($_POST['password']);
Saya telah menambahkan fungsi escape untuk mencegah injeksi mysql dan mengubah kata sandi yang diposting menjadi hash md5. Karena kita melakukan ini di databse kita, kita juga harus melakukan hash kata sandi pengguna untuk membandingkan kedua nilai dengan benar. Sekarang saatnya memverifikasi datanya.
$email = mysql_escape_string($_POST['email']); $password = md5($_POST['password']); $gUser = mysql_query("SELECT * FROM users WHERE email='".$email."' AND password='".$password."' LIMIT 1") or die(mysql_error()); $verify = mysql_num_rows($gUser); if($verify > 0){ echo '<h3>Login Complete</h3> <p>Click here to download our program</p>'; }else{ echo '<h3>Login Failed</h3> <p>Sorry your login credentials are incorrect.'; }
Seperti yang Anda lihat, kita menjalankan kueri mysql, dan memilih semua data dari tabel pengguna kita - tetapi hanya baris di mana alamat email pengguna cocok dengan yang satu dari database.
mysql_num_rows memeriksa apakah kecocokan telah ditemukan: 1 = true; 0 = false.
Itu saja!
Dan itulah akhir dari tutorial ini. Saya harap Anda menikmatinya, dan jangan ragu untuk meninggalkan komentar dengan pikiran Anda. Punya tips apa saja yang mungkin bisa membantu?
- Berlangganan Feed RSS NETTUTS untuk tutorial dan artikel pengembangan web harian lainnya.
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weekly