ソースを参照

feat: 添加小程序消息推送事件

Gosowong 2 年 前
コミット
e507f80b38

+ 8 - 0
crmeb/app/api/controller/v1/wechat/WechatController.php

@@ -42,6 +42,14 @@ class WechatController
     {
         return $this->services->serve();
     }
+    /**
+     * 微信小程序公众号服务
+     * @return \think\Response
+     */
+    public function miniServe()
+    {
+        return $this->services->miniServe();
+    }
 
     /**
      * 支付异步回调

+ 1 - 0
crmeb/app/api/route/v1.php

@@ -16,6 +16,7 @@ use think\Response;
 
 Route::group(function () {
     Route::any('wechat/serve', 'v1.wechat.WechatController/serve')->option(['real_name' => '公众号服务']);//公众号服务
+    Route::any('wechat/miniServe', 'v1.wechat.WechatController/miniServe')->option(['real_name' => '小程序服务']);//公众号服务
     Route::any('pay/notify/:type', 'v1.PayController/notify')->option(['real_name' => '支付回调']);//支付回调
     Route::get('get_script', 'v1.PublicController/getScript')->option(['real_name' => '获取统计代码']);//获取统计代码
     Route::get('version', 'v1.PublicController/getVersion')->option(['real_name' => '获取代码版本号']);

+ 12 - 0
crmeb/app/services/wechat/WechatServices.php

@@ -17,6 +17,7 @@ use app\dao\wechat\WechatUserDao;
 use app\services\user\UserServices;
 use app\services\user\UserVisitServices;
 use crmeb\exceptions\ApiException;
+use crmeb\services\app\MiniProgramService;
 use crmeb\services\CacheService;
 use crmeb\services\CacheService as Cache;
 use crmeb\services\app\WechatService as WechatAuthService;
@@ -53,6 +54,17 @@ class WechatServices extends BaseServices
         return WechatAuthService::serve();
     }
 
+    /**
+     * 微信公众号服务
+     * @return \think\Response
+     * @throws \EasyWeChat\Server\BadRequestException
+     */
+    public function miniServe()
+    {
+        ob_clean();
+        return MiniProgramService::serve();
+    }
+
     /**
      * 支付异步回调
      * @return string

+ 45 - 0
crmeb/crmeb/services/app/MiniProgramService.php

@@ -19,6 +19,7 @@ use EasyWeChat\Payment\Order;
 use think\facade\Log;
 use crmeb\utils\Hook;
 use think\facade\Cache;
+use think\Response;
 
 /**
  * 微信小程序接口
@@ -848,4 +849,48 @@ class MiniProgramService
         }
         return $message ?: self::MSG_CODE[$e->getCode()] ?? $e->getMessage();
     }
+
+
+    /**
+     * @return Response
+     * @throws \EasyWeChat\Server\BadRequestException
+     */
+    public static function serve(): Response
+    {
+        $wechat = self::application(true);
+        $server = $wechat->server;
+        self::hook($server);
+        $response = $server->serve();
+        return response($response->getContent());
+    }
+
+    private static function hook($server)
+    {
+        $server->setMessageHandler(function ($message) {
+            switch ($message->MsgType) {
+                case 'event':
+                    switch (strtolower($message->Event)) {
+                        case 'trade_manage_remind_access_api':
+                            Log::error('event1');
+                            break;
+                        case 'trade_manage_remind_shipping':
+                            Log::error('event2');
+                            break;
+                        case 'trade_manage_order_settlement':
+                            Log::error('event3');
+                            break;
+                    };
+                    break;
+                case 'trade_manage_remind_access_api':
+                    Log::error('notevent1');
+                    break;
+                case 'trade_manage_remind_shipping':
+                    Log::error('notevent2');
+                    break;
+                case 'trade_manage_order_settlement':
+                    Log::error('notevent3');
+                    break;
+            };
+        });
+    }
 }