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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| <?php
$paypal_url = $config['payment']['paypal_url'];
$parsed_paypal_url = parse_url($paypal_url);
$post_data = http_build_query($_POST)."&cmd=_notify-validate";
if($parsed_paypal_url['scheme'] == "https") { $ssl = "ssl://"; $parsed_paypal_url['port'] = "443"; } else { $parsed_paypal_url['port'] = "80"; }
$fp = @fsockopen($ssl.$parsed_paypal_url['host'], $parsed_paypal_url['port'], $error_number, $error_string, 30);
if (!$fp) { file_put_contents(CACHE_ROOT.'/ipn.txt', $error_number.' - '.$error_string); }else{ fputs($fp, "POST {$parsed_paypal_url['path']} HTTP/1.1\r\n"); fputs($fp, "Host: {$parsed_paypal_url['host']}\r\n"); fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); fputs($fp, "Content-length: ".strlen($post_data)."\r\n"); fputs($fp, "Connection: close\r\n\r\n"); fputs($fp, $post_data . "\r\n\r\n"); while(!feof($fp)) { $info[] = @fgets($fp, 1024); }
fclose($fp);
$info = implode(",", $info);
$item_name = Request::post('item_name'); $item_number = Request::post('item_number'); $payment_status = Request::post('payment_status'); $payment_amount = Request::post('mc_gross'); $payment_currency = Request::post('mc_currency'); $txn_id = Request::post('txn_id'); $receiver_email = Request::post('receiver_email'); $payer_email = Request::post('payer_email'); $invoice_number = Request::post('invoice');
if (preg_match("/VERIFIED/i", $info)) { file_put_contents(CACHE_ROOT.'/ipn.txt', 'Verified');
$table = new Table("payment", $invoice_number, "invoice_number"); $table->status = 'completed'; $table->update_at = time(); $table->renew(); }else{ file_put_contents(CACHE_ROOT.'/ipn.txt', 'Not Verified');
Session::set("payment_status", false); } } ?>
|