瀏覽代碼

提现流程实现

shish 5 年之前
父節點
當前提交
f719c49c11

+ 1 - 0
app-ghs/controllers/CashController.php

@@ -20,6 +20,7 @@ class CashController extends BaseController
     public function actionApply()
     {
         $shop = $this->shop;
+        $shop['shopAdminId'] = $this->shopAdminId;
         $txBalance = $shop['txBalance'] ?? 0.00;
         if ($txBalance <= 0) {
             util::fail('可提现余额不足');

+ 13 - 0
app-hd/controllers/CashController.php

@@ -16,4 +16,17 @@ class CashController extends BaseController
         util::success($list);
     }
 
+    //申请提现 ssh 2021.3.14
+    public function actionApply()
+    {
+        $shop = $this->shop;
+        $shop['shopAdminId'] = $this->shopAdminId;
+        $txBalance = $shop['txBalance'] ?? 0.00;
+        if ($txBalance <= 0) {
+            util::fail('可提现余额不足');
+        }
+        CashClass::addApply($shop);
+        util::complete();
+    }
+
 }

+ 98 - 85
app-pt/controllers/CashController.php

@@ -2,6 +2,8 @@
 
 namespace pt\controllers;
 
+use biz\shop\classes\ShopAdminClass;
+use biz\shop\classes\ShopClass;
 use biz\sj\classes\CashClass;
 use common\components\util;
 use Yii;
