wesmiler hace 2 meses
padre
commit
3838b056b8
Se han modificado 2 ficheros con 30 adiciones y 17 borrados
  1. 1 1
      app/Http/Controllers/Api/v1/TestController.php
  2. 29 16
      app/Services/MpService.php

+ 1 - 1
app/Http/Controllers/Api/v1/TestController.php

@@ -16,7 +16,7 @@ class TestController extends webApp
 
 
     public function check()
     public function check()
     {
     {
-        $result =  MpService::make()->getMiniShareLink('pagesSub/pages/meeting/books','mid=1');
+        $result =  MpService::make()->getMiniShareLink('pagesSub/pages/meeting/books?id=1','邀请您参加会议');
         dump(MpService::make()->getError());
         dump(MpService::make()->getError());
         dump($result);
         dump($result);
 
 

+ 29 - 16
app/Services/MpService.php

@@ -30,7 +30,9 @@ class MpService extends BaseService
         // 获取二维码
         // 获取二维码
         'getQrcode'=>'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=%s&scene=%s&page=%s&env_version=%s',
         'getQrcode'=>'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=%s&scene=%s&page=%s&env_version=%s',
         // 生成小程序分享链接
         // 生成小程序分享链接
-        'getShareLink'=>'https://api.weixin.qq.com/wxa/generatescheme?access_token=%s',
+        'getSchemeLink'=>'https://api.weixin.qq.com/wxa/generatescheme?access_token=%s',
+        // 短链接
+        'getShortLink'=>'https://api.weixin.qq.com/wxa/genwxashortlink?access_token=%s',
         // 获取用户信息
         // 获取用户信息
         'getUserInfo'=>'https://api.weixin.qq.com/sns/jscode2session',
         'getUserInfo'=>'https://api.weixin.qq.com/sns/jscode2session',
         // 获取手机号
         // 获取手机号
@@ -216,7 +218,7 @@ class MpService extends BaseService
      * @param false $refresh
      * @param false $refresh
      * @return false|string
      * @return false|string
      */
      */
-    public function getMiniShareLink($path, $query, $refresh=false)
+    public function getMiniShareLink($path, $query,$isExpire=false,$linkType=2, $refresh=false)
     {
     {
         try {
         try {
             if(empty($path) || empty($query)){
             if(empty($path) || empty($query)){
@@ -235,37 +237,48 @@ class MpService extends BaseService
                 return false;
                 return false;
             }
             }
 
 
-            $cacheKey = "caches:members:mpShare_{$this->mpAppid}:".md5($path.$query);
+            $cacheKey = "caches:members:mpShare_{$this->mpAppid}:{$linkType}_".md5($path.$query);
             $link = RedisService::get($cacheKey);
             $link = RedisService::get($cacheKey);
             if($link && !$refresh){
             if($link && !$refresh){
                 return $link;
                 return $link;
             }
             }
 
 
-            $data = [
-                'jump_wxa'=>['path'=>$path,'query'=>$query],
-                'is_expire'=> true,
+            if($linkType == 1){
+                $data = [
+                    'jump_wxa'=>[
+                        'path'=>$path,
+                        'query'=>$query,
+                    ],
+                    'is_expire'=> $isExpire,
                 ];
                 ];
+            }else if($linkType ==2){
+                $data=[
+                    'page_url'=> $path,
+                    'page_title'=> $query,
+                    'is_permanent'=>$isExpire
+                ];
+            }
+
 
 
-            $url = sprintf($this->apiUrls['getShareLink'], $token);
-            var_dump($url);
+            $linkTypes = [1=>'getSchemeLink',2=>'getShortLink'];
+            $name = isset($linkTypes[$linkType])?$linkTypes[$linkType]: 'getShortLink';
+            $url = sprintf($this->apiUrls[$name], $token);
             $result = curl_post($url, json_encode($data));
             $result = curl_post($url, json_encode($data));
-            var_dump($result);
             $datas = $result? json_decode($result, true) : [];
             $datas = $result? json_decode($result, true) : [];
-            var_dump($datas);
-            $this->saveLog($cacheKey.'_result', ['path'=>$path,'query'=>$query,'url'=>$url,'result'=>$result,'date'=>date('Y-m-d H:i:s')]);
+            $this->saveLog($cacheKey.'_result', ['path'=>$path,'query'=>$query,'linkType'=>$linkType,'url'=>$url,'result'=>$result,'date'=>date('Y-m-d H:i:s')]);
             $errcode = isset($datas['errcode'])? $datas['errcode'] : '';
             $errcode = isset($datas['errcode'])? $datas['errcode'] : '';
             $errmsg = isset($datas['errmsg'])? $datas['errmsg'] : '';
             $errmsg = isset($datas['errmsg'])? $datas['errmsg'] : '';
-            $link ='';
-            if($errcode){
-                $this->error = $errmsg? $errmsg : '获取二维码失败';
+            $link =isset($datas['link'])? $datas['link'] : '';
+            if($errcode || empty($link)){
+                $this->error = $errmsg? $errmsg : '获取链接失败';
                 return false;
                 return false;
             }
             }
 
 
             RedisService::set($cacheKey,$link, rand(3600,7200));
             RedisService::set($cacheKey,$link, rand(3600,7200));
-            return $result;
+            return $link;
         }catch (\Exception $e){
         }catch (\Exception $e){
             $this->error = $e->getMessage();
             $this->error = $e->getMessage();
-            $this->saveLog($cacheKey.'_error', ['path'=>$path,'query'=>$query,'error'=>$this->error,'trace'=>$e->getTrace(),'date'=>date('Y-m-d H:i:s')]);
+            $this->saveLog($cacheKey.'_error', ['path'=>$path,'query'=>$query,'linkType'=>$linkType,'error'=>$this->error,'trace'=>$e->getTrace(),'date'=>date('Y-m-d H:i:s')]);
             return false;
             return false;
         }
         }
     }
     }