几种主流支付方式详解

心已入冬 提交于 2020-03-04 15:26:48

几种主流支付方式详解


1. 微信支付 和 支付宝支付

废话不多说, 下图是微信支付官方的支付流程图:

微信支付的官方Demo就不吐槽了, 但是不可否认, 这个流程图画的还是相当不错的, 非常的详细, 认真弄懂这张图, 那么你对支付的大概流程就已经差不多了解了. 支付宝的支付过程和微信支付的过程大体上是相似的, 完全可以用相同的处理方式来处理.

在我们的项目中, 我们是这么来处理的:

不管是微信支付还是支付宝支付, 我们都向服务器请求一次数据, 参数中标示这次要发起的支付动作是微信支付还是支付宝支付, 服务器得到消息后, 如果是你微信支付, 那么就按照微信支付的流程向微信支付服务器请求数据, 返回给用户端prepay_id, sign等信息, 用户端根据prepay_id和sign等信息调起移动端的微信客户端, 进入支付页面进行支付操作, 支付完成之后跳回我们的用户端, 用户端根据回调信息, 重新向我们自己的服务器请求订单支付状态, 到底是支付成功还是失败; 支付宝支付也是一样的, 调起支付宝客户端之前, 我们需要先向我们自己的服务器请求数据, 如果是支付宝的支付那么久给我们返回支付宝支付的partner, seller, privateKey等信息, 得到结果后, 调起支付宝客户端, 支付成功后, 在回调中请求我们自己的服务器, 判断订单是够支付成功.   

**总结: 说到底, 订单到底是支付成功还是失败, 不能根据应用收到的回调信息来判断, 应该以我们自己服务器端的信息为准. **

微信支付和支付宝支付流程, 对于移动端来说, 可以统一用以下图示的流程来解决:

  1. 用户点击付款, 商户APP向商户服务器发送支付请求;

  2. 商户APP获取支付必须的信息, 如 : prepay_id, sign, seller等信息;

  3. 调起微信或者支付宝, 等待用户校验付款;

  4. 微信APP向微信服务器发起付款的请求;

  5. 商户APP得到微信或者支付宝支付结果的回调;

  6. 商户APP收到回调, 向自己的服务器请求支付成功或者失败的结果;

  7. 得到支付结果后, 向用户展示支付成功或者失败;

    支付是一个安全性要求比较高的操作, 像密钥, 商户ID, 签名等安全性要求比较高的, 并且可能不是一成不变的信息, 最好还是放在服务器端来比较好, 用户端需要的时候就通过加密的接口来从服务器请求.

2. ApplePay

Applepay测试开发心得

3. UnionPay

4. 个人对几种主流支付方式的封装

github: https://github.com/hell03W/WHPay

欢迎关注

5. 正确的支付逻辑

我们把需要的商品金额发给后段,后端比对之后加密返回给我所有的订单信息,包括回调什么的,后端统一管理
然后我们把收到的加密后的信息,发给支付宝,该怎么支付怎么支付,
支付完成之后,支付宝会给移动端和后端分别发送支付信息
然后前端把收到的信息发给后端进行比对
后端比对成功,更改自己订单状态
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!