<?php
|
/* *
|
* 功能:支付宝页面跳转同步通知页面
|
* 版本:2.0
|
* 修改日期:2016-11-01
|
* 说明:
|
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
|
|
*************************页面功能说明*************************
|
* 该页面可在本机电脑测试
|
* 可放入HTML等美化页面的代码、商户业务逻辑程序代码
|
*/
|
require_once("config.php");
|
require_once 'wappay/service/AlipayTradeService.php';
|
|
|
$arr=$_GET;
|
|
$alipaySevice = new AlipayTradeService($config);
|
$result = $alipaySevice->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 "验证失败";
|
}
|
?>
|