1、实体对应关系:
Application(包括appId,秘钥) — OneToMany — PaymentOrder(支付记录实体):(订单系统生成的订单号,订单商品信息,金额,返回订单系统的url,微信、支付宝服务器主动通知商户服务器里指定的url等) — OneToMany — PaymentRecord(支付记录详情):记录支付类型(wepay、alipay),客户端类型(普通浏览器、微信浏览器),客户端ip、通知信息等
2、流程
1、生成订单选择支付类型
2、支付宝:PC端、手机端、扫码;微信:微信公众号支付、扫码支付、H5支付。
客户端版本(Browser-Agent):MicroMessenger(微信浏览器)、AliApp、Mobile或iPad、PC
3、对于微信中
3.1、支付需要用户授权获取openId
通过拦截器拦截微信中的请求来获取openId放入cookie中时效5分钟,openId为空时进行授权,通过code换取网页授权access_token获取openId,
redirect_uri到授权回调设置cookie中openid的值时效5分钟,Redirect到请求页面,完成授权。
3.2、下单之前先检查是否完成交易
MD5方式签名
获取PREPAY_ID,存放在redis缓存中,时效2小时,过期重新下单霍如PREPAY_ID
3.4、H5调起微信支付的内置JS
3.5、定时回调接收通知
3.支付API
原文:https://www.cnblogs.com/soul-wonder/p/10348880.html