@@ -26,91 +28,102 @@ class CashController extends BaseController
     public function actionCheck()
     {
         util::complete();
-//        $get = Yii::$app->request->get();
-//        $id = isset($get['id']) ? $get['id'] : 0;
-//        $cash = CashClass::getById($id, true);
-//        if ($cash['status'] == 2) {
-//            util::fail('已经完成转账,请不要重复请求!');
-//        }
-//        $cashAmount = isset($cash->amount) ? floatval($cash->amount) : 0;
-//        $sjId = isset($cash->sjId) ? $cash->sjId : 0;
-//        $admin = xhAdminToMerchantService::getAdminByMerchantId($sjId);
-//        $time = strtotime(date("Y-m-d"));
-//        $income = xhStatIncomeService::getByIds($sjId, $time);
-//        $amount = isset($income['amount']) ? $income['amount'] : 0;
-//        $merchantExtInfo = xhMerchantExtendService::getByMerchantId($sjId);//取支付宝帐号
-//
-//        $asset = xhMerchantAssetService::getByMerchantId($sjId);
-//
-//        if ($merchantExtInfo['alipayAccount'] == '') {
-//            util::fail('转账接收方的支付宝帐号为空');
-//        }
-//        if ($cashAmount == 0) {
-//            util::fail('转账金额为0');
-//        }
-//        $alipayWap = Yii::getAlias("@vendor/alipayWap");
-//        require_once($alipayWap . '/aop/AopClient.php');
-//        require_once($alipayWap . '/aop/request/AlipayFundTransToaccountTransferRequest.php');
-//        require_once($alipayWap . '/config.php');
-//
-//        $aop = new \AopClient();
-//        $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
-//        $aop->appId = $config['app_id'];
-//        $aop->rsaPrivateKey = $config['merchant_private_key'];
-//        $aop->alipayrsaPublicKey = $config['alipay_public_key'];
-//        $aop->apiVersion = '1.0';
-//        $aop->signType = 'RSA2';
-//        $aop->postCharset = 'UTF-8';
-//        $aop->format = 'json';
-//        $request = new \AlipayFundTransToaccountTransferRequest ();
-//        $request->setBizContent("{" .
-//            "\"out_biz_no\":\"" . $id . "\"," .
-//            "\"payee_type\":\"ALIPAY_LOGONID\"," .
-//            "\"payee_account\":\"" . $merchantExtInfo['alipayAccount'] . "\"," .
-//            "\"amount\":\"" . $cashAmount . "\"," .
-//            "\"payee_real_name\":\"" . $merchantExtInfo['alipayAccountName'] . "\"," .
-//            "\"payer_show_name\":\"厦门中花汇信息科技有限公司\"," .
-//            "\"remark\":\"提现申请\"" .
-//            "  }");
-//        $result = $aop->execute($request);
-//        $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
-//        $resultCode = $result->$responseNode->code;
-//        $returnOrderId = $result->$responseNode->order_id;
-//        if (!empty($resultCode) && $resultCode == 10000) {
-//            xhDrawCashService::updateById($id, ['thirdSerialNumber' => $returnOrderId, 'status' => 1]);
-//            $remainAmount = stringUtil::calcSub($asset['freezeBalance'], $cashAmount);
-//            xhMerchantAssetService::updateByMerchantId($sjId, ['freezeBalance' => $remainAmount]);
-//            /*
-//            $openId = $admin['openId'];
-//            $openMerchant = xhWxOpenService::getMerchant();//取平台绑定的商家
-//            $openMerchantId = $openMerchant['id'];
-//            $allTM = xhTMessageService::getList($openMerchantId);
-//            $shortTempId = 'OPENTM201319876';
-//            if(isset($allTM[$shortTempId])){
-//            $tempId =  $allTM[$shortTempId];
-//            $data = [
-//                "touser" => $openId,
-//                "template_id" => $tempId,
-//                "url" => Yii::$app->params['adminUrl'] . '/draw-cash/list',
-//                "data" => [
-//                    "first" => ["value" => '已经完成结算。', "color" => "#173177"],
-//                    "keyword1" => ["value" => '当天', "color" => "#173177"],
-//                    "keyword2" => ["value" => $amount . '元', "color" => "#173177"],
-//                    "remark" => ["value" => "支付宝收入:{$cashAmount}元,已汇入您的帐户。\n点击查看结算记录", "color" => "#173177"]
-//                ]
-//            ];
-//            wxUtil::sendTaskInform($data, $openMerchant);
-//            }
-//            */
-//            xhCommonService::sendMobileMsg($admin['mobile'], "您申请的提现金额:{$cashAmount}元已经到帐,请注意查收。");
-//            util::complete();
-//        } else {
-//            $msg = $result->$responseNode->msg;
-//            $sub_code = $result->$responseNode->sub_code;
-//            $sub_msg = $result->$responseNode->sub_msg;
-//            Yii::info("转帐失败,原因:code:" . $resultCode . " msg:" . $msg . " sub_code:" . $sub_code . " sub_msg:" . $sub_msg);
-//        }
-//        util::fail('转账失败');
+        $get = Yii::$app->request->get();
+        $id = isset($get['id']) ? $get['id'] : 0;
+        $cash = CashClass::getById($id, true);
+        if ($cash->status == 2) {
+            util::fail('已经完成转账,请不要重复请求!');
+        }
+        $cashAmount = isset($cash->amount) ? floatval($cash->amount) : 0;
+
+        $shopAdminId = $cash->shopAdminId;
+        $shopAdmin = ShopAdminClass::getById($shopAdminId);
+        if (empty($shopAdmin)) {
+            util::fail('没有找到员工');
+        }
+        $cashSn = $cash->orderSn;
+        if (empty($cashSn)) {
+            util::fail('没有找到提现订单号');
+        }
+        $shopId = $cash->shopId;
+        $shop = ShopClass::getById($shopId, true);
+        if (empty($shop)) {
+            util::fail('没有找到门店');
+        }
+        $cashAccount = $shop->cashAccount ?? '';
+        $cashName = $shop->cashName ?? '';
+        if (empty($cashAccount)) {
+            util::fail('支付宝帐号为空');
+        }
+        if (empty($cashName)) {
+            util::fail('支付宝帐号姓名为空');
+        }
+        if ($cashAmount == 0) {
+            util::fail('转账金额为0');
+        }
+        $aliWap = Yii::getAlias("@vendor/alipayWap");
+        require_once($aliWap . '/aop/AopClient.php');
+        require_once($aliWap . '/aop/request/AlipayFundTransToaccountTransferRequest.php');
+
+        $aliPId = '2017041906821571';
+        $aliKey = 'MIIEpAIBAAKCAQEAvbeu6o90L+0AilI+mbhuJJH0lUv7hWQCEC+XUc+cWlC9ulKC3cSVScVLJHpUc09aj6v/iD1p9iVfgMxjeADNVKiQC2RJyRshAjzyTq+2bTcODp619iV2y4qW8UM65VcP7Ide3P0uT5xC2ReW0HpkdHZgm4F+P7mh1VhGt9qOP3hjvoraAHhtGACvsGvy8H69HhSAG+CEmFt7f2tKNWJ8xEUvkfhDvys93PfTk4xMWj048hJE2r38+2mWI/Il5dFQHWXXTVl2x9yi7uhEEW42a+7s9Q3HgqEvZiQ2NI1FTeEAPLFBApiEsNLY/smaszwqqfWGAyTMvtQ6T4K96GcTLQIDAQABAoIBAHwYTj33n9RJfnT73x7F2KXrIsUVcmyKQh88QgqtdmRNNA1QM3HESLJ8bu5pZhwW5/HaW8dOBKWRRKsHBnlUbPrXV4FcFDeLm0fPfd+iZ/2AaZ1+ix962f3BpYIiq7+f9zaMRazfnw9L8x31pByyMktLs12EkoQ0dHsMxxUzzKAOiiPnvCn8Pv+Jb2qej8GXgCjefutCVNMWGsdwJtMVXEbpdmMa48Wvw+0In5ZS/UG39YAreFzgDqI9jWHE1ZhkGmB1+8hKpeIlEeVGAeYVveUgssMORdA/YY8SWHk26KSIFXBrmdKjAcRJ8Q7ZHUmzIqAV+IMV+RD4J5mZHeJgdAECgYEA8J+Hp1M6eYbT4CPLXa//yRP6Xo+qSzrKHaRB1LRAjYhvKpx/TQetYpNCJ5bWpa+Jp0T5R21pzuYaJkPuGlNEHA13b5T3r1l2ltomSEdaShvD5EZ9WtErYV5zpSv7FjjIGkbwa0H3A8Ydnvw5z4A9TZjjHLjC2GtVGJReqHGglMECgYEAydddA4NRPxmXvIjjmLb1Ft1qwHuyv3vvWhi50foGZXNEnBcfP/OkfyBDDpOEu34GZBMXK9ykHBs1l93OEFGXh7AwW0Lp5lARahBEfBZgPjq5yPO8TOJZrb5hVcuvoDdGjxpRh93XDnQDhWS/1IvUcBLcIsTcnVvfrkX4NLxF/W0CgYEAxamG+gD4rBQBwMImsRN+/2MV7M//iEUG+0qPeXeI/7rv9wUP3etMlwl48qSKNxj37xxN2ksa/Acxu/VZhu6XqKO3VUX+IWFQdaNGh2F13iLozIDLQOtKw3WfcjOq0xpZ5pwXq0RI8iSw+IUhyD8EHNZW2qU8CiRBhyt6hsywqQECgYBa8+06FAachI/XqWfF/UvcDdJ5AkS9/L8SvmmdsSkItjSIkfLHAqdxkbwl6Vu6kUOX/PJIFZjuAWTZFl4xBFNgFYj01uZHnnT6cnIp6HteD2CAqTSFAMqgfFWoL6zoaYAmJBnxO4oZPTYI+ilnQcts5VLFaChx0GCvS2BZgy2W0QKBgQDjP2VtRq4aVSLUq2z1KIDI7GJBbOM5KSW1OEj4sfEdViozPh3Ar/FQWiij1oCZF+iJdKkonHoDbDd+Q0ykcpQ+5Gv07iiT8wJYFR/0j8g2kfql7bVQhGSBeBMS5sawKR3CvkfW73WX+CNnf0PklTY0kTyt6WRXDnKSeyxFVwSZ7g==';
+        $aliPublicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsz3m9juAR1xew4DY6c34gvbwNg8pZ92f932tseKs+4+pF0e+jTDiUo/xHImNDi1KXt1B+s3LxY9L/sxEksbavwmhgbz/igN1cAEwS2YM+Gnf0csDrxAPJhoKL5FTwxPEQ/8VSgroU+6GlF3LAx4VHa1qfn5MqRPfLroJcyPDyGfNe9vna2FnO4E/PH+hVbvPUAwX3XrUvJIm4OgY0JE3HYFlu+O7F4Ln6+Sl+Zv/ZE2nZAvNiyAwW5iVKhKXLieExqwd0NdrP28baBqkkIY+tmV7butGjB52iK1UbU0+1uiaPL4xBxRy6d0LZmYlvdVHp0JRUuwxBLChGgOCo/76DQIDAQAB';
+        $config = [
+            //应用ID,您的APP_ID
+            'app_id' => $aliPId,
+            //商户私钥,您的原始格式RSA私钥
+            'merchant_private_key' => $aliKey,
+            //异步通知地址
+            'notify_url' => Yii::$app->params['hdHost'] . "/notice/ali-async",
+            //同步跳转
+            'return_url' => "",
+            //编码格式
+            'charset' => "UTF-8",
+            //签名方式
+            'sign_type' => "RSA2",
+            //支付宝网关
+            'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
+            //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
+            'alipay_public_key' => $aliPublicKey,
+        ];
+
+        $aop = new \AopClient();
+        $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
+        $aop->appId = $config['app_id'];
+        $aop->rsaPrivateKey = $config['merchant_private_key'];
+        $aop->alipayrsaPublicKey = $config['alipay_public_key'];
+        $aop->apiVersion = '1.0';
+        $aop->signType = 'RSA2';
+        $aop->postCharset = 'UTF-8';
+        $aop->format = 'json';
+        $request = new \AlipayFundTransToaccountTransferRequest ();
+        $request->setBizContent("{" .
+            "\"out_biz_no\":\"" . $cashSn . "\"," .
+            "\"payee_type\":\"ALIPAY_LOGONID\"," .
+            "\"payee_account\":\"" . $cashAccount . "\"," .
+            "\"amount\":\"" . $cashAmount . "\"," .
+            "\"payee_real_name\":\"" . $cashName . "\"," .
+            "\"payer_show_name\":\"厦门中花汇信息科技有限公司\"," .
+            "\"remark\":\"提现申请\"" .
+            "  }");
+        $result = $aop->execute($request);
+
+        $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
+        $resultCode = $result->$responseNode->code;
+        $returnOrderId = $result->$responseNode->order_id;
+        if (!empty($resultCode) && $resultCode == 10000) {
+            $cash->thirdOrderSn = $returnOrderId;
+            $cash->status = 2;
+            $cash->save();
+            //您申请的提现金额:{$cashAmount}元已经到帐,请注意查收
+            util::complete();
+        } else {
+            $msg = $result->$responseNode->msg;
+            $sub_code = $result->$responseNode->sub_code;
+            $sub_msg = $result->$responseNode->sub_msg;
+            Yii::info("转帐失败,原因:code:" . $resultCode . " msg:" . $msg . " sub_code:" . $sub_code . " sub_msg:" . $sub_msg);
+        }
+        util::fail('转账失败');
     }
 
 }

