123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <?php namespace App\Servers\WechatMini;
- use EasyWeChat\Factory;
- use Ixudra\Curl\Facades\Curl;
- /**
- * 微信小程序
- *
- */
- class Mini
- {
- // 工作列表
- protected \EasyWeChat\MiniProgram\Application $mp;
- // 返回结果
- public function __construct(){
- // 获取配置
- $this->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']];
- }
-
- }
|