요구 사항에 대한 설명
- 현재 쇼핑몰(UID 식별)은 제3자 개발 플랫폼을 승인합니다.
- 웹페이지 인증이 성공한 후 다른 쇼핑몰 프로젝트 링크로 이동하여 현재 WeChat 사용자 정보와 WeChat 초기화 확인 서명을 가져옵니다. -파티 플랫폼 인증
easywechat4 설치
WeChat 스캔 QR 코드 인증 페이지로 점프 생성Quote$ composer require overtrue/wechat:~4.0 -vvv로그인 후 복사use EasyWeChat\Factory;로그인 후 복사
Jump 방식 (WeChat은 동일한 주소가 필요하기 때문에 이전 방식으로 쓰면 안되는 이유)/** * 开发平台授权跳转 * * @return void */ public function accessView(){ // $uid = Request()->route('uid' , 0); $url = 'http://qgcloud.capsui.com/public/index/wxopen/config?uid=' . $uid; $this->assign('url' , $url); return $this->fetch(); }로그인 후 복사
인증 콜백(참고: 인증 확인을 위해 QR 코드를 스캔한 후 첫 번째 콜백은 uid 매개변수를 가져오지 않습니다.)/** * 开发平台跳转授权扫码页 * * @return void */ public function config(){ $uid = Request()->get('uid' , 0); $config = [ 'app_id' => '开放平台第三方平台 APPID', 'secret' => '开放平台第三方平台 Secret', 'token' => '开放平台第三方平台 Token', 'aes_key' => '开放平台第三方平台 AES Key' ]; $openPlatform = Factory::openPlatform($config); $url = $openPlatform->getPreAuthorizationUrl('http://qgcloud.capsui.com/public/index/wxopen/wxcallback?uid=' . $uid); $this->redirect($url); }로그인 후 복사
타사 플랫폼 웹페이지 인증 및 WeChat JSSDK 초기화 서명 생성引入 use EasyWeChat\OpenPlatform\Server\Guard;로그인 후 복사/** * 开发平台授权回调 * * @return void */ public function wxcallback(){ // 这个表是记录授权成功的 //$Wxpublic = new Wxpublic; // 这个表是记录授权成功后传过来所属uid商城绑定appid //$ShopConfig = new ShopConfig; $get = Request()->param(); $config = [ 'app_id' => '开放平台第三方平台 APPID', 'secret' => '开放平台第三方平台 Secret', 'token' => '开放平台第三方平台 Token', 'aes_key' => '开放平台第三方平台 AES Key' ]; $openPlatform = Factory::openPlatform($config); $server = $openPlatform->server; // 处理授权成功事件-第一次回调 // 闭包方法!里面调用外面的方法请在use里面填写 $server->push(function ($message) use ($openPlatform /*, $Wxpublic*/) { $authCode = $message['AuthorizationCode']; $res = $openPlatform->handleAuthorize($authCode); if($res['authorization_info']['authorizer_refresh_token']){ //授权成功记录到数据库 //$Wxpublic->insert(['appid' => $res['authorization_info']['authorizer_appid'] , 'createtime' => time()]); } }, Guard::EVENT_AUTHORIZED); // 处理授权取消事件-第一次回调 // 闭包方法!里面调用外面的方法请在use里面填写 $server->push(function ($message) use(/*$Wxpublic , $ShopConfig*/) { //处理数据库逻辑 //$Wxpublic::appid($message['AppId'])->delete(); //$ShopConfig::appid($message['AppId'])->update(['token' => '']); }, Guard::EVENT_UNAUTHORIZED); // 第二次回调会带一个授权code和自定义参数商城id(uid) if(isset($get['auth_code']) && isset($get['uid'])){ $res = $openPlatform->handleAuthorize($get['auth_code']); $appid = $res['authorization_info']['authorizer_appid']; //数据库逻辑 //$isConfig = $Wxpublic::appid($appid)->count(); //if($isConfig){ //$add = $ShopConfig->where('uid' , $get['uid'])->update(['token' => $appid]); //} } return $server->serve(); }로그인 후 복사
웹페이지 인증 콜백 방법/** * 网页授权调起 * * @return void */ public function htmlAccess(){ $appid = Request()->get('appid' , 0); $config = [ 'app_id' => '开放平台第三方平台 APPID', 'secret' => '开放平台第三方平台 Secret', 'token' => '开放平台第三方平台 Token', 'aes_key' => '开放平台第三方平台 AES Key' ]; $openPlatform = Factory::openPlatform($config); $data = $openPlatform->getAuthorizer($appid); $appid = $data['authorization_info']['authorizer_appid']; $refreshToken = $data['authorization_info']['authorizer_refresh_token']; $officialAccount = $openPlatform->officialAccount($appid , $refreshToken); $oauth = $officialAccount->oauth; // 回调授权地址 $url = "http://qgcloud.capsui.com/public/index/wxopen/callbackOpenid"; $response = $officialAccount->oauth->scopes(['snsapi_userinfo'])->redirect($url)->send(); }로그인 후 복사
/**
* 网页授权回调
*
* @return void
*/
public function callbackOpenid(){
$appid = Request()->get('appid' , null);
$config = [
'app_id' => '开放平台第三方平台 APPID',
'secret' => '开放平台第三方平台 Secret',
'token' => '开放平台第三方平台 Token',
'aes_key' => '开放平台第三方平台 AES Key'
];
$openPlatform = Factory::openPlatform($config);
$data = $openPlatform->getAuthorizer($appid);
$appid = $data['authorization_info']['authorizer_appid'];
$refreshToken = $data['authorization_info']['authorizer_refresh_token'];
// 获取微信用户信息 如openid nickname等信息
$officialAccount = $openPlatform->officialAccount($appid , $refreshToken);
$oauth = $officialAccount->oauth;
$user = $oauth->user();
// 处理wxconfig初始化JSSDK
$officialAccount->jssdk->setUrl('http://quguoshop.capsui.com/');
$wxconfig = $officialAccount->jssdk->buildConfig(['chooseWXPay'], $debug = true, $beta = false, $json = true);
$ShopConfig = new ShopConfig;
$shopInfo = $ShopConfig::appid($appid)->find();
// 注意 这里我是带参数跳转到其他TP5项目里面再用缓存处理一下
$url = 'http://quguoshop.capsui.com/public/wxoauthCallback?data=' . json_encode($user->toArray()) . '&token=' . $shopInfo['id'] . '&wxconfig=' . $wxconfig;
$this->redirect($url);
}
로그인 후 복사
/** * 网页授权回调 * * @return void */ public function callbackOpenid(){ $appid = Request()->get('appid' , null); $config = [ 'app_id' => '开放平台第三方平台 APPID', 'secret' => '开放平台第三方平台 Secret', 'token' => '开放平台第三方平台 Token', 'aes_key' => '开放平台第三方平台 AES Key' ]; $openPlatform = Factory::openPlatform($config); $data = $openPlatform->getAuthorizer($appid); $appid = $data['authorization_info']['authorizer_appid']; $refreshToken = $data['authorization_info']['authorizer_refresh_token']; // 获取微信用户信息 如openid nickname等信息 $officialAccount = $openPlatform->officialAccount($appid , $refreshToken); $oauth = $officialAccount->oauth; $user = $oauth->user(); // 处理wxconfig初始化JSSDK $officialAccount->jssdk->setUrl('http://quguoshop.capsui.com/'); $wxconfig = $officialAccount->jssdk->buildConfig(['chooseWXPay'], $debug = true, $beta = false, $json = true); $ShopConfig = new ShopConfig; $shopInfo = $ShopConfig::appid($appid)->find(); // 注意 这里我是带参数跳转到其他TP5项目里面再用缓存处理一下 $url = 'http://quguoshop.capsui.com/public/wxoauthCallback?data=' . json_encode($user->toArray()) . '&token=' . $shopInfo['id'] . '&wxconfig=' . $wxconfig; $this->redirect($url); }
로그인 후 복사
"관련 추천 :최신 10개 thinkphp 비디오 튜토리얼