微信支付--采坑记(1)

随着互联网的兴起,网上支付已经风靡了各个角落,然而移动支付中比较火的当然属于微信支付了。

今天跟大家分享一下微信开发中所遇到的一些问题。

1.首先在微信下载微信支付的SDK, 最好下载最新的SDK, 在官方的SDK中,已经做好请求的格式,只需要填写相关的配置信息即可

2.申请相关配置信息  一、开通服务号(需认证) 二、开通商户平台

3.配置相关授权地址

      微信支付有几种支付方式:1.公众号支付、2.H5支付 3.扫码支付、4.APP支付、5.刷卡支付

    我主要开发了公众号、H5、扫码支付。 不过大家不用担心,其他支付方式的坑也是大同小异。

  一、公众号支付所需要的前提条件:认证的服务号,因为是在微信浏览器中支付。所以要获取当前微信身份信息的token .

 二、H5支付和扫描支付 只需在商户平台中配置相关的 授权地址即可 ,(注意。在填写授权地址链接跟你访问地址是区分大小写的,新手请绕行哈。。。哈哈)

4. 申请配置完所有的信息之后,我们准备进入开发阶段,在开发之前,我跟大家分享一下我们的业务如何跟微信支付完美对接 ,在开发过程中 ,我们肯定要保存微信支付信息,以及订单信息 。so ,我们在设计数据结构的时候 ,应该考虑到它的扩展性 。

上面这张图是我临时画的微信支付所需要的表结构, 首先我们要有一种系统业务订单表,里面存的 是系统的 商品信息、

中间的订单表是一张中间表,把系统订单跟微信订单 关联起来、 中间表(订单表)中除了两个关联表的ID以外,可以存价格、状态以及交易号 个人推荐的。因为可以提高后面报表查询的速度,再者,这些订单信息创建以后就不会再修改 ,只能删除。

表之间的关系: 系统订单表(1)--》订单表(1)----》第三方支付订单表(多)

5.系统订单与微信订单的冲突。 如果我们的支付方式可以同时支持多种 ,在业务处理的时候就会遇到一个坑,就是同一个系统订单,则需要生成多个微信订单 ,这是为什么呢 。这个坑可能不少新手都掉进去了 ,这个坑个人感觉是微信自己挖的 ,而且巨深。 大家在看开发文档的时候 ,判断同一个订单的条件应该是:商品描述+金额。  如果在同一个支付方式是可行的 ,如果在公众号中创建订单,然后在PC端扫码支付,这时微信会返回 商户订单号重复。 所以同一个订单的条件是 商品描述+金额+支付方式这就是为什么在表结构设计的时候,订单表与微信订单表的关系是1对多了 。

但是这样的设计方案,会有一个bug出现,真是一波未平一波又起哈,当然这个只是一种极端情况,用户可以同时在两个不同的支付方式对同一个系统业务订单进行付款,造成订单重复支付的情况,当然。用户在支付的时候会谨慎,但是这是属于我们系统中的一个bug,所以我们要避免这种情况的发生。

解决方案:支付成功后,判断该系统订单状态。如果支付了则进行退款操作。

6.微信支付成功通知

   系统有一个API是接收用户支付成功后的回调地址,当接收到微信的回调,可以根据返回的支付状态 更新系统的业务状态。

之后再分享沙箱测试!

这个是在微信支付遇到的一些坑,希望我的小小分享能给各位带来一点点的帮助。如果文中有不正确的地方,欢迎指出指教!不胜感激。

一分打赏,给创作添一滴油。

猜你喜欢

转载自blog.csdn.net/u010838163/article/details/82949229