php获取prepay_id时报错,微信支付获取prepay_id返回签名错误,官方demo中的签名方法MD5验证有问题...

引用官方V3微信支付PHP版的demo做的改动,在获取prepay_id发现总是返回签名错误,经与腾讯官方的“微信公众平台支付接口调试工具”对比发现MD5不一样,找到demo中代码有问题部分:

function formatBizQueryParaMap($paraMap, $urlencode)

{

$buff = "";

ksort($paraMap);

foreach ($paraMap as $k => $v)

{

if($urlencode)

{

$v = urlencode($v);

}

//$buff .= strtolower($k) . "=" . $v . "&";

$buff .= $k . "=" . $v . "&";

}

$reqPar;

if (strlen($buff) > 0)

{

$reqPar = substr($buff, 0, strlen($buff)-1);

}

return $reqPar;

}

$buff .= $k . "=" . $v . "&";在用&进行参数的字符串拼接的时候 &notify_url变成了-ify_url,网上查找是&not的编码问题,在传递的时候不影响,只是输出会有问题,请问这里到底会不会影响MD5的生成?如果影响要怎么改呢?

回复内容:

引用官方V3微信支付PHP版的demo做的改动,在获取prepay_id发现总是返回签名错误,经与腾讯官方的“微信公众平台支付接口调试工具”对比发现MD5不一样,找到demo中代码有问题部分:

function formatBizQueryParaMap($paraMap, $urlencode)

{

$buff = "";

ksort($paraMap);

foreach ($paraMap as $k => $v)

{

if($urlencode)

{

$v = urlencode($v);

}

//$buff .= strtolower($k) . "=" . $v . "&";

$buff .= $k . "=" . $v . "&";

}

$reqPar;

if (strlen($buff) > 0)

{

$reqPar = substr($buff, 0, strlen($buff)-1);

}

return $reqPar;

}

$buff .= $k . "=" . $v . "&";在用&进行参数的字符串拼接的时候 &notify_url变成了-ify_url,网上查找是&not的编码问题,在传递的时候不影响,只是输出会有问题,请问这里到底会不会影响MD5的生成?如果影响要怎么改呢?

问题已解决,我说一下主要遇到的情况吧:

1.获取prepay_id返回签名错误是因为我用的商户密匙不对,开始以为是腾讯返回的邮件中那个6位数的,正确的应该是要自己设置一个32位的支付密匙。这里的说的问题在页面上调试的时候显示&not确实会出问题,但是在后台里面没有影响,不用管它。

2.获取prepay_id后,发起支付一度出现system:access_denied,检查各项配置都没错,按照开发文档说的公众号配置的支付目录也没错,后来没辙了,就把所有目录都配到了支付目录中,一下子成功了!腾讯巨坑,文档上说只要配“发起支付请求的目录”,我是把相关支付代码用到的目录都配了才可以。

3.PHP版的DEMO中有几个小BUG,一个是有一处不要转换大小写,还有几个忘记在哪了,大家仔细看下代码吧。

再次表示,腾讯大坑,给的DMEO有BUG不说,文档写的又简略,很多要注意的问题都没写,也没说清楚,还望各路高手慎行,莫掉坑中!

我也遇到了同样的问题, 求解答啊

那个问题不用管,是正常的前台显示 后台php会把&not 转成¬ 关于调用jsapi时可以在state后带入你想要传入的参数,近期会写一个微信商户调起H5支付的开发流程文章,欢迎关注我

$buff .= strtolower($k) . "=" . $v . "&";

这里没有问题 检测下你输出的代码

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值