支付流程以及常见问题
支付流程以及常见问题
1. 支付相关工程
bshop == 下单,支付
order == 处理支付操作
admin == 支付配置
2. 主要支付途径:bshop下单充值
主要接口:
/pay/order 支付订单
/pay/charge 充值余额
/pay/check/result 主动检查支付结果
/pay/.*/notify 支付平台通知支付结果
支付的操作都是通过以上接口转发到order微服同名接口处理
3. 现有的支付平台
微信公众号支付,微信小程序支付,汇付支付,汇聚支付,各个支付相关代码都在gm_server_order----pay/service目录下面。
4. 支付相关数据库
Mongo
支付配置: xnn_core_product_2-wx_pay_info
包含微信公众号支付配置(wx),小程序支付配置(mp),汇付支付配置(huifu),
站点使用的支付类型(prior_pay:wx, hf)
Mysql
支付流水:order-tbl_trade_flow_new
订单支付流水:order-tbl_order_pay_flow
4.支付流程(以支付订单举例)
前端调用bshop pay/order接口
⬇️
bshop 调用 order pay/order接口
⬇️
判断请求站点使用的支付配置(汇付/微信/小程序)
⬇️
生成支付流水,请求支付平台预下单
⬇️
将支付平台返回的预下单信息返回前端
⬇️
用户输入密码,前端与微信交互
⬇️
支付完成,前端调用pay/check/result接口(汇付不支持此接口) 微信(汇付)主动推送支付结果
⬇️ ⬇️
pay/check/result接口查询微信 ⬇️
➡️➡️➡️➡️➡️➡️➡️➡️➡️➡️➡️➡️➡️ ⬅️⬅️⬅️⬅️⬅️⬇️
⬇️ ⬇️
支付成功的话改变订单状态(PayService.on_pay_success)
5.最常见问题
(1)支付配置问题
1). appid 与appsecret 不匹配 admin
2). merchant_id 与xxx 不匹配 admin
3). 当前页面url未注册 商户平台
凡是微信返回的请求支付错误问题99.99%是admin的支付配置或者客户公众号配置有问题,后台无需变动
(2)微信推送支付结果延迟或版本迭代导致on_pay_success出现bug,导致已支付的订单还是显示未支付
补救方法:
查询tbl_order_pay_flow.order_no或者tbl_trade_flow_new.trade_no中包含订单号的流水号
拿到trade_no,手动调用pay/check/result接口,GET方法可直接在浏览器请求,具体参数可查看此接口。
(3)由于第2个原因,导致客户支付了多次
没有退款功能,需要客户在公众号后台手动点击退款或者其他冲账充值类的操作。
(4)页面显示GET OPENID FAIL
可以查日志,一般都是appid与appsecret不匹配,或者appsecret不正确导致的,admin那边重新配置