PHP code example of lfphp / wechatsdk
1. Go to this page and download the library: Download lfphp/wechatsdk library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
lfphp / wechatsdk example snippets
use function LFPhp\WechatSdk\Util\wechat_echo_validation;
//微信接口校验模式
$token = ''; //请填入 2.2 中获取的【令牌(Token)】
if($_GET['echostr']){
wechat_echo_validation($token);
die;
}
//否则为微信常规回调模式
//正常微信回调业务代码···
use function LFPhp\WechatSdk\Util\wechat_decode_callback;
//上接【2.3】中微信接口校验代码···
$app_id = ''; //请填入 2.2 中获取的【开发者ID(AppID)】
$token = ''; //请填入 2.2 中获取的【令牌(Token)】
$encoding_aes_key = ''; //请填入 2.2 中设置的 【消息加解密密钥(EncodingAESKey)】
//解析并获取微信回调数据
$data = wechat_decode_callback($app_id, $token, $encoding_aes_key);
//数据调试
var_dump($data);
use LFPhp\WechatSdk\Message\Message\MessageText;
use LFPhp\WechatSdk\Message\MessageBase;
//上接【3.1】中回调数据获取代码
//$data 为上一步骤中解析出来的数组
$receive_msg = MessageBase::getMessageInstance($data);
if($receive_msg instanceof EventSubscribe ||
$receive_msg instanceof EventScan){
$success_msg = new MessageText;
$success_msg->ToUserName = $receive_msg->FromUserName;
$success_msg->FromUserName = $receive_msg->ToUserName;
$success_msg->CreateTime = time();
if($receive_msg->Ticket){
//公众号扫码成功
} else {
//公众号扫码订阅成功
}
}
use LFPhp\WechatSdk\Service\Auth;
$app_id = ''; //请填入 2.2 中获取的【开发者ID(AppID)】
$app_secrect = ''; //请填入 2.2 中获取的【开发者密码(AppSecret)】
list($access_token, $expires) = Auth::getAccessToken($app_id, $app_secrect);
//todo 应用需要保存 $access_token 到本地
use LFPhp\WechatSdk\Service\JSAuth;
$app_id = ''; //请填入 2.2 中获取的【开发者ID(AppID)】
$app_secrect = ''; //请填入 2.2 中获取的【开发者密码(AppSecret)】
list($ticket, $expires) = JSAuth::getJsTicket($app_id, $app_secrect);
//todo 应用需要保存 $ticket 到本地
use LFPhp\WechatSdk\Service\PageAuth;
$app_id = ''; //请填入 2.2 中获取的【开发者ID(AppID)】
$app_secrect = ''; //请填入 2.2 中获取的【开发者密码(AppSecret)】
$code = $_GET['code']; //微信登录回调code
$page_access_token = PageAuth::getAccessToken($app_id, $app_secret, $code);
use LFPhp\WechatSdk\Base\AuthorizedService;
use LFPhp\WechatSdk\Service\QRCode;
$access_token = ''; //读取 4.1 中本地保存的 access_token
//初始化需要鉴权的服务
//需要鉴权类的服务调用前都必须初始化access_token信息
AuthorizedService::setAccessToken($access_token);
$info = QRCode::createTemporaryQRCode($scene);
//打印二维码图像地址
var_dump($info['qrcode_url']);
//输出到html中:
echo '<img src="'.$info['qrcode_url'].'"/>';
/**
* 判断浏览器在微信中
* @return bool
*/
function in_wechat(){
return !!preg_match('/MicroMessenger/i', $_SERVER['HTTP_USER_AGENT']) && !in_wework();
}
/**
* 判断浏览器在企业微信中
* @return bool
*/
function in_wework(){
return !!preg_match('/wxwork/i', $_SERVER['HTTP_USER_AGENT']);
}
if(in_wechat()){
//处于微信环境,继续处理登录逻辑【3】
}
use LFPhp\WechatSdk\Service\PageAuth;
use function LFPhp\Func\http_redirect;
use function LFPhp\Func\http_get_current_page_url;
$app_id = ''; //请填入 2.2 中获取的【开发者ID(AppID)】
$AUTH_SCOPE = PageAuth::SCOPE_BASE; //设置为获取用户基本信息(只有openid,静默授权)
$state = ''; //填入自定义透传变量
//回调页面地址,可以自行指定需要实现回调逻辑的页面地址。如果是和跳出页面同一个,需要处理好入口分支逻辑。
$callback_url = http_get_current_page_url();
$login_url = PageAuth::getAuthUrl($app_id, $callback_url, $AUTH_SCOPE, $state);
//页面跳转到微信鉴权页面
http_redirect($login_url);
use LFPhp\WechatSdk\Service\PageAuth;
$app_id = ''; //请填入 2.2 中获取的【开发者ID(AppID)】
$app_secrect = ''; //请填入 2.2 中获取的【开发者密码(AppSecret)】
$state = ''; //这里state为【3】中填入的透传变量,如果没有设置可以不用判断
$code = $_GET['code'];
//简单判断是否为合法微信回调
if($_GET['state'] == $state && $code){
//获取页面access token信息
$page_access_token_info = PageAuth::getAccessToken($app_id, $app_secret, $code);
$open_id = $page_access_token_info['openid'];
//如果登录SCOPE为userinfo,拉取更多用户信息,否则没有更多用户信息
$wechat_user_info = [];
if($scope === PageAuth::SCOPE_USERINFO){
$wechat_user_info = PageAuth::getSnsUserInfo($page_access_token_info['access_token'], $open_id);
}
//【7】todo 业务代码自行实现登录逻辑
login_by_open_id($open_id);
//登录成功,接下来可以选择跳转回业务首页,或者业务自定义处理逻辑
}
use LFPhp\WechatSdk\Service\JSAuth;
use function LFPhp\Func\http_get_current_page_url;
$app_id = ''; //请填入 2.2 中获取的【开发者ID(AppID)】
//请填入 4.2 存储的有效 js_ticket
$js_ticket = '';
//快速计算前端初始化相关信息
$config_info = JSAuth::generateJsSignatureSimple($js_ticket, http_get_current_page_url());