首页 » Ecstore » 微信JSAPI支付时提示调jsapi缺少参数: $key0$

微信JSAPI支付时提示调jsapi缺少参数: $key0$

9506 3

今天突然用户反映用微信公众号支付时返回上面的错误,于是让测试员测试,果然发现用安卓微信版本去进行公众号支付时,100%报这个错误,特么的真是见鬼了,微信支付功能的代码已经1年多没改动过了,莫名其妙啊。

JSAPI的代码交互过程是先通过微信统一下单接口返回预支付prepay_id,然后拿预支付prepay_id去请求支付交易。于是跟踪日志发现当用安卓微信版支付时,在微信统一下单接口就直接返错误spbill_create_ip参数太长,然后么由于报错了没有prepay_id,再去请求交易就返回了标题里写的错误。

spbill_create_ip指的是终端ip,在APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。

可以看出,这里的这个字段仅仅是需要传客户端的IP,那么为什么IOS的微信没有这个问题呢?分别用IOS和安卓的微信发起了交易请求,发现追踪日志的XFF不一样。

shitwechat

上面两条是安卓微信的,第三条是IOS的,于是经过代码处理后,安卓微信版本下提交的spbill_create_ip变成了两个地址,前一个是真实IP,后一个是代理IP,也就导致了上文说的参数太长的错误。解决方法:调整一下ecstore的JSAPI支付代码,将XFF的处理结果只返回第一个IP地址即可。

文章评分2次,平均分3.0

本文原始地址:https://www.tiandiyoyo.com/2016/09/can-not-found-key0-when-wxjsapi/
本站所有文章,除了特别注明外,均为本站原创,转载请注明出处来自www.tiandiyoyo.com

您可能还会对以下文章感兴趣:

评论前先开启评论开关:


3 Comments

  1. 麦葱 :

    两个 IP,是用了 CDN ?

载入分页评论...