shopro商城,新增押金缴纳,集成到充值模块
开发流程:1、数据表 fa_shopro_trade_order 将type字段改成enum('recharge', 'pledge')2、前台新建缴纳押金的页面,参考充值的页面复制过来修改一下,将充值提交给后台加一个 recharge_type 参数:充值页面recharge_type:'recharge',缴纳押金页面recharge_type:'pledge'3、前台提交
开发流程:
1、数据表 fa_shopro_trade_order 将type字段改成 enum('recharge', 'pledge')
2、前台新建缴纳押金的页面,参考充值的页面复制过来修改一下,将充值提交给后台加一个 recharge_type 参数:充值页面recharge_type:'recharge',缴纳押金页面recharge_type:'pledge'
3、前台提交充值订单给后台的 recharge 方法:/addons/shopro/controller/trade/Order.php
创建充值订单,type(押金订单类型)是pledge,用来区别充值订单
4、创建充值订单完成后,进入到收银台支付流程,/addons/shopro/service/pay/PayOper.php
public function checkAndPaid($order, $order_type, $pay_mode = 'online') ,这个方法,支付完成后,创建异步队列
5、通过异步队列执行增加充值金额的操作,/addons/shopro/job/trade/OrderPaid.php
我增加了下面一段代码,用来增加用户押金的操作,而不是增加用户余额
if ($order->type == 'pledge') { $ext = $order->ext; $rule = $ext['rule'] ?? []; $money = (isset($rule['money']) && $rule['money'] > 0) ? $rule['money'] : 0; if ($money > 0) { // 增加押金 WalletService::change($user, 'pledge', $money, 'order_recharge', [ 'order_id' => $order->id, 'order_sn' => $order->order_sn, 'order_type' => 'trade_order', ]); } }
6、/addons/shopro/service/Wallet.php
这个文件 change 方法增加用户押金,同时创建资金明细记录