Browse Source

一键退款

shish 1 năm trước cách đây
mục cha
commit
326c4b9065

+ 25 - 0
app-ghs/controllers/RefundController.php

@@ -9,6 +9,7 @@ use bizGhs\shop\classes\ShopClass;
 use bizHd\cg\classes\CgRefundClass;
 use bizHd\cg\classes\CgRefundItemClass;
 use bizHd\notice\classes\NoticeClass;
+use bizHd\purchase\classes\PurchaseClass;
 use bizHd\purchase\classes\PurchaseClearClass;
 use common\components\dateUtil;
 use common\components\imgUtil;
@@ -24,6 +25,30 @@ use bizGhs\order\classes\StockWastageOrderClass;
 class RefundController extends BaseController
 {
 
+    //取消的订单退钱,特殊情况的操作:商家取消订单时,客户同时付款成功了,造成的流程冲突,需要退钱 ssh 20250429
+    public function actionRefundMoney()
+    {
+        $get = Yii::$app->request->get();
+        $id = $get['id'] ?? '';
+        $order = OrderClass::getById($id, true);
+        if (empty($order)) {
+            util::fail('没有找到订单');
+        }
+        if ($order->mainId != $this->mainId) {
+            util::fail('不是你的订单');
+        }
+        $shop = $this->shop;
+        $purchaseId = $order->purchaseId ?? 0;
+        $cg = PurchaseClass::getById($purchaseId, true);
+        if (empty($cg)) {
+            util::fail('没有找到订单');
+        }
+        $respond = CgRefundClass::onlyRefundMoney($shop, $cg);
+        $status = $respond['status'];
+        $msg = $respond['msg'];
+        util::success(['status' => $status], $msg);
+    }
+
     //修改金额 ssh 20240412
     public function actionModifyAmount()
     {

+ 36 - 0
biz-hd/cg/classes/CgRefundClass.php

@@ -35,6 +35,42 @@ class CgRefundClass extends BaseClass
     const REFUND_TYPE_MONEY_GOOD = 1; //退款退货
     const REFUND_TYPE_MONEY = 2; // 仅退款
 
+    public static function onlyRefundMoney($ghsShop, $cg)
+    {
+        $refundOrderSn = orderSn::getCgRefundSn();
+        $refundPrice = $cg->actPrice ?? 0;
+        $orderSn = $cg->orderSn ?? '';
+        $transaction_id = $cg->thirdNo ?? '';
+        $refundFee = bcmul($refundPrice, 100);
+        $merchantPrivateKeyPath = Yii::getAlias("@vendor/lakala") . '/production/api_private_key.pem';
+        $lklCertificatePath = Yii::getAlias("@vendor/lakala") . '/production/lkl-apigw-v1.cer';
+        $params = [
+            'appid' => 'OP00002119',
+            'serial_no' => '018b08cfddbd',
+            'merchant_no' => $ghsShop->lklSjNo,
+            'term_no' => $ghsShop->lklScanTermNo,
+            'merchantPrivateKeyPath' => $merchantPrivateKeyPath,
+            'lklCertificatePath' => $lklCertificatePath,
+        ];
+        $laResource = new Lakala($params);
+        $refundReason = '';
+        $aliParams = [
+            'refundSn' => $refundOrderSn,
+            'orderSn' => $orderSn,
+            'refundAmount' => $refundFee,
+            'refundReason' => $refundReason,
+            'thirdNo' => $transaction_id,
+        ];
+        $response = $laResource->refund($aliParams);
+        if (!isset($response['code']) || $response['code'] != 'BBS00000') {
+            $errMsg = $response['msg'] ?? '';
+            return ['status' => 0, 'msg' => $errMsg];
+        } else {
+            return ['status' => 1, 'msg' => '退款成功'];
+        }
+    }
+
+
     //审核通过 ssh 20230811
     public static function passRefund($cgRefund, $cg)
     {