Paypal entegrasyonu artık çoğu e-ticaret ve işletme sistemleri için vazgeçilmez hale geldi. Geliştiriciler içinse paypal development http://www.developer.paypal.com adresinde. Geliştirme ortamı oldukça basit en önemli kısmı ipn (instant payment notification) uyarlaması.
Paypal Ödeme Entegrasyonu yazarken aldığım notları paylaşayım. Öncelikle paypal yayınına çıkmadan önce test etmeniz gereken kısımlar bunları da Paypal’ın orjinaliyle birebir olan test ortamı Sandbox üzerinde deneyebilirsiniz. Bu yazıda ipn dosyasını paypal sandboz’a nasıl set edeceğiz onu anlatalım.
// cmd satırı okuyalim $req = 'cmd=_notify-validate'; foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $req .= "&$key=$value"; } // gelenleri okumak icin baglanti acalim $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; $header .= "Host: www.sandbox.paypal.com\r\n"; $header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; $fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30); //baglanti kontrolü if (!$fp) { // HTTP ERROR //biseyler yap }else{ //headerı okuyalım fputs ($fp, $header . $req); while (!feof($fp)) { $res = fgets ($fp, 1024); //baglanti ve odeme bilgileri dogru ise if (strcmp ($res, "VERIFIED") == 0) { // degerleri alalim. $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']; $custom = $_POST['custom']; //odeme tamamlandi ise if($payment_status == "Completed"){ //odememiz basarili. hayirli olsun. } } }