www.gusucode.com > Destoon B2B仿淘宝电子商务网站 UTF8 v6.0源码程序 > destoon/api/pay/paypal/receive.inc.php
<?php defined('IN_DESTOON') or exit('Access Denied'); if($PAY[$bank]['keycode'] && isset($_GET['tx'])) {//PDT $tx_token = $_GET['tx']; $auth_token = $PAY[$bank]['keycode']; //形成验证字符串 $req = "cmd=_notify-synch&tx=$tx_token&at=$auth_token"; //将交易流水号及身份标记返回 PayPal 验证 $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('www.paypal.com', 80, $errno, $errstr, 30); #$fp = fsockopen('ssl://www.paypal.com', 443, $errno, $errstr, 30); if(!$fp) { //HTTP ERROR $charge_status = 2; $charge_errcode = 'PayPal HTTP ERROR'; } else { fputs($fp, $header.$req); //获取返回数据 $res = ''; $headerdone = false; while(!feof($fp)) { $line = fgets($fp, 1024); if(strcmp($line, "\r\n") == 0) { //获取头 $headerdone = true; } else if($headerdone){ //获取主体内容 $res .= $line; } } //解析获取内容 $lines = explode("\n", $res); $keyarray = array(); if(strcmp($lines[0], "SUCCESS") == 0) { for($i = 1; $i < count($lines); $i++) { list($key, $val) = explode("=", $lines[$i]); $keyarray[urldecode($key)] = urldecode($val); } //检查交易付款状态 payment_status 是否为 Completed //检查交易流水号 txn_id 是否已经被处理过 //检查接收 EMAIL receiver_email 是否为您的 PayPal 中已经注册的 EMAIL //检查金额 mc_gross 是否正确 //…… //处理此次付款明细 //该付款明细所有变量可参考: //https://www.paypal.com/IntegrationCenter/ic_ipn-pdt-variable-reference.html $item_number = intval($keyarray['item_number']); $r = $db->get_one("SELECT * FROM {$DT_PRE}finance_charge WHERE itemid='$item_number' AND status=0"); if($charge_orderid == $item_number) { $payment_status = $keyarray['payment_status']; $payment_amount = $keyarray['mc_gross']; $payment_currency = $keyarray['mc_currency']; $receiver_email = $keyarray['receiver_email']; if($payment_amount != $charge_money) { $charge_status = 2; $charge_errcode = '充值金额不匹配'; } else if($payment_currency != $PAY[$bank]['currency']) { $charge_status = 2; $charge_errcode = '充值币种不匹配'; } else if($receiver_email != $PAY[$bank]['partnerid']) { $charge_status = 2; $charge_errcode = '收款帐号不匹配'; } else if($payment_status == 'Completed') { $charge_status = 1; } } } else if(strcmp($lines[0], "FAIL") == 0) { //获取付款明细失败,记录并检查 $charge_status = 2; $charge_errcode = '支付失败'; } } fclose($fp); } else { dheader('?action=record'); } ?>