Skip to content

支付流程以及常见问题

支付流程以及常见问题

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那边重新配置