由于在之前的项目中使用到了用支付宝完成订单支付这一功能,因此在此篇文章中对支付宝的整个支付流程以及背后的细节做一个简单的总结。具体接入指南以及开发文档参考蚂蚁金服 扫码支付接入指引

前期准备

整体来说前期准备工作有下面两步:

  1. 创建应用并获取APPID
  2. 配置密钥

其中配置密钥需要交换双方的公钥,在交易过程中会对交易数据进行双方校验。我们知道公钥加密过的内容只有私钥才可以解密,同样,私钥加签过的内容也只有公钥才能验签。商户系统在发起支付时会使用自己的私钥进行加签,由于私钥只有自己持有(因此要妥善保管),支付宝就可以确认支付是由商户系统发起的而非他人;同样支付宝也会使用自己的私钥对支付结果进行加签,这样商户系统使用支付宝的公钥验签后也就能确定该结果是支付宝返回的了。

支付流程

  1. 用户选中购物车的商品,创建一个待支付订单,商户系统生成唯一订单号。
  2. 用户点击支付,商户系统调用支付宝的预下单接口发送订单信息,接口返回一个二维码串。
  3. 商户系统通过二维码串自行生成订单二维码并显示给用户。
  4. 用户扫描二维码并付款。
  5. 支付成功后,支付宝根据预先配置的回调接口将支付结果异步通知给商户系统。
  6. 商户系统收到支付结果,验签确保是支付宝发出后,告知用户支付完成并更新相关数据库表。