微信接口出现调用支付jsapi缺少参数意思是后台返回的package字段错误。
在前台调起支付时,前台向服务器端发起ajax请求,服务器端组装支付参数,然后返回给前台,会报错:支付缺少参数,如下图。
解决方案:
wx.requestPayment中package参数改为package:"prepay_id=wx21**************",不然就会出现调用支付JSAPI缺少参数。
扩展资料:参数规定
1、交易类型trade_type
JSAPI--JSAPI支付(或旁局裤小程序支付)、NATIVE--Native支付、APP--app支付,MWEB--H5支付,不同trade_type决定了调起支付的方式,请根据支付产品正确上传
MICROPAY--付款码支付,付款码支付有单腊段独的支付接口,所以接口不需要上传,该字段在对账单中会出现
2、时间
标准北京时间,时区为东八区;如果商户的系统时间为非标准北京时间。参数值必须根据商户系统所在时区先换算成标准北京时间, 例如商户所在地为0时区的伦敦,当地时间为2014年11月11日0时0分0秒,换算成北京时间为2014年11月11日8时0分0秒。
3、交易金额
交易金额默认为人民币交易,接口中参数支付金额单位为【分】,参数值不能带小数。对账单中的交易金额单位运简为【元】。
外币交易的支付金额精确到币种的最小单位,参数值不能带小数点。
参考资料:微信支付——开发文档
本地小程序开发工具测试请求接口都很正常,使用预览蚂简和真机调试功能在手机上运行请求接口总是失败。
小程序上线后,部分手机请求接口正常,部分手机请求接口失败,将请求接口复制到谷歌浏览器中查询总是成功的。
restful 接口定义为: https://ip:port/bus/:router_name ,其中 router_name 是个变量。实际请求接口为: https://ip:port/bus/993路 ,可以看到:请求地址中的变量 router_name 被 993路 给替换了。问题就出在这里, 请求地址中含有中文 。
在 小程序开发工具 、 谷歌浏览器 和 部分请求成功的手机 上最终发出的请求都会对请求地址中的中文汉字进行编码,如下:
在 开发工具中预览功能 、 开发工具中真机调试功能 和 部分请求不成功的手机 上最终发出的请求并不会对中文进行编码,如下:
上面分析了请求接口失败是因为部分手机没有对请求地址中的中文进行编码,解决方法为利用 js 自带的 api encodeURIComponent() 处理。
有一点需要注意:不能对整个请求地址进行编返郑码,那么的话会对所有除字母闷世裤、数字以外的符号进行编码,会变成下面这样,实际请求中仍然会报错。
在处理 restful 接口过程中,有一步用具体指(如: 991路 )替换请求地址中的变量(如: https://ip:port/bus/:router_name 中的 :router_name ),此时先对 991路 进行编码再替换变量值即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)