手撕微信H5支付遇到的坑


最近“手撕”一词很火,加上最近在做微信H5支付遇到各种坑,故以此为题,书写微信支付的坑,预祝后来同仁饶坑而行,或者早日出坑。


一、准备工作
1.申请各种appid:本人项目中遇到的场景是在《app端》的《H5》中完成《公众号的微信支付》,加《》的意思是需要你注意了。所以我的appid有3个: 应用的appid即app端的,Web端的 appid即H5用的,及微信公共号用的。 重点:商户号有两个 分别对应了 微信支付商户号和微信公众号支付商户号,具体为啥这样,也许只有微信知道。

2.绑定appid到开放平台账号下,这样就能拿到在不同appid下对应的统一唯一标识unionid。而不同appid 获取到的 openid 有不相同,所以才有了unionid。

3.详细填写开放平台的开发配置,重点:授权回调域,api_key。应用的在开放平台,公众号的在平台。

二、填坑经历:
坑1:由于本人是接的之前项目,之前已经做了微信的授权登录与二次分享。所以我做支付的时候直接就用了,之前通过code换取得用户信息中的opneid。导致微信支付的统一下单失败。分析原因:是因为之前获取openid 是通过 web的appid获取的,这里应该使用公众号appid获取 openid作为统一下单接口中的openid参数。接下来的思路是原来的接口中替换appid和可以获取opnenid。
坑2:上面通过oauth2的方法获取openid,需要在请求中传入wechat_redirect回调的地址,这个地址需要在公众平台的 授权回调域中做配置,但是该配置只能指定到域名。所以重点:本人项目中的回调必须指定到端口,所以该回调可能会出现跨域的问题。所以接下来要做的是解决跨域问题。最佳策略请百度。本人采用的方法是写死静态回调页面,获取code,再通过code换取openid.
坑3:下单成功后,返回给前端下单成功信息,但是前端仍然无法调起微信支付。然后根据前端的返回提示修改错误,指导报签名错误。
解决办法:a.返回前端的签名自己在微信的签名检查工具中做检查

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值