89 lines
3.1 KiB
PHP
89 lines
3.1 KiB
PHP
<?php
|
|
namespace hema\wechat;
|
|
|
|
use app\applet\model\Setting as SettingModel;
|
|
use app\applet\model\User as UserModel;
|
|
use app\common\model\Setting;
|
|
use app\common\model\Applet;
|
|
use app\common\model\Wechat;
|
|
use Requests;
|
|
use think\facade\Cache;
|
|
use hema\Http;
|
|
|
|
class Index
|
|
{
|
|
private $config;
|
|
private $error;
|
|
/**
|
|
* 构造函数
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$value = Setting::getItem('wxopen');
|
|
$value['component_access_token'] = Cache::get('component_access_token','');
|
|
$this->config = $value;
|
|
|
|
}
|
|
|
|
|
|
public function index()
|
|
{
|
|
|
|
//接收微信推送数据
|
|
$nonce = empty ( $_GET ['nonce'] ) ?"" : trim ( $_GET ['nonce'] );
|
|
$signature = empty ( $_GET['signature'] ) ? "" : trim ( $_GET ['signature'] );
|
|
$timeStamp = empty ( $_GET ['timestamp']) ? "" : trim ( $_GET ['timestamp'] );
|
|
$msg_signature = empty ( $_GET['msg_signature'] ) ? "" : trim ( $_GET ['msg_signature'] );
|
|
$encryptMsg = file_get_contents ('php://input' );
|
|
$pc = new WxBizMsgCrypt();//创建解密类
|
|
$msg = '';
|
|
$errCode = $pc->decryptMsg($msg_signature, $timeStamp, $nonce, $encryptMsg, $msg);
|
|
if($errCode == 0){
|
|
$data = _xml_to_arr($msg); //XML转换为数组
|
|
|
|
//首次关注公众号
|
|
if($data['MsgType']=='event'){
|
|
if($data['Event']=='subscribe'){
|
|
$wx = new Driver;
|
|
if($wechat_user = $wx->getWechatUserInfo($data['FromUserName'],10001)){
|
|
//用户操作
|
|
$model = new UserModel;
|
|
if($user = $model->subscribe($wechat_user,$this->wechat['applet_id'])){
|
|
if($this->wechat['applet_id'] == 0){
|
|
$wx->sendServiceMsg([
|
|
'type' => 'text',
|
|
'content' => '请妥善保管您的账号和密码~账号:' . $user['user_name'] . ',密码:' .$user['password'] . ',如忘记回复“找回账号”找回~'
|
|
],$data['FromUserName'],$this->wechat['applet_id']);
|
|
}
|
|
}
|
|
if(isset($data['Ticket']) and $data['EventKey'] == 'qrscene_login'){
|
|
//扫码关注公众号
|
|
Cache::set($data['Ticket'],$wechat_user,3600);
|
|
}
|
|
}else{
|
|
//返回文本提醒
|
|
$wx->sendServiceMsg([
|
|
'type' => 'text',
|
|
'content' => $wx->getError()
|
|
],$data['FromUserName'],$this->wechat['applet_id']);
|
|
}
|
|
//是否设置了关注回复
|
|
if($subscribe = SettingModel::getItem('subscribe',$this->wechat['applet_id'])){
|
|
$this->replyMsg($subscribe,$data);//回复信息
|
|
}
|
|
die('success');
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} |