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());