check($arr); /* 实际验证过程建议商户添加以下校验。 1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号, 2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额), 3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email) 4、验证app_id是否为该商户本身。 */ if($result) {//验证成功 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 $out_trade_no = $_GET['out_trade_no']; //支付宝交易号 $time = time(); setrawcookie ("PayDoneTime", $time, time() + 600,"/"); $trade_no = $_GET['trade_no']; //查后台订单状态 $key='apivcomcn20170421'; $method = "Order_detail"; $ShopOrdID = $out_trade_no; $arr = array("method"=>$method,"ShopOrdID"=>$ShopOrdID); ksort($arr); $i=0; $stringA=''; foreach($arr as $k=>$v){ $stringA=$stringA.$k.$v; } $stringSignTemp=$stringA.$key; $stringSignTemp=str_replace(" ", "%20", $stringSignTemp); $sign=MD5($stringSignTemp); $content = 'method='.$method.'&ShopOrdID='.$ShopOrdID; $content .= '&Sign='.$sign; $order_url='http://api.v.com.cn/order/?'.$content; $order_url=str_replace(" ", "%20", $order_url); // var_dump($url);exit; $orderinfo=file_get_contents($order_url); $orderinfo=json_decode($orderinfo,true); if(!empty($orderinfo["ProgressE"]) && $orderinfo["ProgressE"] != "0"){ $status = $orderinfo["ProgressE"]; }elseif($orderinfo["ProgressD"] === "0" || $orderinfo["ProgressD"] === "2"){ if($orderinfo["ProgressM"] === "1"){ $status = "已支付"; }elseif($orderinfo["ProgressM"] === "0"){ $status = "未支付"; }elseif($orderinfo["ProgressM"] === "4"){ $status = "已取消"; } }elseif($orderinfo["ProgressD"] === "4"){ $status = "已取消"; }elseif($orderinfo["ProgressD"] === "3"){ $status = "已下发"; } if($status == "未支付"){ $method = "Order_PayNotify"; $transaction_id = $trade_no; $mch_id = $_GET["app_id"]; $total_fee = number_format($_GET["total_amount"],2,'.',''); $ShopOrdID = $out_trade_no; $PayMono = urlencode("支付宝"); $arr = array("method"=>$method,"transaction_id"=>$transaction_id,"mch_id"=>$mch_id,"out_trade_no"=>$out_trade_no,"total_fee"=>$total_fee,"ShopOrdID"=>$ShopOrdID,"PayMono"=>$PayMono); ksort($arr); $i=0; $stringA=''; $key='apivcomcn20170421'; foreach($arr as $k=>$v){ $stringA=$stringA.$k.$v; } $stringSignTemp=$stringA.$key; $stringSignTemp=str_replace(" ", "%20", $stringSignTemp); $sign=MD5($stringSignTemp); $content = 'method='.$method.'&transaction_id='.$transaction_id.'&mch_id='.$mch_id.'&out_trade_no='.$out_trade_no.'&total_fee='.$total_fee.'&ShopOrdID='.$ShopOrdID.'&PayMono='.$PayMono; $content .= '&Sign='.$sign; $order_url='http://api.v.com.cn/order/?'.$content; $order_url=str_replace(" ", "%20", $order_url); $orderinfo=file_get_contents($order_url); $orderinfo=json_decode($orderinfo,true); if($orderinfo["result"]=="1"){ if(!empty($_COOKIE["somecart"]) && $_COOKIE["somecart"]=="1"){ setrawcookie ("somecart", "", time(),"/"); header("Location: /phpmvcomcn/cartlist.php");exit; }else{ header("Location: /phpmvcomcn/CC/orderdetail.php?ShopOrdID=$ShopOrdID");exit; } } }else{ if(!empty($_COOKIE["somecart"]) && $_COOKIE["somecart"]=="1"){ setrawcookie ("somecart", "", time(),"/"); header("Location: /phpmvcomcn/cartlist.php");exit; }else{ header("Location: /phpmvcomcn/CC/orderdetail.php?ShopOrdID=$ShopOrdID");exit; } } }else { //验证失败 echo "验证失败"; } ?>