您的位置:首页 > 移动开发 > 微信开发

php服务端APP微信支付回调验证签名改变订单支付状态

2018-08-04 12:05 585 查看
[code]<?php

//处理微信支付回调

$time = time();

$testxml  = file_get_contents("php://input");  //接收微信发送的支付成功信息

//file_put_contents('D:\webroot\xianyijie\JK\weixin.txt',$testxml);

$result = XMLDataParse($testxml);

file_put_contents("D:\webroot\xianyijie\JK\weixin.txt", json_encode($result)."\r\n", FILE_APPEND); //将信息写入txt文件做支付备份

$sign_return = $result['sign'];

//如果成功返回了

if($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS'){

$key = "商户密钥key";

unset($result['sign']);

$sign = appgetSign($result,$key);

if($sign == $sign_return)    //验证签名
{

//这里是验签成功后的sql操作

//如果操作成功
return "<xml><return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
</xml>";

//如果操作失败
return "fail";

}

}

/*
* 格式化参数格式化成url参数  生成签名sign
*/
function appgetSign($Obj,$appwxpay_key)

{

foreach ($Obj as $k => $v)

{

$Parameters[$k] = $v;

}

//签名步骤一:按字典序排序参数

ksort($Parameters);

$String = formatBizQueryParaMap($Parameters, false);

//echo '【string1】'.$String.'</br>';

//签名步骤二:在string后加入KEY
if($appwxpay_key){
$String = $String."&key=".$appwxpay_key;
}

//echo "【string2】".$String."</br>";

//签名步骤三:MD5加密

$String = md5($String);

//echo "【string3】 ".$String."</br>";

//签名步骤四:所有字符转为大写

$result_ = strtoupper($String);

//echo "【result】 ".$result_."</br>";

return $result_;

}

//xml格式数据解析函数
function XMLDataParse($data){
$xml = simplexml_load_string($data,NULL,LIBXML_NOCDATA);
$array=json_decode(json_encode($xml),true);
return $array;
}

?>

版权声明:本文为司江龙原创文章,未经允许不得转载。https://mp.csdn.net/postedit/81409478

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: