PHP接收并解析微信支付结果通知

支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。微信通知信息为xml格式。

信息格式大致如下:














1


php可使用如下方法接收信息:

$xmlData = file_get_contents('php://input');

解析方法如下:

libxml_disable_entity_loader(true);
$data = json_decode(json_encode(simplexml_load_string($xmlData, 'SimpleXMLElement', LIBXML_NOCDATA)), true);

对于支付结果通知的内容一定要做签名验证,防止数据泄漏导致出现“假通知”,造成资金损失。签名验证方法如下:

ksort($data);
$buff = '';
foreach ($data as $k => $v){
    if($k != 'sign'){
        $buff .= $k . '=' . $v . '&';
    }
}
$stringSignTemp = $buff . 'key=192006250b4c09247ec02edce69f6a2d';//key为证书密钥
$sign = strtoupper(md5($stringSignTemp));
//判断算出的签名和通知信息的签名是否一致
if($sign == $data['sign']){
    //处理完成之后,告诉微信成功结果
    echo '
              
              
          ';
    exit();
}

你可能感兴趣的:(支付对接)