Ver Fonte

app 支付组合

shish há 4 anos atrás
pai
commit
417895354c

+ 1 - 1
app-ghs/controllers/BaseController.php

@@ -32,7 +32,7 @@ class BaseController extends PublicController
         //token验证
         $adminId = jwt::getLoginId();
         if (getenv('YII_ENV', 'local') == 'local') {
-            $adminId = 730;
+            //$adminId = 730;
         }
         if (empty($adminId)) {
             util::notLogin();

+ 96 - 119
app-ghs/controllers/OrderController.php

@@ -29,8 +29,8 @@ class OrderController extends BaseController
 
     public $guestAccess = ['create-order', 'order-relate', 'fast-pay'];
 
-    //支付宝付款码支付 shish 2021.4.11
-    public function actionAliCodePay()
+    //微信和支付宝付款码支付 shish 2021.4.11
+    public function actionCodePay()
     {
         ini_set('date.timezone', 'Asia/Shanghai');
         header("Content-type: text/html; charset=utf-8");
@@ -40,6 +40,7 @@ class OrderController extends BaseController
         if (isset($order->status) == false || $order->status != 1) {
             util::fail('不是待付款订单');
         }
+        OrderClass::valid($order, $this->shopId);
         $cgId = $order->purchaseId ?? 0;
         $cg = PurchaseClass::getById($cgId, true);
         $orderSn = $cg->orderSn ?? '';
@@ -48,143 +49,119 @@ class OrderController extends BaseController
         }
         //付款码
         $authCode = (string)$get['auth_code'] ?? '';
+        if (empty($authCode)) {
+            util::fail('支付失败');
+        }
 
+        $wxPrefix = [10, 11, 12, 13, 14, 15];
+        $isWx = false;
+        foreach ($wxPrefix as $wxId) {
+            if (strpos($authCode, $wxId) === 0) {
+                $isWx = true;
+            }
+        }
         $deadline = $cg->deadline;
         $current = date("Y-m-d H:i:s");
         if ((strtotime($deadline) + 20) < strtotime($current)) {
             util::fail('订单已经失效');
         }
-
         $totalFee = $cg->actPrice ?? 0;
 
-        $aliF2F = Yii::getAlias("@vendor/alipayF2F");
-        require_once($aliF2F . '/f2fpay/model/builder/AlipayTradePayContentBuilder.php');
-        require_once($aliF2F . '/f2fpay/service/AlipayTradeService.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 = array(
-            //签名方式,默认为RSA2(RSA2048)
-            'sign_type' => "RSA2",
-            //支付宝公钥
-            'alipay_public_key' => $aliPublicKey,
-            //商户私钥
-            'merchant_private_key' => $aliKey,
-            //编码格式
-            'charset' => "UTF-8",
-            //支付宝网关
-            'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
-            //应用ID
-            'app_id' => $aliPId,
-            //异步通知地址,只有扫码支付预下单可用
-            'notify_url' => Yii::$app->params['hdHost'] . "/notice/ali-callback",
-            //最大查询重试次数
-            'MaxQueryRetry' => "10",
-            //查询间隔
-            'QueryDuration' => "3"
-        );
-
         $outTradeNo = $orderSn;
-
         $subject = '购买商品';
         $totalAmount = $totalFee;
-
         $body = "门店";
 
-        // 支付超时,线下扫码交易定义为5分钟
-        $timeExpress = "5m";
-
-        // 创建请求builder,设置请求参数
-        $barPayRequestBuilder = new \AlipayTradePayContentBuilder();
-        $barPayRequestBuilder->setOutTradeNo($outTradeNo);
-        $barPayRequestBuilder->setTotalAmount($totalAmount);
-        $barPayRequestBuilder->setAuthCode($authCode);
-        $barPayRequestBuilder->setTimeExpress($timeExpress);
-        $barPayRequestBuilder->setSubject($subject);
-        $barPayRequestBuilder->setBody($body);
-
-        // 调用barPay方法获取当面付应答
-        $barPay = new \AlipayTradeService($config);
-        $barPayResult = $barPay->barPay($barPayRequestBuilder);
-
-        switch ($barPayResult->getTradeStatus()) {
-            case "SUCCESS":
-//                if (!empty($barPayResult->getResponse())) {
-//                    print_r($barPayResult->getResponse());
-//                }
-                util::complete('ok');
-                break;
-            case "FAILED":
-//                if (!empty($barPayResult->getResponse())) {
-//                    print_r($barPayResult->getResponse());
-//                }
-                util::fail('支付失败,请查看订单详情');
-                break;
-            case "UNKNOWN":
-//                if (!empty($barPayResult->getResponse())) {
-//                    print_r($barPayResult->getResponse());
-//                }
-                util::fail('支付异常');
-                break;
-            default:
-//                if (!empty($barPayResult->getResponse())) {
-//                    print_r($barPayResult->getResponse());
-//                }
-                util::fail('支付异常');
-                break;
-        }
-    }
+        if ($isWx) {
 
-    //微信付款码支付待完善订单相关信息 linqh 2021.12.29
-    public function actionWxMicroPay()
-    {
-        ini_set('date.timezone', 'Asia/Shanghai');
-        header("Content-type: text/html; charset=utf-8");
-        $get = Yii::$app->request->get();
-        $id = isset($get['id']) ? $get['id'] : 0;
-        $order = OrderClass::getById($id, true);
-        if (isset($order->status) == false || $order->status != 1) {
-            util::fail('不是待付款订单');
-        }
-        $cgId = $order->purchaseId ?? 0;
-        $cg = PurchaseClass::getById($cgId, true);
-        $orderSn = $cg->orderSn ?? '';
-        if (empty($orderSn)) {
-            util::fail('没有找到采购单');
-        }
-        $deadline = $cg->deadline;
-        $current = date("Y-m-d H:i:s");
-        if ((strtotime($deadline) + 20) < strtotime($current)) {
-            util::fail('订单已经失效');
-        }
-        $totalFee = $cg->actPrice ?? 0;
-        $name = '购买商品';
-        //付款码
-        $authCode = (string)$get['auth_code'] ?? '';
-        //获取微信商户号等信息
-        $sjExtend = WxOpenClass::getGhsWxInfo();
+            //获取微信商户号等信息
+            $sjExtend = WxOpenClass::getGhsWxInfo();
 
-        try {
+            try {
 
-            $wx = Yii::getAlias("@vendor/wxPayApi_v3.0.10");
-            require_once($wx . '/lib/WxPay.Api.php');
-            require_once($wx . '/example/WxPay.MicroPay.php');
+                $wx = Yii::getAlias("@vendor/wxPayApi_v3.0.10");
+                require_once($wx . '/lib/WxPay.Api.php');
+                require_once($wx . '/example/WxPay.MicroPay.php');
 
-            $input = new \WxPayMicroPay();
-            $input->SetAuth_code($authCode);
-            $input->SetBody($name);
-            $input->SetTotal_fee($totalFee * 100);
-            $input->SetOut_trade_no($orderSn);
+                $input = new \WxPayMicroPay();
+                $input->SetAuth_code($authCode);
+                $input->SetBody($subject);
+                $input->SetTotal_fee($totalFee * 100);
+                $input->SetOut_trade_no($orderSn);
 
-            $microPay = new \MicroPay();
-            $res = $microPay->pay($input, $sjExtend);
-            if(isset($res["return_code"]) && $res["return_code"] == "SUCCESS"){
+                $microPay = new \MicroPay();
+                $res = $microPay->pay($input, $sjExtend);
+                if (isset($res["return_code"]) && $res["return_code"] == "SUCCESS") {
+                    util::success(['returnStatus'=>'SUCCESS']);
+                }
+            } catch (\Exception $e) {
+                util::fail('支付失败,请查询订单支付结果');
+            }
 
+        } else {
+
+            $aliF2F = Yii::getAlias("@vendor/alipayF2F");
+            require_once($aliF2F . '/f2fpay/model/builder/AlipayTradePayContentBuilder.php');
+            require_once($aliF2F . '/f2fpay/service/AlipayTradeService.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 = array(
+                //签名方式,默认为RSA2(RSA2048)
+                'sign_type' => "RSA2",
+                //支付宝公钥
+                'alipay_public_key' => $aliPublicKey,
+                //商户私钥
+                'merchant_private_key' => $aliKey,
+                //编码格式
+                'charset' => "UTF-8",
+                //支付宝网关
+                'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
+                //应用ID
+                'app_id' => $aliPId,
+                //异步通知地址,只有扫码支付预下单可用
+                'notify_url' => Yii::$app->params['hdHost'] . "/notice/ali-callback",
+                //最大查询重试次数
+                'MaxQueryRetry' => "10",
+                //查询间隔
+                'QueryDuration' => "3"
+            );
+
+            // 支付超时,线下扫码交易定义为5分钟
+            $timeExpress = "5m";
+
+            // 创建请求builder,设置请求参数
+            $barPayRequestBuilder = new \AlipayTradePayContentBuilder();
+            $barPayRequestBuilder->setOutTradeNo($outTradeNo);
+            $barPayRequestBuilder->setTotalAmount($totalAmount);
+            $barPayRequestBuilder->setAuthCode($authCode);
+            $barPayRequestBuilder->setTimeExpress($timeExpress);
+            $barPayRequestBuilder->setSubject($subject);
+            $barPayRequestBuilder->setBody($body);
+
+            // 调用barPay方法获取当面付应答
+            $barPay = new \AlipayTradeService($config);
+            $barPayResult = $barPay->barPay($barPayRequestBuilder);
+
+            switch ($barPayResult->getTradeStatus()) {
+                case "SUCCESS":
+//                    if (!empty($barPayResult->getResponse())) {
+//                        print_r($barPayResult->getResponse());
+//                    }
+                    util::success(['returnStatus'=>'SUCCESS']);
+                    break;
+                case "FAILED":
+                    util::fail('支付失败,请查看订单详情');
+                    break;
+                case "UNKNOWN":
+                    util::fail('支付异常');
+                    break;
+                default:
+                    util::fail('支付异常');
+                    break;
             }
-        } catch (\Exception $e) {
-            util::fail('支付失败,请查询订单支付结果');
         }
     }
 

+ 5 - 3
biz-ghs/order/services/OrderService.php

@@ -33,7 +33,7 @@ class OrderService extends BaseService
     public static $baseFile = '\bizGhs\order\classes\OrderClass';
 
     //添加订单
-    public static function createOrder($data, $custom)
+    public static function createOrder($data, $custom, $hasPay = true)
     {
         //供应商销售单
         $returnOrder = OrderClass::addOrder($data);
@@ -115,8 +115,10 @@ class OrderService extends BaseService
         $returnOrder->purchaseId = $purchaseId;
         $returnOrder->save();
 
-        PurchaseService::payAfter($purchase, $payWay);
-        self::payAfter($returnOrder, $payWay);
+        if ($hasPay) {
+            PurchaseService::payAfter($purchase, $payWay);
+            self::payAfter($returnOrder, $payWay);
+        }
 
         return $returnOrder;
     }