mp = Factory::miniProgram(config('wechat.mini',[])); } /** * 获取UrlLink * @param string $path 通过 URL Link 进入的小程序页面路径,必须是已经发布的小程序存在的页面,不可携带 query 。path 为空时会跳转小程序主页 * @param string $query 通过 URL Link 进入小程序时的query,最大1024个字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~% * */ public function getUrlLink($path,$query=''){ // 组合参数 $params['path'] = $path; $params['query'] = $query; $params['expire_type'] = 1; // 默认值0.小程序 URL Link 失效类型,失效时间:0,失效间隔天数:1 $params['expire_interval'] = 30; // 到期失效的URL Link的失效间隔天数 $params['env_version'] = 'release';//config('app.env','production') == 'production' ? 'release' : 'trial'; // 获取结果 $result = $this->mp->url_link->generate($params); // 成功返回 if( $result['errcode'] == 0 ) return $result['url_link']; // 失败 return ''; } /** * 手机号授权 * @param string $code 授权码 * */ public function getUserPhone($code){ // 获取手机号 $result = $this->mp->phone_number->getUserPhoneNumber($code); // 判断结果 if( !empty($result['errcode']) ) return ['error'=>$result['errcode'].'=>'.$result['errmsg']]; // 获取不包含区号的手机号(因为绑定手机号字段会有国际区号) return $result['phone_info']; } /** * 获取AccessToken * */ public function getAccessToken(){ // 获取手机号 $result = $this->mp->access_token->getToken(); // 判断结果 if( !empty($result['access_token']) ) return $result['access_token']; // 获取不包含区号的手机号(因为绑定手机号字段会有国际区号) return ''; } /** * 查询加密URLLink * */ public function queryUrlLink($urlLink){ // 获取手机号 $token = $this->getAccessToken(); // $result = Curl::to('https://api.weixin.qq.com/wxa/query_urllink?access_token='.$token)->withData(['url_link'=>$urlLink])->asJsonRequest()->asJsonResponse(true)->post(); // 判断结果 if( !empty($result['url_link_info']) ) return $result['url_link_info']; // 获取不包含区号的手机号(因为绑定手机号字段会有国际区号) return ['error'=>$result['errcode'].'=>'.$result['errmsg']]; } /** * 获取用户openid * @param string $code 授权码 * */ public function jscode2session($code){ // 获取手机号 $result = $this->mp->auth->session($code); // 判断结果 if( !empty($result['errcode']) ) return ['error'=>$result['errcode'].'=>'.$result['errmsg']]; // 获取不包含区号的手机号(因为绑定手机号字段会有国际区号) return $result; } }