微信支付
无论是公众号
、小程序
还是APP
,流程都是一样的,都是先调用统一下单接口生成预订单号(下单过程的参数需要签名),然后使用预订单号加上规定的参数再次签名
后调用支付。
这里我说一下APP支付时的一个坑:
APP 支付参与签名的字段名为appid,partnerid,prepayid,noncestr,timestamp,package
。其中package为固定值:Sign=WXPay
。
这些参数都是由服务端调用微信接口,并签名后返回给客户端的,所以客户端还有一个sign
参数,值为前面的参数按照签名规则生成的结果,客户端使用这些参数调用微信SDK进行支付。
如果你遇到「你的签名和使用微信官方签名工具生成的签名一样」
,但还是报错的情况,那么你得注意了,可能是你的参数有问题。坑出现了:
客户端的SDK里面timeStamp的S是大写,但是在服务端参与签名的timestamp的S是小写。
所以,你得注意参数的大小写,同时你也得注意参数是否有下划线,在服务端统一下单接口返回的订单号就是prepay_id
,有下划线。
并且还要注意的一个问题是:微信小程序支付里面参与签名的timeStamp
的S
是大写的。