+ 10 - 3
biz/sj/classes/CashClass.php

@@ -3,6 +3,7 @@
 namespace biz\sj\classes;
 
 use bizHd\base\classes\BaseClass;
+use common\components\orderSn;
 use common\components\util;
 
 class CashClass extends BaseClass
@@ -22,15 +23,21 @@ class CashClass extends BaseClass
     {
         $sjId = $shop['merchantId'] ?? 0;
         $shopId = $shop['id'];
-        $cash = self::getByCondition(['shopId' => $shopId], true, 'addTime DESC');
-        if (isset($cash->status) && $cash->status == 1) {
-            util::fail('已提交申请,处理中...');
+        $cash = self::getByCondition(['shopId' => $shopId, 'status' => 1], true);
+        if (!empty($cash)) {
+            util::fail('已有提现申请待审核');
         }
+        $shopName = $shop['shopName'] ?? '';
+        $sjName = $shop['merchantName'] ?? '';
         $txBalance = $shop['txBalance'] ?? 0;
+        $orderSn = orderSn::getCashSn();
         $data = [
             'sjId' => $sjId,
+            'orderSn' => $orderSn,
             'shopId' => $shopId,
             'event' => '申请提现',
+            'sjName' => $sjName,
+            'shopName' => $shopName,
             'amount' => $txBalance,
         ];
         self::add($data);

+ 12 - 0
biz/sj/classes/CashSnClass.php

@@ -0,0 +1,12 @@
+<?php
+
+namespace biz\sj\classes;
+
+use bizHd\base\classes\BaseClass;
+
+class CashSnClass extends BaseClass
+{
+
+    public static $baseFile = '\biz\sj\models\CashSn';
+
+}

+ 15 - 0
biz/sj/models/CashSn.php

@@ -0,0 +1,15 @@
+<?php
+
+namespace biz\sj\models;
+
+use biz\base\models\Base;
+
+class CashSn extends Base
+{
+
+    public static function tableName()
+    {
+        return 'xhCashSn';
+    }
+
+}

+ 16 - 0
common/components/orderSn.php

@@ -2,6 +2,7 @@
 
 namespace common\components;
 
+use biz\sj\classes\CashSnClass;
 use bizGhs\order\classes\OrderClass;
 use bizHd\purchase\classes\PurchaseClearSnClass;
 use biz\recharge\classes\RechargeSnClass;
@@ -198,4 +199,19 @@ class orderSn
         return $prefix . $id;
     }
 
+    //获取提现订单号 ssh 2021.5.17
+    public static function getCashSn()
+    {
+        $prefix = 'CH_CS';
+        if (getenv('YII_ENV', 'local') == 'production') {
+            $prefix = 'CH';
+        }
+        $respond = CashSnClass::add(['id' => null]);
+        $id = $respond['id'] ?? 0;
+        if (empty($id)) {
+            util::fail('订单号没有生成');
+        }
+        return $prefix . $id;
+    }
+
 }

