微信支付回调

$xml = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");

$data = xmlToArray($xml);
errorLog('回调数据:',var_export($data,true));
if($data['return_code'] == 'SUCCESS' && $data['result_code'] == 'SUCCESS'){
    if(checkSign($data)) {
        $transaction_id = $data['transaction_id'];      //微信支付订单号
        $out_trade_no   = $data['out_trade_no'];        //商家订单号
        $money   = $data['total_fee'];        //交易金额
        errorLog('微信支付返回结果,微信支付订单号:'.$transaction_id.',商家订单号:'.$out_trade_no,[]);
        
       这里可以做你想做的事情了,比如修改支付状态等各种逻辑
    } else {
        errorLog('微信支付返回结果签名验证失败',$data);
    }
}else{
    errorLog('微信支付返回结果',$data);
}
/*
 * 验证签名
 * @params array $result : 微信支付成功返回的结果数组
 * return bool $ret : 成功true,失败false
 * */
function checkSign(array $data)
{
    $str = '';
    ksort($data);
    foreach ($data as $k => $v) {
        if($k != 'sign') $str .= $k.'='.$v.'&';
    }
    $temp = $str . 'key=你的商户密钥';     //key:商户支付密钥
    $sign = strtoupper(md5($temp));
    return $sign == $data['sign'] ? true : false;
}
function errorLog($msg,$ret)
{
    //$path = dirname(dirname(dirname(dirname(dirname(__FILE__)))));
    //echo $path;die;
    file_put_contents($_SERVER['DOCUMENT_ROOT'].'/log/'.date('Y-m-d').'.log', "[" . date('Y-m-d H:i:s') . "] ".$msg."," .json_encode($ret).PHP_EOL, FILE_APPEND);
}
/*

    * XML转array

    * @params xml $xml : xml 数据

    * return array $data : 转义后的array数组

    */

function xmlToArray($xml)

{

    libxml_disable_entity_loader(true);

    $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);

    $val = json_decode(json_encode($xmlstring),true);

    return $val;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值