记一次微信公众号/h5支付
公众号支付,https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6
第三方H5支付,https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4
具体步骤:
- 用户选择商品,提交订单,生成订单号,这时候金额什么的都会保存在后台算,不需要前端送任何关于钱的字段
- 如果是公众号JSAPI支付,需要将这个订单号传到后台,生成一个签名,返回的字段里面包含公众号id,时间戳,随机字符串,签名方式,签名等
- 使用这些签名的字段调用JSAPI
- 在回调里处理成功和失败
- 如果是h5支付,需要将订单号请求另一个接口,返回一个外部链接mwebUrl,然后拼接一个支付回调地址&redirect_url=,直接使用window.location.href将地址转到外部链接,就会h5就会进行支付了
注意:就算判断了支付成功,回调里也不能直接做成功的处理,到最后有可能由于各种原因失败,这时候一般都是判断支付成功后,跳到另一个页面,然后轮询这个订单的状况,那时候返回支付成功的时候,才算是真的成功,后台会得到各种信息,交易流水,交易时间等
注意:h5支付如果订单超时,一般时间比较短,比使用JSAPI的方法短很多,这时候mwebUrl是不会返回回来的
注意:已经生成订单的交易后台如果对交易金额进行修改,在继续交易用原订单号请求签名的时候,就会报错,走到了catch,不允许交易
注意:调用公众号JSAPI支付的时候,需要在平台里维护支付的url,不然会在调用JSAPI的时候走到失败的回调,各种报错会有错误提示信息显示,根据提示处理即可