有在yii2下用easyWeChat开发的么 [ 2.0 版本 ]
实在搞不定,按easyWeChat文档的示例代码里写的,有哪位分享下网页授权代码?万分感谢~
最佳答案
-
`<?php
namespace backend\controllers;use Yii;
use \yii\web\Controller;
use yii\web\HttpException;
use backend\models\WechatUser;
use EasyWeChat\Server\BadRequestException;class WebchatController extends Controller
{public $enableCsrfValidation = false; //取消_csrf 数据验证 /** * actionIndex 微信验证 * @return mixed */ public function actionIndex() { try{ $app = Yii::$app->wechat->getApp(); $server = $app->server; $server->setMessageHandler(function ($message) { // $message->FromUserName // 用户的 openid // $message->MsgType // 消息类型:event, text.... switch ($message->MsgType) { case 'event': //订阅公众号 if($message->Event == 'subscribe'){ return $this->subscribe($message); } //取消订阅事件 if($message->Event == 'unsubscribe'){ return $this->unsubscribe($message); } //已经订阅事件 if($message->Event == 'SCAN'){ //return $this->unsubscribe($message); } return '收到事件消息'; break; case 'text': return '收到文字消息'; break; case 'image': return '收到图片消息'; break; case 'voice': return '收到语音消息'; break; case 'video': return '收到视频消息'; break; case 'location': return '收到坐标消息'; break; case 'link': return '收到链接消息'; break; // ... 其它消息 default: return '收到其它消息'; break; } }); $response = $server->serve(); return $response->send(); }catch (BadRequestException $e){ if($e->getMessage() === 'Invalid request.'){ throw new HttpException(404); } } } /** * subscribe 微信订阅事件 * @param $message */ private function subscribe($message) { $userInfo = WechatUser::findUserByOpenId($message->FromUserName); if(!$userInfo){ //添加关注的用户到数据库中 $app = Yii::$app->wechat->getApp(); $userService = $app->user; $userInfo = $userService->get($message->FromUserName); if($userInfo->subscribe){ Yii::$app->db->createCommand()->insert(WechatUser::tableName(),[ 'openid' => $userInfo->openid, 'unionid' => $userInfo->unionid, 'nickname' => $userInfo->nickname, 'sex' => $userInfo->sex, 'headimgurl' => $userInfo->headimgurl, 'country' => $userInfo->country, 'province' => $userInfo->province, 'city' => $userInfo->city, 'language' => $userInfo->language, ])->execute(); } }else{ $userInfo->sataus = 10; $userInfo->save(); } return Yii::$app->params['WeChatMessage']['subscribe']; } /** * unsubscribe 微信取消订阅事件 * @param $message */ private function unsubscribe($message) { $userInfo = WechatUser::findUserByOpenId($message->FromUserName); if($userInfo){ $userInfo->status = 0; $userInfo->save(); } return ''; }
}`
叶炳拥 觉得很赞
其他 5 个回答
-
-
Add the SDK as a yii2 application component in the config/main.php:
'components' => [// ... 'wechat' => [ 'class' => 'maxwen\easywechat\Wechat', // 'userOptions' => [] # user identity class params // 'sessionParam' => '' # wechat user info will be stored in session under this key // 'returnUrlParam' => '' # returnUrl param stored in session ], // ...
]
// 微信网页授权:
if(Yii::$app->wechat->isWechat && !Yii::$app->wechat->isAuthorized()) {return Yii::$app->wechat->authorizeRequired()->send();
}
-
marine0516 回答于 2018-01-03 20:27 举报
同问,学习学习
-
-
搞搞的传奇
注册时间:2015-02-24
最后登录:2020-06-04
在线时长:24小时46分
最后登录:2020-06-04
在线时长:24小时46分
- 粉丝8
- 金钱5
- 威望10
- 积分345