微信支付回调效验签名

举个例子

  微信支付二维码   -》通过参数生成XML 传给微信  返回给你 数据   此时(sign)签名是你定义的 ,  微信效验签名 然后给你二维码

 重点来了

  扫码支付 成功 , 微信给回调地址内传参 此时的(SIGN )签名 是微信 自己生成的 如何判断签名是否被更改截获呢

简单  再拼一遍数据 加上你的KEY MD5 一下  看微信给你的签名 跟你算的签名是否一致即可


//XML 数据获得办法 
 $dataxml = file_get_contents("php://input");


//微信返回的XML 数据 
$dataxml = "


























1





";

//转换成数组
$data = (array)simplexml_load_string($dataxml, 'SimpleXMLElement', LIBXML_NOCDATA);
//效验签名
$signA = "appid=".$data['appid']."&bank_type=".$data['bank_type']."&cash_fee=".$data['cash_fee']."&fee_type=".$data

['fee_type']."&is_subscribe=".$data['is_subscribe']."&mch_id=".$data['mch_id']."&nonce_str=".$data['nonce_str']."&openid=".

$data['openid']."&out_trade_no=".$data['out_trade_no']."&result_code=".$data['result_code']."&return_code=".$data

['return_code']."&time_end=".$data['time_end']."&total_fee=".$data['total_fee']."&trade_type=".$data

['trade_type']."&transaction_id=".$data['transaction_id']."&key=你的微信支付KEY";
                $sign = strtoupper(MD5($signA));
		if($sign!=$data['sign']){
                    //不同就跳出
			exit();
                }


就是这样   瞄!


你可能感兴趣的:(微信相关PHP)