<?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