zory 1 mēnesi atpakaļ
vecāks
revīzija
5d0baec8e3
2 mainītis faili ar 128 papildinājumiem un 2 dzēšanām
  1. 2 2
      app/controller/merchant/Unusual.php
  2. 126 0
      app/controller/notify/Test.php

+ 2 - 2
app/controller/merchant/Unusual.php

@@ -41,7 +41,7 @@ class Unusual extends Base
             $data = $this->model->where("order_sn",$param['order'])->findOrEmpty();
             if ($data->isEmpty()) return errorTrans("empty.data");
             if ($request->user['store_id'] <> $data['poi_id'] && $request->user['is_super'] == 0) return errorTrans("empty.data");
-            if (strtotime("+24 hour",strtotime($data['error_at'])) < time()) return error("异常订单需24小时后方可操作");
+//            if (strtotime("+24 hour",strtotime($data['error_at'])) < time()) return error("异常订单需24小时后方可操作");
             $data->status = 1;
             $data->is_error = 0;
             $state = $data->save();
@@ -69,7 +69,7 @@ class Unusual extends Base
             $data = $this->model->where("order_sn",$param['order'])->findOrEmpty();
             if ($data->isEmpty()) return errorTrans("empty.data");
             if ($request->user['store_id'] <> $data['poi_id'] && $request->user['is_super'] == 0) return errorTrans("empty.data");
-            if (strtotime("+24 hour",strtotime($data['error_at'])) < time()) return error("异常订单需24小时后方可操作");
+//            if (strtotime("+24 hour",strtotime($data['error_at'])) < time()) return error("异常订单需24小时后方可操作");
             $orderCode = (new OrderData)->config([
                 "appid"     => sConf("wechat.appid"),
                 "secret"    => sConf("wechat.secret"),

+ 126 - 0
app/controller/notify/Test.php

@@ -0,0 +1,126 @@
+<?php
+
+namespace app\controller\notify;
+
+use app\extra\basic\Base;
+use app\extra\dyLife\data\OrderData;
+use app\model\saas\SaasOrder;
+use app\model\saas\SaasOrderItem;
+use app\model\saas\SaasOrderVerify;
+use LinFly\Annotation\Attributes\Route\Controller;
+use LinFly\Annotation\Attributes\Route\GetMapping;
+use support\Request;
+use support\Response;
+
+
+#[Controller("/test")]
+class Test extends Base
+{
+
+
+    #[GetMapping("verify")]
+    public function setVerify(Request $request): Response
+    {
+        try {
+            $param = $this->_valid([
+                'order.require' => trans("empty.require")
+            ]);
+            if (!is_array($param)) return error($param);
+            $order = (new SaasOrder)->where("order_sn",$param["order"])->with(['poi'])->findOrEmpty();
+            echo "订单状态==={$order['status']}\n";
+            if ($order['status'] <> 2)
+            {
+                echo getDateFull()."===订单状态不符合核销\n";
+                return error("订单状态不符合核销",$order->toArray());
+            }
+            // 获取到订单encrypted_code
+            $orderCode = (new OrderData)->config([
+                "appid"     => sConf("wechat.appid"),
+                "secret"    => sConf("wechat.secret"),
+                "account"   => sConf("wechat.shop_id"),
+            ])->token()->getCertificate($order['order_sn'],$order['poi']['store_id']);
+            if (empty($orderCode['certificates']))
+            {
+                echo getDateFull()."===获取订单数据失败\n";
+                return error("获取订单数据失败",$orderCode);
+            }
+            echo getDateFull()."===核销数据\n";
+            print_r($orderCode['certificates']);
+            $encrypted_code = [];
+            foreach ($orderCode['certificates'] as $key=>$v)
+            {
+                if (empty($v['encrypted_code']))
+                {
+                    echo getDateFull()."===获取订单数据失败\n";
+                    continue;
+                }
+                if ($v['status'] <> 1) {
+                    echo getDateFull()."===该订单状态不支持核销\n";
+                    continue;
+                }
+                $encrypted_code[$key] = $v['encrypted_code'];
+            }
+            echo getDateFull()."===券码数据\n";
+            print_r($encrypted_code);
+            if (empty($encrypted_code))
+            {
+                echo getDateFull()."===没有可核销券码\n";
+                $order->express_status = 3;
+                $order->done_at = getDateFull();
+                $order->save();
+                return error("没有可核销券码",$encrypted_code);
+            }
+            // 核销订单
+            $orderDone = (new OrderData)->config([
+                "appid"     => sConf("wechat.appid"),
+                "secret"    => sConf("wechat.secret"),
+                "account"   => sConf("wechat.shop_id"),
+            ])->token()->verifyCertificate([
+                "account_id"    => $order['poi']['store_id'],
+                "pay_sn"        => $order['pay_sn'],
+//                "encrypted_code" => $orderCode['certificates'][0]['encrypted_code'],
+                "encrypted_code" => array_values($encrypted_code),
+                "order_id"      => $order['order_sn'],
+                "poi_id"        => $order['poi_id']
+            ]);
+            echo getDateFull()."===核销返回\n";
+            print_r($orderDone);
+            if (empty($orderDone['verify_results']))
+            {
+                echo getDateFull()."===核销失败\n";
+                return error("核销失败",$orderDone);
+            }
+            $doneData = [];
+            foreach ($orderDone['verify_results'] as $key=>$v)
+            {
+                if(empty($v['verify_id'])) {
+                    continue;
+                }
+                if(empty($v['certificate_id'])) {
+                    continue;
+                }
+                $doneData[$key] = [
+                    "poi_id"            => $order['poi_id'],
+                    "order_sn"          => $order['order_sn'],
+                    "money"             => $order['price'],
+                    "certificate_id"    => $v['certificate_id'],
+                    "verify_id"         => $v['verify_id'],
+                ];
+            }
+            if (empty($doneData))
+            {
+                echo getDateFull()."===核销完成无数据返回\n";
+                return error("核销完成无数据返回",$doneData);
+            }
+            $order->express_status = 3;
+            $order->done_at = getDateFull();
+            $order->save();
+            (new SaasOrderItem)->where(['order_sn'=>$order['order_sn'],'status'=>1])->update(['status'=>3]);
+            (new SaasOrderVerify)->insertAll(array_values($doneData));
+            return success("核销成功");
+        } catch (\Throwable $throwable) {
+            return error($throwable->getMessage());
+        }
+    }
+
+}