微信 企业付款到个人api 签名问题

发布于 2022-09-06 06:13:57 字数 2703 浏览 34 评论 0

参考文档
https://pay.weixin.qq.com/wik...
目前做到
这一步出问题clipboard.png

我按照官方给的步奏

clipboard.png
这个是我的生成签名的代码实现

$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_;
}

然后在线签名验证 结果一致
clipboard.png
但是到了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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝颜夕 2022-09-13 06:13:57

给你看看我这边可以成功调用带证书接口的部分代码吧。
首先请求参数确定好之后用这些参数去获取签名,然后再把签名放到请求参数里。
图片描述
获取签名需过滤掉空值的参数。
图片描述

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文