有20天没有更新了,主要原因有二:其一这期间对自己的职业规划做了一些调整;其二生了一场小病。所以大家一定要保重身体,平时得多锻炼锻炼了。
根据大家反馈,大家对 Payment
还是很认同,这让我很开心。五一花了两天时间把招商一网通集成进来了。希望能够帮助到更多的人。
Payment使用文档:https://helei112g.github.io/categories/payment-3/
项目GitHub地址:https://github.com/helei112g/payment
言归正传,这篇拖了很久了,借着五一假期的最后一天,搞定它!先上一个支付的一般流程图。
图片来源:支付宝
异步与同步
在我们完成支付后,要确认用户是否真的支付了这笔钱,以及这笔钱支付的金额是否符合预期。怎么知道这些事情呢?
用户告诉我们?我们肯定不能确认是否真假。比较恰当的方式是,第三方(支付宝、微信、招商一网通等)收到用户付款后,他来告诉我们。所以这里就引出了通知这个概念。
通知的方式又有两种:同步通知,异步通知。同步通知的概念存在于网站支付或者H5支付中,因为只有在浏览器中才可以通过url进行跳转。那么我们应该使用同步通知作为支付成功的依据还是使用异步通知呢?
我的答案是:同步通知不做服务端的更新,可用于客户端的显示,异步收到通知时才做相关的更新处理。原因有三:
- 并不是所有的支付模块都有同步通知这个概念;
- 同步通知的参数在url中,就算采用https协议,也存在更大被篡改的风险;
- 异步通知提供完整的失败重发机制,更值得信耐。
异步通知处理
所以在 Payment 中只针对异步通知到达的数据进行了签名相