function alipay_link($params) { #支付宝接口配置 $type = $params['T']; $alipay_config['input_charset'] = 'utf-8'; $alipay_config['sign_type'] = "MD5"; $alipay_config['transport'] = $params['ssl'] ? "https" : "http"; $alipay_config['partner'] = $params['partnerID']; $alipay_config['key'] = $params['security_code']; $alipay_config['seller_email'] = $params['seller_email']; $debug = $params["debug"]; #系统变量 $invoiceid = $params['invoiceid']; $description = $params["description"]; $amount = $params['amount']; # Format: ##.## $currency = $params['currency']; # Currency Code $companyname = $params['companyname']; $systemurl = $params['systemurl']; $currency = $params['currency']; $alipay_config['return_url'] = $systemurl . "/modules/gateways/callback/alipay_return.php"; $alipay_config['notify_url'] = $systemurl . "/modules/gateways/callback/alipay_callback.php"; switch ($type) { case "1": $service_name = "create_direct_pay_by_user"; break; case "2": $service_name = "create_partner_trade_by_buyer"; break; case "3": $service_name = "trade_create_by_buyer"; break; default: } //基本参数 $parameter = array("service" => $service_name, "partner" => trim($alipay_config['partner']), "_input_charset" => trim(strtolower($alipay_config['input_charset'])), "return_url" => trim($alipay_config['return_url']), "sign_type" => trim($alipay_config['sign_type']), "notify_url" => trim($alipay_config['notify_url'])); //业务参数 $parameter["subject"] = "{$companyname} 订单[ {$invoiceid} ]"; $parameter["body"] = $description; $parameter["out_trade_no"] = $invoiceid; $parameter["price"] = $amount; $parameter["quantity"] = "1"; $parameter["payment_type"] = "1"; $parameter["seller_email"] = trim($alipay_config['seller_email']); if ($type != "1") { $parameter["logistics_fee"] = "0"; $parameter["logistics_type"] = "EXPRESS"; $parameter["logistics_payment"] = "SELLER_PAY"; } $img = $systemurl . "/modules/gateways/callback/alipay.png"; $alipaySubmit = new AlipaySubmit($alipay_config); $html_text = $alipaySubmit->buildRequestForm($parameter, "get", "确认"); if ($debug) { $msg = "订单: {$invoiceid} 生成支付表单 {$html_text}"; logResult($msg); } $code = $html_text . "</form><a href='#' onclick=\"document.forms['alipaysubmit'].submit();\"><img src='{$img}' alt='点击使用支付宝支付'> </a>"; return $code; }
/** * 针对notify_url验证消息是否是支付宝发出的合法消息 * @return 验证结果 */ function verifyNotify() { if (empty($_POST)) { //判断POST来的数组是否为空 return false; } else { //生成签名结果 $mysign = $this->getMysign($_POST); //获取支付宝远程服务器ATN结果(验证是否是支付宝发来的消息) $responseTxt = 'true'; if (!empty($_POST["notify_id"])) { $responseTxt = $this->getResponse($_POST["notify_id"]); } //写日志记录 $log_text = "responseTxt=" . $responseTxt . "\n notify_url_log:sign=" . $_POST["sign"] . "&mysign=" . $mysign . ","; $log_text = $log_text . createLinkString($_POST); logResult($log_text); //验证 //$responseTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 //mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 if (preg_match("/true\$/i", $responseTxt) && $mysign == $_POST["sign"]) { return true; } else { return false; } } }
/** * 针对notify_url验证消息是否是支付宝发出的合法消息 * @return 验证结果 */ function verifyNotify() { if (empty($_REQUEST)) { //判断POST来的数组是否为空 logResult('支付宝通知$_REQUEST是空的'); return false; } else { //生成签名结果 $isSign = $this->getSignVeryfy($_REQUEST, $_REQUEST["sign"]); //获取支付宝远程服务器ATN结果(验证是否是支付宝发来的消息) $responseTxt = 'false'; if (!empty($_REQUEST["notify_id"])) { $responseTxt = $this->getResponse($_REQUEST["notify_id"]); } //写日志记录 if ($isSign) { $isSignStr = 'true'; } else { $isSignStr = 'false'; } $log_text = "responseTxt=" . $responseTxt . "\n notify_url_log:isSign=" . $isSignStr . ","; $log_text = $log_text . createLinkString($_REQUEST); logResult($log_text); //验证 //$responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 //isSign的结果不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 if (preg_match("/true\$/i", $responseTxt) && $isSign) { return true; } else { return false; } } }
/** * RSA验签 * @param $data 待签名数据 * @param $ali_public_key_path 支付宝的公钥文件路径 * @param $sign 要校对的的签名结果 * return 验证结果 */ function rsaVerify($data, $ali_public_key_path, $sign) { $pubKey = file_get_contents($ali_public_key_path); $res = openssl_get_publickey($pubKey); logResult('rsaVerify:' . $res); $result = (bool) openssl_verify($data, base64_decode($sign), $res); openssl_free_key($res); return $result; }
public function actionConfirmpay() { $alipayNotify = new AlipayNotify($this->alipay_config); $verify_result = $alipayNotify->verifyNotify(); if ($verify_result) { //验证成功 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 logResult("test"); $out_trade_no = $_POST['out_trade_no']; //logResult("out_trade_no: ".$out_trade_no); //支付宝交易号 $trade_no = $_POST['trade_no']; logResult("trade_no: " . $trade_no); //交易状态 $trade_status = $_POST['trade_status']; if ($_POST['trade_status'] == 'TRADE_FINISHED') { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); } else { if ($_POST['trade_status'] == 'TRADE_SUCCESS') { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //付款完成后,支付宝系统发送该交易状态通知 //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); $Order = Order::find()->where(['id' => $out_trade_no])->one(); $Order->status = 1; $Order->tradeno = $trade_no; $Order->update(); } } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— echo "success"; //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } else { //验证失败 echo "fail"; //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); } }
/** * 验证签名 * @param $prestr 需要签名的字符串 * @param $sign 签名结果 * @param $key 私钥 * return 签名结果 */ function md5Verify($prestr, $sign, $key) { logResult("POST:" . json_encode($_POST)); logResult("GET:" . json_encode($_GET)); $prestr = $prestr . $key; $mysgin = md5($prestr); if ($mysgin == $sign) { return true; } else { return false; } }
/** * 验证签名. * * @param $prestr 需要签名的字符串 * @param $sign 签名结果 * @param $key 私钥 * return 签名结果 */ function md5Verify($prestr, $sign, $key) { $prestr = $prestr . $key; $mysgin = md5($prestr); logResult('sign:' . $sign); logResult('mysgin:' . $mysgin); if ($mysgin == $sign) { return true; } else { return false; } }
function verifyNotify() { if (empty($_POST)) { return false; } else { $mysign = $this->getMysign($_POST); $responseTxt = 'true'; if (!empty($_POST["notify_id"])) { $responseTxt = $this->getResponse($_POST["notify_id"]); } $log_text = "responseTxt=" . $responseTxt . "\n notify_url_log:sign=" . $_POST["sign"] . "&mysign=" . $mysign . ","; $log_text = $log_text . createLinkString($_POST); logResult($log_text); if (preg_match("/true\$/i", $responseTxt) && $mysign == $_POST["sign"]) { return true; } else { return false; } } }
public function notify() { $alipay_config = $this->alipay_config; $alipayNotify = new AlipayNotify($alipay_config); $verify_result = $alipayNotify->verifyNotify(); if ($verify_result) { //验证成功—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 $out_trade_no = $_POST['out_trade_no']; //支付宝交易号 $trade_no = $_POST['trade_no']; //交易状态 $trade_status = $_POST['trade_status']; if ($_POST['trade_status'] == 'TRADE_FINISHED') { logResult("这代表单已经处理过了"); } else { if ($_POST['trade_status'] == 'TRADE_SUCCESS') { $jsAPInotify = D('Alipay'); //logResult(serialize($_POST)); $res = $jsAPInotify->alipayNotifyUpO($_POST['out_trade_no']); if ($res) { echo "success"; } logResult('单号:' . $_POST['out_trade_no'] . "--交易成功了。"); } } // echo "success"; //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } else { logResult("这说明验证失败了"); //验证失败 echo "fail"; //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); } }
public function index() { $alipay_config = alipay_config(); require_once "application/third_party/alipay/lib/alipay_notify.class.php"; $alipayNotify = new AlipayNotify($alipay_config); $verify_result = $alipayNotify->verifyNotify(); $result = false; if ($verify_result) { $out_trade_no = $_POST['out_trade_no']; $trade_no = $_POST['trade_no']; $trade_status = $_POST['trade_status']; if ($_POST['trade_status'] == 'TRADE_FINISHED') { $result = $this->Morder->updatePaymentStatus($out_trade_no); if (!$result) { logResult('update payment error:' . $out_trade_no . "\\n"); } logResult($out_trade_no . " " . $trade_no . " " . $trade_status . "\\n"); } else { if ($_POST['trade_status'] == 'TRADE_SUCCESS') { $result = $this->Morder->updatePaymentStatus($out_trade_no); if (!$result) { logResult('update payment error:' . $out_trade_no . "\\n"); } logResult($out_trade_no . " " . $trade_no . " " . $trade_status . "\\n"); } } if ($result) { echo "success"; } else { echo 'fail'; } } else { echo "fail"; logResult("notify fail out_trade_no:" . $_POST['out_trade_no'] . ' trade_no:' . $_POST['trade_no'] . ' trade_status:' . $_POST['trade_status']); //if($_POST['trade_status'] == 'TRADE_SUCCESS') // logPayError(); } }
public function notify_url() { // $this->checkUser(); $alipay_config = $this->alipay_config(); //计算得出通知验证结果 $alipayNotify = new AlipayNotify($alipay_config); $verify_result = $alipayNotify->verifyNotify(); if ($verify_result) { //验证成功 //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 $out_trade_no = $_POST['out_trade_no']; //支付宝交易号 $trade_no = $_POST['trade_no']; //交易状态 $trade_status = $_POST['trade_status']; if ($_POST['trade_status'] == 'WAIT_BUYER_PAY') { //该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 echo "success"; //请不要修改或删除 //调试用,写文本函数记录程序运行情况是否正常 logResult("这里写入想要调试的代码变量值,或其他运行的结果记录1"); } else { if ($_POST['trade_status'] == 'WAIT_SELLER_SEND_GOODS') { //该判断表示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 echo "success"; //请不要修改或删除 //调试用,写文本函数记录程序运行情况是否正常 logResult("这里写入想要调试的代码变量值,或其他运行的结果记录2"); } else { if ($_POST['trade_status'] == 'WAIT_BUYER_CONFIRM_GOODS') { //该判断表示卖家已经发了货,但买家还没有做确认收货的操作 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 echo "success"; //请不要修改或删除 //调试用,写文本函数记录程序运行情况是否正常 logResult("这里写入想要调试的代码变量值,或其他运行的结果记录3"); } else { if ($_POST['trade_status'] == 'TRADE_FINISHED') { //该判断表示买家已经确认收货,这笔交易完成 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 echo "success"; //请不要修改或删除 //调试用,写文本函数记录程序运行情况是否正常 logResult("这里写入想要调试的代码变量值,或其他运行的结果记录4"); } else { //其他状态判断 echo "success"; //调试用,写文本函数记录程序运行情况是否正常 logResult("这里写入想要调试的代码变量值,或其他运行的结果记录5"); } } } } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } else { //验证失败 echo "fail"; //调试用,写文本函数记录程序运行情况是否正常 logResult("这里写入想要调试的代码变量值,或其他运行的结果记录6"); } }
/** * 添加订单 * * @param string $orderType 订单类型 * @param string $paytype 付款类别 * @return html */ public function add_order() { $orderType = $this->common->post('orderType'); $r = new OperationResult(); switch ($orderType) { case OrderType::_VIP: $r = $this->add_upgrade_vip_order(); require APPPATH . 'libraries/alipay/lib/alipay_notify.class.php'; logResult('增加VIP订单时返回状态:' . json_encode($r, JSON_UNESCAPED_UNICODE)); break; case OrderType::_Agent: $r = $this->add_upgrade_agent_order(); break; case OrderType::_VerifyCodes: $r = $this->add_verify_codes_order(); break; } if ($r->status == 1) { $payType = $this->common->post('paytype'); if ($payType == 'huipengpay') { $this->load->library('huipengpay/huipengpayapi', 1, 'huipengpay'); $html = $this->huipengpay->create_huipengpay($r->data, $r->detail, $r->order_price); $html .= '<script>document.forms["alipaysubmit"].submit();</script>'; echo $html; } else { $this->load->library('alipay/alipayapi', 1, 'alipay'); $html = $this->alipay->create_alipay($r->data, $r->detail, $r->order_price); $html .= '<script>document.forms["alipaysubmit"].submit();</script>'; echo $html; } } else { echo json_encode($r, JSON_UNESCAPED_UNICODE); } }
$verify_result = $alipayNotify->verifyReturn(); if ($verify_result) { //验证成功 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 $out_trade_no = $_GET['out_trade_no']; logResult("out_trade_no: " . $out_trade_no); //支付宝交易号 $trade_no = $_GET['trade_no']; logResult("trade_no: " . $trade_no); //交易状态 $trade_status = $_GET['trade_status']; logResult("trade_status: " . $trade_status); if ($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 } else { echo "trade_status=" . $_GET['trade_status']; } echo "验证成功<br />"; //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } else { //验证失败 //如要调试,请看alipay_notify.php页面的verifyReturn函数 echo "验证失败"; }
/** * 针对return_url验证消息是否是支付宝发出的合法消息 * @return 验证结果 */ function verifyReturn() { if (empty($_GET)) { //判断GET来的数组是否为空 return false; } else { //生成签名结果 $isSign = $this->getSignVeryfy($_GET, $_GET["sign"], true); //写日志记录 if ($isSign) { $isSignStr = 'true'; } else { $isSignStr = 'false'; } $log_text = "return_url_log:isSign=" . $isSignStr . ","; $log_text = $log_text . createLinkString($_GET); logResult($log_text); //验证 //$responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 //isSign的结果不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 if ($isSign) { return true; } else { return false; } } }
//建立请求 $alipaySubmit = new AlipaySubmit($alipay_config); $html_text = $alipaySubmit->buildRequestHttp($parameter); //解析XML //注意:该功能PHP5环境及以上支持,需开通curl、SSL等PHP配置环境。建议本地调试时使用PHP开发软件 $doc = new DOMDocument(); $doc->loadXML($html_text); //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //解析XML if (!empty($doc->getElementsByTagName("alipay")->item(0)->nodeValue)) { $alipay = $doc->getElementsByTagName("alipay")->item(0)->nodeValue; // echo $alipay; $trade_no = $doc->getElementsByTagName("trade_no")->item(0)->nodeValue; $out_trade_no = $doc->getElementsByTagName("out_trade_no")->item(0)->nodeValue; $trade_status = $doc->getElementsByTagName("trade_status")->item(0)->nodeValue; logResult("RETURN_URL,START," . date("Y-m-d h:i:sa") . ",CODE:" . $out_trade_no); ini_set("soap.wsdl_cache_enabled", "0"); $client = new SoapClient('http://www.x-mai.com/index.php?r=restful/alipay/do'); $array = array("key" => "2sfwe2232fss23", 'state' => $trade_status, 'trade_no' => $trade_no, 'orderid' => $out_trade_no); $result = $client->Notify($array); if ($result != "success") { logResult($result); } logResult("RETURN_URL,END," . date("Y-m-d h:i:sa") . ",CODE:" . $out_trade_no); } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ?> </body> </html>
//如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); logResult('TRADE_SUCCESS'); logResult('out_trade_no:' . $out_trade_no); $order = order_info(0, $out_trade_no); logResult('order:' . $order); if ($order) { logResult('order_id:' . $order['order_id']); $log_id = insert_pay_log($order['order_id'], $order['order_amount'], PAY_ORDER); logResult('log_id:' . $log_id); order_paid($log_id, 2); } echo "success"; //请不要修改或删除 } else { logResult('TRADE_STATUS:' . $trade_status); } } } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } else { //验证失败 echo "fail"; logResult('验证签名失败'); //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); }
if ($_POST['trade_status'] == 'WAIT_BUYER_CONFIRM_GOODS') { //该判断表示卖家已经发了货,但买家还没有做确认收货的操作 //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”) //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 echo "success"; //请不要修改或删除 //调试用,写文本函数记录程序运行情况是否正常 logResult("未确认收货"); } else { if ($_POST['trade_status'] == 'TRADE_FINISHED') { //该判断表示买家已经确认收货,这笔交易完成 //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”) //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 logResult($sql . $out_trade_no . $db_config["def"]); if ($sOld_trade_status == "1") { $mselect = $db->query("select `usertype` from `" . $db_config[def] . "member` where `uid`='" . $row['uid'] . "'"); $member = mysql_fetch_array($mselect); if ($member['usertype'] == '1') { $table = 'member_statis'; } else { if ($member['usertype'] == '2') { $table = 'company_statis'; $tvalue = ",`all_pay`=`all_pay`+'" . $row["order_price"] . "'"; } } if ($row['type'] == "1" && $row['rating'] && $member['usertype'] != '1') { //购买会员 $select = $db->query("select * from `" . $db_config["def"] . "company_rating` where `id`='" . $row["rating"] . "'"); $comuid = mysql_fetch_array($select);
public function notifyurl() { // echo p(I('post.')); // return ; /* 同理去掉以下两句代码; */ //require_once("alipay.config.php"); //require_once("lib/alipay_notify.class.php"); //这里还是通过C函数来读取配置项,赋值给$alipay_config // logResult(implode(',',I('post.'))."1".$dm_trade_info['trade_status']."!='TRADE_SUCCESS'||".$dm_trade_info['total_fee']."!=".$total_fee); $alipay_config = C('alipay_config'); //计算得出通知验证结果 $alipayNotify = new AlipayNotify($alipay_config); $verify_result = $alipayNotify->verifyNotify(); if ($verify_result) { //验证成功 //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 $out_trade_no = $_POST['out_trade_no']; //商户订单号 $trade_no = $_POST['trade_no']; //支付宝交易号 $trade_status = $_POST['trade_status']; //交易状态 $total_fee = $_POST['total_fee']; //交易金额 $subject = $_POST['subject']; //商品名称 // $notify_id = $_POST['notify_id']; //通知校验ID。 $notify_time = $_POST['notify_time']; //通知的发送时间。格式为yyyy-MM-dd HH:mm:ss。 $buyer_email = $_POST['buyer_email']; //买家支付宝帐号; $parameter = array("WIDout_trade_no" => $out_trade_no, "trade_no" => $trade_no, "total_fee" => $total_fee, "trade_status" => $trade_status, 'WIDsubject' => $subject, "notify_time" => $notify_time, "buyer_email" => $buyer_email); if ($_POST['trade_status'] == 'TRADE_FINISHED') { $_SESSION["trade_number"] = ""; unset($_SESSION["trade_number"]); logResult("1" . $dm_trade_info['trade_status'] . "!='TRADE_SUCCESS'||" . $dm_trade_info['total_fee'] . "!=" . $total_fee); if (!($dm_trade_info = M("dm_trade_info")->where("WIDout_trade_no=" . $out_trade_no)->find())) { //查找交易表失败,无此订单,记录下不正常交易,状态记录为1 $parameter["status"] = 1; M("dm_check_trade")->save($parameter); } else { //查找交易表成功 //查找交易表成功 if ($dm_trade_info["trad_status"] != "TRADE_SUCCESS") { //支付宝异步通知时间作为付款完成时间 $parameter["finish_time"] = $notify_time; if (!M("dm_trade_info")->save($parameter)) { //更新交易表失败,状态记录为2 $parameter["status"] = 2; M("dm_check_trade")->add($parameter); return; } $items_id = M("dm_trade_info")->where("WIDout_trade_no=" . $out_trade_no)->getField("items_id"); if (!M("dm_items")->where("id=" . $items_id)->setInc("gain", $total_fee)) { //更新项目表,状态记录为2 $parameter["status"] = 3; //更新出现错误,状态或者费用不一致 M("dm_check_trade")->add($parameter); return; } //支持数增加 if (!M("dm_items")->where("id=" . $items_id)->setInc("sup")) { //更新项目表,状态记录为2 $parameter["status"] = 4; //更新出现错误,状态或者费用不一致 M("dm_check_trade")->add($parameter); return; } } } //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 //调试用,写文本函数记录程序运行情况是否正常 // logResult("1".$dm_trade_info['trade_status']."!='TRADE_SUCCESS'||".$dm_trade_info['total_fee']."!=".$total_fee); } else { if ($_POST['trade_status'] == 'TRADE_SUCCESS') { // logResult("2".$parameter['trade_status']."!='TRADE_SUCCESS'||".$parameter['total_fee']."!=".$total_fee); $_SESSION["trade_number"] = ""; unset($_SESSION["trade_number"]); if (!($dm_trade_info = M("dm_trade_info")->where("WIDout_trade_no=" . $out_trade_no)->find())) { //查找交易表失败,无此订单,记录下不正常交易 $parameter["status"] = 1; M("dm_check_trade")->add($parameter); } else { //查找交易表成功 if ($dm_trade_info["trad_status"] != "TRADE_SUCCESS") { //支付宝异步通知时间作为付款完成时间 $parameter["finish_time"] = $notify_time; if (!M("dm_trade_info")->save($parameter)) { //更新交易表失败,状态记录为= $parameter["status"] = 2; M("dm_check_trade")->add($parameter); return; } $items_id = M("dm_trade_info")->where("WIDout_trade_no=" . $out_trade_no)->getField("items_id"); if (!M("dm_items")->where("id=" . $items_id)->setInc("gain", $total_fee)) { //更新项目表,状态记录为2 $parameter["status"] = 3; //更新出现错误,状态或者费用不一致 M("dm_check_trade")->add($parameter); return; } //支持数增加 if (!M("dm_items")->where("id=" . $items_id)->setInc("sup")) { //更新项目表,状态记录为2 $parameter["status"] = 4; //更新出现错误,状态或者费用不一致 M("dm_check_trade")->add($parameter); return; } } } //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 //调试用,写文本函数记录程序运行情况是否正常 // logResult("2".$dm_trade_info['trade_status']."!='TRADE_SUCCESS'||".$dm_trade_info['total_fee']."!=".$total_fee); // logResult("update dm_items set gain=gain+".$total_fee." where id=".$items_id); //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— echo "success"; //请不要修改或删除 } else { logResult("3" . $dm_trade_info['trade_status'] . "!='TRADE_SUCCESS'||" . $dm_trade_info['total_fee'] . "!=" . $total_fee); //验证失败 echo "fail"; } } } else { logResult('验证失败' . implode(',', I('post.')) . "1" . $dm_trade_info['trade_status'] . "!='TRADE_SUCCESS'||" . $dm_trade_info['total_fee'] . "!=" . $total_fee); } }
function shouquan() { $ap_path = intval(C('AP_TYPE')) == 1 ? 'ap_jishi' : 'ap_danbao'; require_once "./Trade/{$ap_path}/alipay.config.php"; require_once "./Trade/{$ap_path}/lib/alipay_notify.class.php"; //计算得出通知验证结果 $alipayNotify = new AlipayNotify($alipay_config); $verify_result = $alipayNotify->verifyNotify(); if ($verify_result) { //验证成功 //商户订单号WIDout_trade_no $out_trade_no = $_POST['out_trade_no']; //支付宝交易号 $trade_no = $_POST['trade_no']; //交易状态 $trade_status = $_POST['trade_status']; $total_fee = $_POST['total_fee']; if ($_POST['trade_status'] == 'WAIT_BUYER_PAY') { //该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 M('member_trade')->where("out_trade_no='{$out_trade_no}' or group_trade_no='{$out_trade_no}'")->setField('status', 0); logResult('等待买家付款!'); echo "success"; //请不要修改或删除 } else { if ($_POST['trade_status'] == 'WAIT_SELLER_SEND_GOODS') { //该判断表示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 M('member_trade')->where("out_trade_no='{$out_trade_no}' or group_trade_no='{$out_trade_no}'")->setField('status', 1); logResult('已付款,等待发货!'); echo "success"; //请不要修改或删除 //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); } else { if ($_POST['trade_status'] == 'WAIT_BUYER_CONFIRM_GOODS') { //该判断表示卖家已经发了货,但买家还没有做确认收货的操作 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 M('member_trade')->where("out_trade_no='{$out_trade_no}' or group_trade_no='{$out_trade_no}'")->setField('status', 2); logResult('已发货,等待收货!'); echo "success"; //请不要修改或删除 //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); } else { if ($_POST['trade_status'] == 'TRADE_SUCCESS') { M('member_trade')->where("out_trade_no='{$out_trade_no}' or group_trade_no='{$out_trade_no}'")->setField('status', 3); $trade_type = substr($out_trade_no, 0, 2); if ($trade_type == "CZ") { $arr = explode("-", $out_trade_no); if (count($arr) == 2) { $uid = intval($arr[1]); if ($uid > 0) { M('member')->setInc('money', 'uid=' . $uid, $total_fee); //logResult(M('dami_common_member',null)->getLastSql().'<BR>'); $data['uid'] = $uid; $data['addtime'] = time(); $data['price'] = $total_fee; $data['trade_no'] = $out_trade_no; $data['remark'] = "用户充值"; $data['log_type'] = 0; M('money_log')->add($data); //logResult(M('money_log')->getLastSql().'<BR>'); } } } else { if ($_POST['refund_status'] == 'WAIT_SELLER_AGREE') { M('member_trade')->where("out_trade_no='{$out_trade_no}' or group_trade_no='{$out_trade_no}'")->setField('status', 7); } else { if ($_POST['refund_status'] == 'WAIT_BUYER_RETURN_GOODS') { M('member_trade')->where("out_trade_no='{$out_trade_no}' or group_trade_no='{$out_trade_no}'")->setField('status', 8); } else { if ($_POST['refund_status'] == 'REFUND_SUCCESS') { M('member_trade')->where("out_trade_no='{$out_trade_no}' or group_trade_no='{$out_trade_no}'")->setField('status', 9); } else { if ($_POST['trade_status'] == 'TRADE_CLOSED') { M('member_trade')->where("out_trade_no='{$out_trade_no}' or group_trade_no='{$out_trade_no}'")->setField('status', 10); } else { logResult($out_trade_no . '<BR>'); } } } } } //该判断表示买家已经确认收货,这笔交易完成 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 logResult('交易完成!'); echo "success"; //请不要修改或删除 //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); } else { //其他状态判断 logResult('其他状态!'); echo "success"; //调试用,写文本函数记录程序运行情况是否正常 //logResult ("这里写入想要调试的代码变量值,或其他运行的结果记录"); } } } } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } else { //验证失败 logResult('验证失败<BR>'); echo "fail"; //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); } }
* * QQ Group: 329673575 * BBS: bbs.ecmobile.cn * Fax: +86-10-6561-5510 * Mail: info@geek-zoo.com */ require EC_PATH . '/includes/init.php'; include_once EC_PATH . '/includes/lib_order.php'; $name = _POST('name'); $password = _POST('password'); function logResult($word = '') { $fp = fopen("log.txt", "a"); flock($fp, LOCK_EX); fwrite($fp, "执行日期:" . strftime("%Y%m%d%H%M%S", time()) . "\n" . $word . "\n"); flock($fp, LOCK_UN); fclose($fp); } logResult('************login begin*****************'); logResult(var_export($_COOKIE, true)); logResult(var_export($_POST, true)); if (!$user->login($name, $password)) { GZ_Api::outPut(6); } $user_info = GZ_user_info($_SESSION['user_id']); $out = array('session' => array('sid' => SESS_ID . $GLOBALS['sess']->gen_session_key(SESS_ID), 'uid' => $_SESSION['user_id']), 'user' => $user_info); update_user_info(); recalculate_price(); logResult(var_export($out, true)); logResult('*************login end****************'); GZ_Api::outPut($out);
$anti_phishing_key = ""; //若要使用请调用类文件submit中的query_timestamp函数 //客户端的IP地址 $exter_invoke_ip = ""; //非局域网的外网IP地址,如:221.0.0.1 /************************************************************/ //构造要请求的参数数组,无需改动 $parameter = array("service" => "create_direct_pay_by_user", "partner" => trim($alipay_config['partner']), "payment_type" => $payment_type, "notify_url" => $notify_url, "return_url" => $return_url, "seller_email" => $seller_email, "out_trade_no" => $out_trade_no, "subject" => $subject, "total_fee" => $total_fee, "body" => $body, "show_url" => $show_url, "anti_phishing_key" => $anti_phishing_key, "exter_invoke_ip" => $exter_invoke_ip, "_input_charset" => trim(strtolower($alipay_config['input_charset']))); //exit(json_encode($parameter)); //建立请求 $alipaySubmit = new AlipaySubmit($alipay_config); $html_text = $alipaySubmit->buildRequestForm($parameter, "get", "确认"); if (empty($html_text)) { logResult("创建订单失败."); } else { logResult("创建订单成功." . $out_trade_no); pdo_insert("uni_payorder", array("orderid" => $order_no, "money" => doubleval($_POST['recharge_number']), "order_time" => TIMESTAMP, "uid" => $_W['uid'], "credittype" => $_POST["recharge_type"], "pay_type" => 1)); if (pdo_insertid() > 0) { //die(json_encode(array("code"=>1,"message"=>"创建订单成功.","url"=>$order_url))); //message("正在使用百付宝支付,马上跳转到支付页面,请稍后....",$order_url); echo $html_text; exit; } } } } $settings = get_settings(); $service = explode("|", $settings["service_qqs"]); $qqs = array(); foreach ($service as $ser) { list($name, $qq) = explode("-", $ser);
$alipayNotify = new AlipayNotify($alipay_config); $verify_result = $alipayNotify->verifyNotify(); if ($verify_result) { //验证成功 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 $out_trade_no = $_POST['out_trade_no']; $ordersn = $out_trade_no; //支付宝交易号 $trade_no = $_POST['trade_no']; //交易状态 $trade_status = $_POST['trade_status']; logResult($trade_status); if ($_POST['trade_status'] == 'WAIT_BUYER_PAY') { //该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 echo "success"; //请不要修改或删除 //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); } else { if ($_POST['trade_status'] == 'WAIT_SELLER_SEND_GOODS') { //该判断表示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序
//如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); //修改订单状态 $order_sn = $_POST['out_trade_no']; $pay_time = strtotime($_POST['gmt_payment']); $sql = "SELECT order_amount,order_sn,order_id,order_status FROM " . ORDERINFO . " WHERE order_sn = '" . $order_sn . "'"; $order = $db->selectinfo($sql); $order_amount = floatval($order['order_amount']); //单金额是否和付款金额相等 logResult($_POST["forex_total_fee"] . "==" . $order_amount . "\n"); if (empty($order['order_status']) && $_POST["forex_total_fee"] == $order_amount) { $sql = " order_status = '1',realpay = '" . $payment_amount . "',pay_time = '" . $pay_time . "' "; logResult("notify.url:" . $sql . "\n"); } else { $sql = " realpay = '" . $payment_amount . "' "; } $db->update(ORDERINFO, $sql, " order_sn = '" . $order_sn . "'"); } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— echo "success"; //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } else { //验证失败 echo "fail"; //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); }
logResult('orderNumber:' . $orderNumber); $order = order_info(0, $orderNumber); if ($order) { logResult('order_id:' . $order['order_id']); $log_id = insert_pay_log($order['order_id'], $order['order_amount'], PAY_ORDER); logResult('log_id:' . $log_id); order_paid($log_id, 2); } } else { logResult("交易处理失败"); logResult(var_export($_POST, true)); } echo "success"; } else { // 服务器签名验证失败 logResult("服务器签名验证失败"); echo "fail"; } /** * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库) * 注意:服务器需要开通fopen配置 * @param $word 要写入日志里的文本内容 默认值:空值 */ function logResult($word = '') { $fp = fopen("log.txt", "a"); flock($fp, LOCK_EX); fwrite($fp, "执行日期:" . strftime("%Y%m%d%H%M%S", time()) . "\n" . $word . "\n"); flock($fp, LOCK_UN); fclose($fp); }
logTransaction($GATEWAY["name"], $_POST, "Successful-A"); } elseif ($status == 'WAIT_BUYER_CONFIRM_GOODS') { //已付款,已发货,等确认收货=>判断是否入帐 if ($debug) { logResult("订单 {$invoiceid} 等待收货."); } if (!$need_confirm) { $invoiceid = checkCbInvoiceID($invoiceid, $GATEWAY["name"]); # Checks invoice ID is a valid invoice number or ends processing checkCbTransID($transid); addInvoicePayment($invoiceid, $transid, $amount, $fee, $gatewaymodule); logTransaction($GATEWAY["name"], $_POST, "Successful-B"); if ($debug) { logResult("订单 {$invoiceid} 直接入帐."); } } } elseif ($status == 'WAIT_SELLER_SEND_GOODS') { //已付款.未发货 => 自动发货+判断是否入帐 if ($debug) { logResult("订单 {$invoiceid} 已收款.准备发货"); } if ($auto_send) { $parameter = array("service" => "send_goods_confirm_by_platform", "partner" => $GATEWAY['partnerID'], "_input_charset" => trim(strtolower($alipay_config['input_charset'])), "trade_no" => $transid, "logistics_name" => "AUTO_WHMCS", "invoice_no" => $invoiceid, "transport_type" => "EXPRESS"); //自动发货 $alipaySubmit = new AlipaySubmit($alipay_config); $html_text = $alipaySubmit->buildRequestHttp($parameter); if ($debug) { logResult("订单 {$invoiceid} 发货信息:" . $html_text); } } }
<?php require_once "lib/alipay_core.function.php"; $root = str_replace('/Application/Recharge/Lib/Alipay/notify_url.php', '', $_SERVER['PHP_SELF']); $url = 'http://' . $_SERVER['HTTP_HOST'] . $root . '/index.php?s=/recharge/ali/notify'; //logResult($url); $data = http_build_query($_POST); ini_set('max_execution_time', '0'); $ch = curl_init(); $header = array('Content-Type: application/x-www-form-urlencoded; charset=' . strtoupper('utf-8') . '', 'Content-Length: ' . strlen($data)); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $cookieJar = null; // 带cookie请求服务器 curl_setopt($ch, CURLOPT_COOKIEFILE, ''); // 保存服务器发送的cookie $cookieJar = tempnam('tmp', 'cookie'); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieJar); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $return_content = curl_exec($ch); $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); logResult($return_content); if ($return_content == 'error') { echo "fail"; } echo "success"; //请不要修改或删除
//计算得出通知验证结果 $alipayNotify = new AlipayNotify($alipay_config); $verify_result = $alipayNotify->verifyNotify(); if ($verify_result) { //验证成功 error_log(date('Y-m-d H:i:s') . ' GET : ' . json_encode($_GET), 3, './logs/notify.log'); error_log(date('Y-m-d H:i:s') . ' POST : ' . json_encode($_POST), 3, './logs/notify.log'); if ($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS') { $query_string = http_build_query($_POST); $url = "http://wechat.vtshow.top/home/pay/success?" . $query_string; $res = file_get_contents($url); error_log(date('Y-m-d H:i:s') . ' RES : ' . $res, 3, './logs/notify.log'); exit; } else { //echo "trade_status=".$_GET['trade_status']; logResult("trade_status=" . $_GET['trade_status']); } /* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 $out_trade_no = $_POST['out_trade_no']; //支付宝交易号 $trade_no = $_POST['trade_no'];
//调试用,写文本函数记录程序运行情况是否正常 $post = implode(',', $_POST); $get = implode(',', $_GET); logResult($post . "||TRADE_FINISHED||" . $get); } else { if ($_POST['trade_status'] == 'TRADE_SUCCESS') { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的 //如果有做过处理,不执行商户的业务程序 //注意: //付款完成后,支付宝系统发送该交易状态通知 //调试用,写文本函数记录程序运行情况是否正常 // $post = implode(',', $_POST); $post = var_export($_POST, true); logResult($post . "||TRADE_SUCCESS||"); } } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— echo "success"; //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } else { //验证失败 echo "fail"; array('discount' => '0.00', 'payment_type' => '1', 'subject' => 'test商品123', 'trade_no' => '2016041921001004510296921952', 'buyer_email' => '*****@*****.**', 'gmt_create' => '2016-04-19 10:05:51', 'notify_type' => 'trade_status_sync', 'quantity' => '1', 'out_trade_no' => 'test20160419100540', 'seller_id' => '2088221673043240', 'notify_time' => '2016-04-19 10:05:56', 'body' => '即时到账测试', 'trade_status' => 'TRADE_SUCCESS', 'is_total_fee_adjust' => 'N', 'total_fee' => '0.01', 'gmt_payment' => '2016-04-19 10:05:56', 'seller_email' => '*****@*****.**', 'price' => '0.01', 'buyer_id' => '2088602037969510', 'notify_id' => 'f6dc8bd2795b328929d08c18fd96a8bjxq', 'use_coupon' => 'N', 'sign_type' => 'MD5', 'sign' => '2f0fd93cf3c658179de115ad541663bb'); //调试用,写文本函数记录程序运行情况是否正常 $post = implode(',', $_POST); $get = implode(',', $_GET); logResult($post . "||fail||" . $get); }
</table> </td> </tr> </table> </div> </body> </html> <?php if (!$GATEWAY['return']) { exit; } if ($n1) { $parameter = array("service" => "send_goods_confirm_by_platform", "partner" => $GATEWAY['partnerID'], "_input_charset" => trim(strtolower($alipay_config['input_charset'])), "trade_no" => $transid, "logistics_name" => "AUTO_WHMCS", "invoice_no" => $invoiceid, "transport_type" => "EXPRESS"); //自动发货 $alipaySubmit = new AlipaySubmit($alipay_config); $html_text = $alipaySubmit->buildRequestHttp($parameter); if ($debug) { logResult("订单 {$invoiceid} 发货信息:" . $html_text); } } if ($n2) { $invoiceid = checkCbInvoiceID($invoiceid, $GATEWAY["name"]); # Checks invoice ID is a valid invoice number or ends processing checkCbTransID($transid); addInvoicePayment($invoiceid, $transid, $amount, $fee, $gatewaymodule); logTransaction($GATEWAY["name"], $_GET, "Successful-C"); if ($debug) { logResult("订单 {$invoiceid} 直接入帐."); } }
/** * 获取远程服务器ATN结果,验证返回URL * @param $notify_id 通知校验ID * @return 服务器ATN结果 * 验证结果集: * invalid命令参数不对 出现这个错误,请检测返回处理中partner和key是否为空 * true 返回正确信息 * false 请检查防火墙或者是服务器阻止端口问题以及验证时间是否超过一分钟 */ function getResponse($notify_id) { logResult('$notify_id = ' . $notify_id); $transport = strtolower(trim($this->alipay_config['transport'])); $partner = trim($this->alipay_config['partner']); $veryfy_url = ''; if ($transport == 'https') { $veryfy_url = $this->https_verify_url; } else { $veryfy_url = $this->http_verify_url; } logResult('$veryfy_url = ' . $veryfy_url); $veryfy_url = $veryfy_url . "partner=" . $partner . "¬ify_id=" . $notify_id; logResult('$veryfy_url = ' . $veryfy_url); $responseTxt = getHttpResponseGET($veryfy_url, $this->alipay_config['cacert']); return $responseTxt; }