+ 9 - 1
sql.sql

@@ -2550,4 +2550,12 @@ ALTER TABLE xhShopYeChange MODIFY `txBalance` DECIMAL(9,2) NOT NULL DEFAULT '0.0
 ALTER TABLE xhCash MODIFY `event` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '说明';
 ALTER TABLE xhCash ADD sjName VARCHAR(100) NOT NULL DEFAULT '' COMMENT '商家名称' AFTER `shopId`;
 ALTER TABLE xhCash ADD shopName VARCHAR(100) NOT NULL DEFAULT '' COMMENT '门店名称' AFTER `sjName`;
-ALTER TABLE xhCash ADD shopAdminId INT NOT NULL DEFAULT 0 COMMENT '申请提现的员工' AFTER `shopId`;
+ALTER TABLE xhCash ADD shopAdminId INT NOT NULL DEFAULT 0 COMMENT '申请提现的员工' AFTER `shopId`;
+ALTER TABLE xhCash ADD cashName VARCHAR(100) NOT NULL DEFAULT '' COMMENT '姓名' AFTER `shopName`;
+ALTER TABLE xhCash ADD cashAccount VARCHAR(100) NOT NULL DEFAULT '' COMMENT '帐号' AFTER `cashName`;
+ALTER TABLE xhCash ADD thirdOrderSn VARCHAR(200) NOT NULL DEFAULT '' COMMENT '第三方流水号' AFTER `cashAccount`;
+CREATE TABLE `xhCashSn` (
+  `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
+  PRIMARY KEY (`id`)
+) ENGINE=INNODB AUTO_INCREMENT=12123500 COMMENT='提现申请订单号';
+ALTER TABLE xhCash ADD orderSn CHAR(30) NOT NULL DEFAULT '' COMMENT '订单编号' AFTER `id`;