if (empty($order_id) && empty($payment_notice_sn)) { //进入V3 //存储微信的回调 $xml = $GLOBALS['HTTP_RAW_POST_DATA']; $notify->saveData($xml); if ($notify->checkSign() == FALSE) { $notify->setReturnParameter("return_code", "FAIL"); //返回状态码 $notify->setReturnParameter("return_msg", "签名失败"); //返回信息 //$log_->log_result($log_name,"【签名失败】:\n".$xml."\n"); } else { $notify->setReturnParameter("return_code", "SUCCESS"); //设置返回码 //$log_->log_result($log_name,"【支付成功】:\n".$xml."\n"); $info = $notify->xmlToArray($xml); $order_id = intval($info['order_id']); $payment_notice_sn = trim($info['out_trade_no']); if ($order_id == 0) { $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $payment_notice_sn . "'"); $order_id = intval($payment_notice['order_id']); } else { $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where order_id = " . $order_id); } $trade_no = $info['transaction_id']; $out_trade_no = $payment_notice['notice_sn']; require_once APP_ROOT_PATH . "system/libs/cart.php"; $rs = payment_paid($out_trade_no, $trade_no); if ($rs) { $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $trade_no . "' where id = " . $payment_notice['id']); }
$log_ = new Log_(); $log_name = "./notify_url.log"; //log文件路径 $log_->log_result($log_name, "【接收到的notify通知】:\n" . $xml . "\n"); if ($notify->checkSign() == TRUE) { if ($notify->data["return_code"] == "FAIL") { //此处应该更新一下订单状态,商户自行增删操作 $log_->log_result($log_name, "【通信出错】:\n" . $xml . "\n"); } elseif ($notify->data["result_code"] == "FAIL") { //此处应该更新一下订单状态,商户自行增删操作 $log_->log_result($log_name, "【业务出错】:\n" . $xml . "\n"); } else { //此处应该更新一下订单状态,商户自行增删操作 $log_->log_result($log_name, "【支付成功】:\n" . $xml . "\n"); } //商户自行增加处理流程, //例如:更新订单状态 //例如:数据库操作 //例如:推送支付完成信息 $xml = $notify->xmlToArray($xml); // 商户订单号 $out_trade_no = $xml['out_trade_no']; $log_->log_result($log_name, "【订单号】:\n" . $out_trade_no . "\n"); // 判断该笔订单是否在商户网站中已经做过处理 // 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // 如果有做过处理,不执行商户的业务程序 if (!empty($out_trade_no)) { $sql = "update " . DB_PREFIX . "order set pay_status=1 where orderid='" . $out_trade_no . "'"; mysql_query($sql, $conn); } }