微信小程序> 总结一下微信扫码支付、小程序支付的几个坑

总结一下微信扫码支付、小程序支付的几个坑

浏览量:520 时间: 来源:ReiNer_Shir

在调用微信支付接口中遇到各种问题,真不知道是哪个人才写的接口文档,几个简单的接口调了好几天。

 

1、小程序获取code2Session时errcode出错时是会返回错误码,但正常时居然连这个字段都不返回了,说好的正常返回0呢?

 

2、小程序支付的时间戳参数,在调用小程序支付接口时需要后台生成签名,有个timeStamp参数,文档上写的是当前时间,注意这里有个坑,它要的是到秒级别的,如果用java直接System.currentTimeMillis() 是不行的!会提示签名错误!

正确做法是: System.currentTimeMillis() / 1000   

3、小程序支付签名时key是要拼接的,文档上没有写明,示例上是写的了搞得不知道以哪个为准。

4、建议所有签名统一MD5,否则 不知道哪个地方默认了其它签名就会签名通不过

5、小程序支付,也就是交易类型是JSAPI的情况下是要传openId的,另外appId appkey sercrt mechId 等有一个不对应就会报签名失败,这点要注意。

 

6、微信支付demo里代码的一个大坑,其中有一段:

public WXPay(){    if(useSandBox){        signType = MD5;    }else{        signType = HMACSHA256    }} 

注意这里一定要改下,改成统一的MD5  :

public WXPay(final WXPayConfig config, final String notifyUrl, final boolean autoReport, final boolean useSandbox) throws Exception {        this.config = config;        this.notifyUrl = notifyUrl;        this.autoReport = autoReport;        this.useSandbox = useSandbox;        if (useSandbox) {            this.signType = SignType.MD5; // 沙箱环境        }        else {        //TODO 默认用MD5            this.signType = SignType.MD5;        }        this.wxPayRequest = new WXPayRequest(config);    }

 

否则你会发现接收支付成功结果通知的时候怎么老是签名不通过,然后再发现换成HMACSHA256就通过了,看文档里明明写的是默认MD5, 问题就出现在这,demo代码 默认却是HMACSHA256 !

 

7、沙盒模式测试时报金额不正确,这个问题我自己也不记得在哪看到的了,总之微信文档上是没找到,其原因是沙盒模式测试的金额(total_fee)必须是固定的330 !  

另外,沙盒模式下的付款码是不能付款的,不能付款也就是说没法测试接收支付结果通知,只能上正式用1分钱测。

 

最后记一下接收支付结果通知spring mvc 的接收方式代码:

@RequestMapping(value="receiveResult",consumes = {MediaType.TEXT_XML_VALUE},produces = {MediaType.TEXT_XML_VALUE})public String receiveResult(@NotNull @RequestBody String xml){//TODO   ....}

算是比较偷懒了,不怕麻烦的建议用实体类加注解 接收

 

小程序

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