正在显示
2 个修改的文件
包含
63 行增加
和
4 行删除
| @@ -35,7 +35,57 @@ class Wechat extends Api | @@ -35,7 +35,57 @@ class Wechat extends Api | ||
| 35 | }catch(\Exception $e){ | 35 | }catch(\Exception $e){ |
| 36 | $this->error($e->getMessage()); | 36 | $this->error($e->getMessage()); |
| 37 | } | 37 | } |
| 38 | - $this->success('活动获取成功', $config); | 38 | + $this->success('配置获取成功', json_decode($config,true)); |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | + /* | ||
| 42 | + 服务器跳转授权code测试 | ||
| 43 | + */ | ||
| 44 | + public function test_code(){ | ||
| 45 | + $code = request()->param('code'); | ||
| 46 | + if(!empty($code)){ | ||
| 47 | + //跳转官方 | ||
| 48 | + $APPID = config('site.appid'); | ||
| 49 | + $REDIRECT_URI = 'https://coupon.xp.yn.cn/index.php/api/v1/Wechat/test_code'; | ||
| 50 | + $SCOPE = 'snsapi_base'; | ||
| 51 | + $redirect = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$APPID&redirect_uri=$REDIRECT_URI&response_type=code&scope=$SCOPE&state=STATE#wechat_redirect"; | ||
| 52 | + }else{ | ||
| 53 | + //解析code | ||
| 54 | + $app = WehcatModule::getInstance()->initWechat(); | ||
| 55 | + $user = $app->oauth->user(); | ||
| 56 | + var_dump(json_encode($user)); | ||
| 57 | + // $user 可以用的方法: | ||
| 58 | + // $user->getId(); // 对应微信的 OPENID | ||
| 59 | + // $user->getNickname(); // 对应微信的 nickname | ||
| 60 | + // $user->getName(); // 对应微信的 nickname | ||
| 61 | + // $user->getAvatar(); // 头像网址 | ||
| 62 | + // $user->getOriginal(); // 原始API返回的结果 | ||
| 63 | + // $user->getToken(); // access_token, 比如用于地址共享时使用 | ||
| 64 | + } | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + /* | ||
| 68 | + 2.网页授权 | ||
| 69 | + 2.1前端打开则跳转到授权页 由前端自行配置 | ||
| 70 | + appid | ||
| 71 | + redirect_uri前端的路由首位, | ||
| 72 | + scope=snsapi_base 静默只能获取openid, | ||
| 73 | + =snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 ) | ||
| 74 | + https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect | ||
| 75 | + 2.2 由微信回跳后,获取code 和 state 参数,由前端post code给后台 | ||
| 76 | + */ | ||
| 77 | + | ||
| 78 | + public function get_user_info_by_code (){ | ||
| 79 | + try{ | ||
| 80 | + $app = WehcatModule::getInstance()->initWechat(); | ||
| 81 | + $oauth = $app->oauth; | ||
| 82 | + // 获取 OAuth 授权结果用户信息 | ||
| 83 | + $user = $oauth->user(); | ||
| 84 | + }catch(\Exception $e){ | ||
| 85 | + $this->error($e->getMessage()); | ||
| 86 | + } | ||
| 87 | + $this->success('配置获取成功', json_decode($config,true)); | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + | ||
| 41 | } | 91 | } |
| @@ -6,6 +6,9 @@ use EasyWeChat\Factory; | @@ -6,6 +6,9 @@ use EasyWeChat\Factory; | ||
| 6 | 6 | ||
| 7 | /** | 7 | /** |
| 8 | * easyWechat 插件 | 8 | * easyWechat 插件 |
| 9 | + 使用 | ||
| 10 | + $app = app\server\Wechat::getInstance()->initWechat(); | ||
| 11 | + $app 为 easyWechat的对象 根据官网接口调用或二开 | ||
| 9 | */ | 12 | */ |
| 10 | class Wechat { | 13 | class Wechat { |
| 11 | static public $app = null; | 14 | static public $app = null; |
| @@ -15,8 +18,12 @@ class Wechat { | @@ -15,8 +18,12 @@ class Wechat { | ||
| 15 | static private $inc = null; | 18 | static private $inc = null; |
| 16 | 19 | ||
| 17 | function __construct(){ | 20 | function __construct(){ |
| 18 | - self::$appid= config("site.appid"); | ||
| 19 | - self::$appsecret= config("site.appsecret"); | 21 | + //self::$appid= config("site.appid"); |
| 22 | + //self::$appsecret= config("site.appsecret"); | ||
| 23 | + //测试公众号 | ||
| 24 | + self::$appid= 'wxb9b259e7a17bda27'; | ||
| 25 | + self::$appsecret= '2af20d18bf969d8a26691dfd54cc6380'; | ||
| 26 | + //easyWechat配置 | ||
| 20 | self::$config = [ | 27 | self::$config = [ |
| 21 | 'app_id' => self::$appid, | 28 | 'app_id' => self::$appid, |
| 22 | 'secret' => self::$appsecret, | 29 | 'secret' => self::$appsecret, |
| @@ -52,6 +59,7 @@ class Wechat { | @@ -52,6 +59,7 @@ class Wechat { | ||
| 52 | ]; | 59 | ]; |
| 53 | } | 60 | } |
| 54 | 61 | ||
| 62 | + //静态函数 | ||
| 55 | static public function getInstance(){ | 63 | static public function getInstance(){ |
| 56 | if(self::$inc == null){ | 64 | if(self::$inc == null){ |
| 57 | self::$inc = new self(); | 65 | self::$inc = new self(); |
| @@ -59,8 +67,9 @@ class Wechat { | @@ -59,8 +67,9 @@ class Wechat { | ||
| 59 | return self::$inc; | 67 | return self::$inc; |
| 60 | } | 68 | } |
| 61 | 69 | ||
| 62 | - static public function initWechat(){ | 70 | + //初始化 easywechat app |
| 63 | 71 | ||
| 72 | + static public function initWechat(){ | ||
| 64 | self::$app = Factory::officialAccount(self::$config); | 73 | self::$app = Factory::officialAccount(self::$config); |
| 65 | return self::$app; | 74 | return self::$app; |
| 66 | } | 75 | } |
-
请 注册 或 登录 后发表评论