|
|
@@ -31,6 +31,8 @@ class MpService extends BaseService
|
|
|
'getToken' => 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%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',
|
|
|
// 获取用户信息
|
|
|
'getUserInfo' => 'https://api.weixin.qq.com/sns/jscode2session',
|
|
|
// 获取公众号accessToken和openid
|
|
|
@@ -184,6 +186,68 @@ class MpService extends BaseService
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 小程序分享链接
|
|
|
+ * @param $path 页面路径
|
|
|
+ * @param $query 地址参数
|
|
|
+ * @param false $refresh
|
|
|
+ * @return false|string
|
|
|
+ */
|
|
|
+ public function getMiniShareLink($path, $query,$isExpire=false, $refresh=false)
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ if(empty($path) || empty($query)){
|
|
|
+ $this->error = '缺少链接参数';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(empty($this->mpAppid) || empty($this->mpAppSecret)){
|
|
|
+ $this->error = '小程序参数未配置';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!$token = $this->getAccessToken())
|
|
|
+ {
|
|
|
+ $this->error = '获取token失败';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $cacheKey = "caches:members:mpShare_{$this->mpAppid}:".md5($path.$query);
|
|
|
+ $link = RedisService::get($cacheKey);
|
|
|
+ if($link && !$refresh){
|
|
|
+ return $link;
|
|
|
+ }
|
|
|
+
|
|
|
+ $data = [
|
|
|
+ 'path'=>$path,
|
|
|
+ 'query'=>$query,
|
|
|
+ 'is_expire'=> $isExpire,
|
|
|
+ ];
|
|
|
+
|
|
|
+ $url = sprintf($this->apiUrls['getShareLink'], $token);
|
|
|
+ var_dump($url);
|
|
|
+ $result = curl_post($url, json_encode($data));
|
|
|
+ var_dump($result);
|
|
|
+ $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')]);
|
|
|
+ $errcode = isset($datas['errcode'])? $datas['errcode'] : '';
|
|
|
+ $errmsg = isset($datas['errmsg'])? $datas['errmsg'] : '';
|
|
|
+ $link ='';
|
|
|
+ if($errcode){
|
|
|
+ $this->error = $errmsg? $errmsg : '获取二维码失败';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ RedisService::set($cacheKey,$link, rand(3600,7200));
|
|
|
+ return $result;
|
|
|
+ }catch (\Exception $e){
|
|
|
+ $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')]);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 获取授权信息
|
|
|
* @param $code
|
|
|
* @param $platform mp-小程序,wechat-公众号
|