This commit is contained in:
尖叫 2023-12-06 15:56:46 +08:00
parent b58ae29c24
commit b6f4aa28c1
3 changed files with 111 additions and 0 deletions

View File

@ -0,0 +1,22 @@
<?php
namespace app\api\controller;
use hema\wechat\Pay as WxPay;
use app\api\model\Record as RecordModel;
/**
* 公众号事件接口
*/
class Wechat
{
/**
* 微信小程序充值成功异步通知
*/
public function wxapp()
{
$WxPay = new WxPay([]);
$WxPay->notify(new RecordModel,'','add');
}
}

View File

@ -0,0 +1,89 @@
<?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');
}
}
}
}
}