Browse Source

善豆抵扣

lizhen_gitee 1 month ago
parent
commit
535c80a4a2
2 changed files with 43 additions and 6 deletions
  1. 6 6
      addons/shopro/controller/Pay.php
  2. 37 0
      addons/shopro/service/pay/PayOper.php

+ 6 - 6
addons/shopro/controller/Pay.php

@@ -32,8 +32,8 @@ class Pay extends Common
         $order_sn = $this->request->post('order_sn');
         $payment = $this->request->post('payment');
         $openid = $this->request->post('openid', '');
-        /*$money = $this->request->post('money', 0);
-        $money = $money > 0 ? $money : 0;*/
+        $bean = $this->request->post('bean', 0); //善豆
+        $bean = $bean > 0 ? $bean : 0;
         $platform = $this->request->post('platform');
 
         list($order, $order_type) = $this->getOrderInstance($order_sn);
@@ -62,15 +62,15 @@ class Pay extends Common
         // pay 实例
         $payOper = new PayOper();
 
-        $money = false;
-        if ($money && $order_type == 'order') {
+
+        if ($bean && $order_type == 'order') {
             // 余额混合支付
-            $order = Db::transaction(function () use ($payOper, $order, $order_type, $money) {
+            $order = Db::transaction(function () use ($payOper, $order, $order_type, $bean) {
                 // 加锁读订单
                 $order = $order->lock(true)->find($order->id);
 
                 // 余额支付
-                $order = $payOper->money($order, $money, $order_type);
+                $order = $payOper->bean($order, $bean, $order_type);
 
                 return $order;
             });

+ 37 - 0
addons/shopro/service/pay/PayOper.php

@@ -111,6 +111,43 @@ class PayOper
         return $this->checkAndPaid($order, $order_type, 'online', 'money');
     }
 
+    /**
+     * 善豆付款
+     *
+     * @param think\Model $order
+     * @param float $bean
+     * @param string $order_type
+     * @return think\Model
+     */
+    public function bean($order, $bean, $order_type = 'order')
+    {
+        // 余额支付金额,传入金额和剩余支付金额最大值
+        $bean = $order->remain_pay_fee > $bean ? $bean : $order->remain_pay_fee;     // 混合支付不能超过订单应支付总金额
+
+        // 扣除用户余额
+        WalletService::change($this->user, 'bean', -$bean, 'order_pay', [
+            'order_id' => $order->id,
+            'order_sn' => $order->order_sn,
+            'order_type' => $order_type,
+        ]);
+
+        model('wallet')
+
+        // 添加支付记录
+        $pay = $this->addPay($order, [
+            'order_type' => $order_type,
+            'pay_type' => 'bean',
+            'pay_fee' => $bean,
+            'real_fee' => $bean,
+            'transaction_id' => null,
+            'payment_json' => [],
+            'status' => PayModel::PAY_STATUS_PAID
+        ]);
+
+        // 余额直接支付成功,更新订单剩余应付款金额,并检测订单状态
+        return $this->checkAndPaid($order, $order_type, 'online', 'bean');
+    }
+
 
 
     /**