微信支付场景变态的坑,如何用变态的方法对付

微信支付中,在某个场景下调取过支付,再用其它场景去支付时,会报 “201 商户订单号重复”。这句人话就是,在APP下单,调取过微信支付(一般是由后端系统调取微信统一下单接口创建生成了相关的支付信息给客户端APP),然后取消不支付,再去公众号或小程序中支付时,会提示订单号重复,这是微信对使用场景的限制,在一个场景下提交的订单就行在这个场景下支付,不能再用其它场景支付。这个太坑、太不方便了。微信也不说说为什么限制~~~,竟然有这么变态的坑,也就有我这想出这么变态的法子来对付了,方式如下:

一句话提示:不同场景订单号加个标志,回调时过滤掉。搞定~~~~

比如: 订单号:123456;

APP支付时,订单号合成为:APP123456;

小程序或公众号支付时,订单号合成为:JSAPP123456

NATIVE支付时,订单号合成为:NATIVE123456

回调的方法是一个,不管那种场景,接收到订单号时,统一过滤掉APP、JSAPP、NATIVE重新得到订单123456。再继续处理自已的业务就行了。

 

当前,你也可能问,不同场景下同进支付怎么办?又这么变态的问题,还是要用变态的方法:

也就一句话的理论来提示: 支付回调时,若检查到本系统订单已支付,现用本系统的订单生成的各种场景的组合单号去查,然后留一个场景的,其它的退款处理。

 

当前,微信的坑,远不止这些,比如下面网友提到的,也是一个大坑:

如果之前开发过微信的东西,你能看明白微信官方提供的文档,其实实现这两个功能真的并不难!难就难在,明明已经按照官方提供的文档写好程序,为什么就会提示这样那样的错误呢?
百度了一下,很多人都说这是微信官方文档的“坑”!
其实,把问题解决后细想想,其实这些所谓的坑,还是我们自己不够认真仔细!
无论小程序支付还是APP支付,他们都需要先运行统一下单,相信很多做过微信支付的,这一步操作起来挺容易,只要理解了签名,就没什么难的!
然后,我就说下我遇见的“坑”!
统一下单文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1
小程序调起支付文档:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7
APP调起支付文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2
小程序支付
因为我们经历了统一下单,所以心理上也会有着一定的经验感,签名的时候,很有可能直接就把统一下单的签名语句复制过来,对比小程序支付的接口文档,不用的删掉就感觉可以了!可是,仔细看看,哪些参数名是和之前的统一下单的参数名是不一样的,统一下单的参数名是全部小写,但是小程序的是驼峰写法,是有大写字母的!

APP支付
和小程序的坑不一样,APP支付的参数确实都是小写,乍一看和统一下单的参数规则都一样,但是这里要提醒的是短横线,比如统一下单里面随机字符串参数叫nonce_str,但是APP支付里面noncestr!

相关日志

发表于:2020-03-26 12:51:42 at 12:51 分类:代码 发表评论 Tags:,

发表评论

(必填)

(必填)您的电子邮箱不会被公开。

Archives