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']]; } /** * 获取小程序码 * * @param string $scene 小程序码的场景值 * @param array $optional 其他参数 * page 小程序码的页面路径 * width 小程序码的宽度 * */ public function getUnlimit(string $scene, array $optional = []){ // // 版本 // $optional['env_version'] = 'production';//config('app.env','production') == 'production' ? 'release' : 'trial'; // 执行生成 $result = $this->mp->app_code->getUnlimit($scene, $optional); // 判断结果 if( $result instanceof \EasyWeChat\Kernel\Http\StreamResponse ) return $result->getBody()->getContents(); // 错误 return ['error'=>$result['errcode'].'=>'.$result['errmsg']]; } }