微信 企业付款到个人api 签名问题
参考文档
https://pay.weixin.qq.com/wik...
目前做到
这一步出问题
我按照官方给的步奏
这个是我的生成签名的代码实现
$dataArr=array();
$dataArr['appid']=APPID;
$dataArr['mch_id']=$mch_id;
$dataArr['device_info']='1000';
$dataArr['body']='test';
$dataArr['nonce_str']=$nonce_str;
$sign=getSign($dataArr);//签名
function getSign($dataArr)
{
foreach ($dataArr as $k => $v)
{
$Parameters[$k] = $v;
}
//签名步骤一:按字典序排序参数
ksort($Parameters);
$String = formatBizQueryParaMap($Parameters, false);//方法如下
//echo '【string1】'.$String.'</br>';
//签名步骤二:在string后加入KEY
$String = $String."&key=XXXXXXX";
//echo "【string2】".$String."</br>";
//签名步骤三:MD5加密
$String = md5($String);
//echo "【string3】 ".$String."</br>";
//签名步骤四:所有字符转为大写
$result_ = strtoupper($String);
//echo "【result】 ".$result_."</br>";
return $result_;
}
然后在线签名验证 结果一致
但是到了RSA加密这一步
返回的xml却是
<xml>
<return_code><![CDATA[FAIL]]></return_code>
<return_msg><![CDATA[SIGN_ERR]]></return_msg>
<err_code><![CDATA[PARAM_ERROR]]></err_code>
<err_code_desc><![CDATA[PARAM_ERR: SIGN_TYPE_INVALID]]></err_code_desc>
</xml>
签名出错。。。
curl请求的函数是
function RAS($mch_id,$nonce_str,$sign){
$data="<xml>
<mch_id>".$mch_id."</mch_id>
<nonce_str>".$nonce_str."</nonce_str>
<sign>".$sign."</sign>
</xml>";\
$url="https://fraud.mch.weixin.qq.com/risk/getpublickey";
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch,CURLOPT_SSLCERT,'./WxpayAPI_php/cert/apiclient_cert.pem');
curl_setopt($ch,CURLOPT_SSLKEY,'./WxpayAPI_php/cert/apiclient_key.pem');
curl_setopt($ch,CURLOPT_CAINFO,'./WxpayAPI_php/cert/rootca.pem');
$content=curl_exec($ch);
curl_close ( $ch );
echo $content
}
不知道哪里出错了.....
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
给你看看我这边可以成功调用带证书接口的部分代码吧。
首先请求参数确定好之后用这些参数去获取签名,然后再把签名放到请求参数里。
获取签名需过滤掉空值的参数。