Files
mier-php/application/api/wxapi/request/CodeRequest.php

107 lines
2.5 KiB
PHP
Raw Normal View History

2025-08-11 10:22:05 +08:00
<?php
namespace app\api\wxapi\request;
use app\api\wxapi\Base;
/* $req = new CodeRequest();
* $req->setAppId($WxClient->appID);
* $req->setServerUrl($WxClient->serverUrl);
* $req->setScope(self::STATE_SNSAPI_BASE);
* $url=$req->run();
* return $this->redirect($url);
* */
class CodeRequest extends Base
{
const STATE_SNSAPI_BASE='snsapi_base'; //不弹出授权页面直接跳转只能获取用户openid
const STATE_SNSAPI_USERINFO='snsapi_userinfo'; //弹出授权页面可通过openid拿到昵称、性别、所在地。并且即使在未关注的情况下只要用户授权也能获取其信息
private $serverUrl='https://open.weixin.qq.com/';
private $redirect_uri;
private $apiParas = array();
private $appid;
private $scope;
private $state;
public function init(){
$callback=$_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$this->setAppId('');
$this->setRredirectUri($callback);
$this->apiParas['response_type'] = 'code';
$this->setScope(self::STATE_SNSAPI_BASE);
$this->apiParas['state'] = time();
$this->apiParas['#'] = 'wechat_redirect';
}
public function run()
{
//获取业务参数
$apiParams = $this->getApiParas();
//系统参数放入GET请求串
$requestUrl = $this->serverUrl . $this->getApiMethodName() . "?";
foreach ($apiParams as $key => $value)
{
$requestUrl .= "$key=" . $value . "&";
}
return trim($requestUrl,"&");
}
public function getApiMethodName(){
return "connect/oauth2/authorize";
}
public function getApiParas(){
return $this->apiParas;
}
public function putOtherTextParam($key, $value){
$this->apiParas[$key] = $value;
$this->$key = $value;
}
public function setAppId($appid){
$this->appid = $appid;
$this->apiParas["appid"] = $appid;
}
public function getAppId(){
return $this->appid;
}
public function setRredirectUri($redirect_uri){
$redirect_uri = urlencode($redirect_uri);
$this->redirect_uri = $redirect_uri;
$this->apiParas["redirect_uri"] = $redirect_uri;
}
public function getRredirectUri(){
return $this->redirect_uri;
}
public function setScope($scope){
$this->scope = $scope;
$this->apiParas["scope"] = $scope;
}
public function getScope(){
return $this->scope;
}
public function setServerUrl($serverUrl){
$this->serverUrl = $serverUrl;
}
public function getServerUrl(){
return $this->serverUrl;
}
public function setState($state){
$this->state = $state;
$this->apiParas["state"] = $state;
}
public function getState(){
return $this->state;
}
}