微信支付回调效验签名

举个例子

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

 重点来了

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

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


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


//微信返回的XML 数据 
$dataxml = "<xml>
<appid><![CDATA[wx3c773757024e51a4]]></appid>

<bank_type><![CDATA[CFT]]></bank_type>

<cash_fee><![CDATA[1]]></cash_fee>

<fee_type><![CDATA[CNY]]></fee_type>

<is_subscribe><![CDATA[N]]></is_subscribe>

<mch_id><![CDATA[1250779301]]></mch_id>

<nonce_str><![CDATA[e1393fd835f3b7b6a7b62cbad1183597]]></nonce_str>

<openid><![CDATA[oVGO_vpKdychipUsZTg_Yz15mxQ8]]></openid>

<out_trade_no><![CDATA[20170815021733297831]]></out_trade_no>

<result_code><![CDATA[SUCCESS]]></result_code>

<return_code><![CDATA[SUCCESS]]></return_code>

<sign><![CDATA[FF4A80C82D95CFEA47E79873DD843E18]]></sign>

<time_end><![CDATA[20170815141809]]></time_end>

<total_fee>1</total_fee>
<trade_type>
<![CDATA[NATIVE]]></trade_type>

<transaction_id><![CDATA[4005392001201708156351403039]]></transaction_id>

</xml>";

//转换成数组
$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();
                }


就是这样   瞄!


猜你喜欢

转载自blog.csdn.net/xiao_xiao_meng/article/details/77196665