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

参考文档
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
}

不知道哪里出错了.....
阅读 4.4k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题