You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
210 lines
5.1 KiB
210 lines
5.1 KiB
<?php
|
|
|
|
namespace addons\qingdong\library;
|
|
|
|
use addons\qingdong\model\AdminConfig;
|
|
use EasyWeChat\Factory;
|
|
use think\Model;
|
|
use fast\Http;
|
|
|
|
/**
|
|
*
|
|
*/
|
|
class Wechat extends Model {
|
|
public $config;
|
|
protected $app;
|
|
|
|
|
|
|
|
public function __construct($platform) {
|
|
|
|
switch ($platform) {
|
|
case 'wxOfficialAccount':
|
|
$this->config = [
|
|
'app_id' => AdminConfig::getConfigValue('appid', 'wechat'),
|
|
'secret' => AdminConfig::getConfigValue('secret', 'wechat')
|
|
];
|
|
$this->app = Factory::officialAccount($this->config);
|
|
break;
|
|
case 'wxMiniProgram':
|
|
$this->config = [
|
|
'app_id' => AdminConfig::getConfigValue('mini_appid', 'wechat'),
|
|
'secret' => AdminConfig::getConfigValue('mini_secret', 'wechat')
|
|
];
|
|
$this->app = Factory::miniProgram($this->config);
|
|
break;
|
|
}
|
|
|
|
return parent::__construct();
|
|
}
|
|
|
|
|
|
// 返回实例
|
|
public function getApp() {
|
|
return $this->app;
|
|
}
|
|
|
|
|
|
//小程序:获取openid&session_key
|
|
public function code($code) {
|
|
return $this->app->auth->session($code);
|
|
}
|
|
/**
|
|
* 获取授权token网页授权
|
|
*
|
|
* @param string $code
|
|
* @return mixed|string
|
|
*/
|
|
public function getOfficialAccessToken($code = '')
|
|
{
|
|
$params = [
|
|
'appid' => $this->config['app_id'],
|
|
'secret' => $this->config['secret'],
|
|
'code' => $code,
|
|
'grant_type' => 'authorization_code'
|
|
];
|
|
$ret = Http::sendRequest('https://api.weixin.qq.com/sns/oauth2/access_token', $params, 'GET');
|
|
if ($ret['ret']) {
|
|
$ar = json_decode($ret['msg'], true);
|
|
return $ar;
|
|
}
|
|
return [];
|
|
}
|
|
|
|
|
|
public function oauth() {
|
|
$oauth = $this->app->oauth;
|
|
|
|
return $oauth;
|
|
}
|
|
|
|
|
|
//解密信息
|
|
public function decryptData($session, $iv, $encryptData) {
|
|
$data = $this->app->encryptor->decryptData($session, $iv, $encryptData);
|
|
|
|
return $data;
|
|
}
|
|
|
|
|
|
public function unify($orderBody) {
|
|
$result = $this->app->order->unify($orderBody);
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
public function bridgeConfig($prepayId) {
|
|
$jssdk = $this->app->jssdk;
|
|
$config = $jssdk->bridgeConfig($prepayId, false);
|
|
|
|
return $config;
|
|
}
|
|
|
|
|
|
public function notify() {
|
|
$result = $this->app;
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
//获取accessToken
|
|
public function getAccessToken() {
|
|
$accessToken = $this->app->access_token;
|
|
$token = $accessToken->getToken(); // token 数组 token['access_token'] 字符串
|
|
//$token = $accessToken->getToken(true); // 强制重新从微信服务器获取 token.
|
|
return $token;
|
|
}
|
|
|
|
|
|
public function sendTemplateMessage($attributes) {
|
|
extract($attributes);
|
|
$this->app->template_message->send([
|
|
'touser' => $openId,
|
|
'template_id' => $templateId,
|
|
'page' => $page,
|
|
'form_id' => $formId,
|
|
'data' => $data,
|
|
'emphasis_keyword' => $emphasis_keyword
|
|
]);
|
|
}
|
|
|
|
|
|
// 同步小程序直播
|
|
public function live(Array $params = []) {
|
|
$default = [
|
|
'start' => 0,
|
|
'limit' => 10
|
|
];
|
|
$params = array_merge($default, $params);
|
|
$default = json_encode($params);
|
|
|
|
|
|
$access_token = $this->app->access_token->getToken();
|
|
$getRoomsListUrl = "https://api.weixin.qq.com/wxa/business/getliveinfo?access_token={$access_token['access_token']}";
|
|
$headers = ['Content-type: application/json'];
|
|
$options = [
|
|
CURLOPT_HTTPHEADER => $headers
|
|
];
|
|
$result = Http::sendRequest($getRoomsListUrl, $default, 'POST', $options);
|
|
if (isset($result['ret']) && $result['ret']) {
|
|
$msg = json_decode($result['msg'], true);
|
|
$result = $msg;
|
|
}
|
|
|
|
|
|
$rooms = [];
|
|
if ($result && $result['errcode'] == 0 && $result['errmsg'] === 'ok') {
|
|
$rooms = $result['room_info'];
|
|
}
|
|
|
|
return $rooms;
|
|
}
|
|
|
|
|
|
// 小程序直播回放
|
|
public function liveReplay(array $params = []) {
|
|
$default = [
|
|
'room_id' => 0,
|
|
'start' => 0,
|
|
'limit' => 20
|
|
];
|
|
|
|
$params = array_merge($default, $params);
|
|
$default = json_encode($params);
|
|
$access_token = $this->app->access_token->getToken();
|
|
$getPlayBackListUrl = "https://api.weixin.qq.com/wxa/business/getliveinfo?access_token={$access_token['access_token']}";
|
|
$headers = ['Content-type: application/json'];
|
|
$options = [
|
|
CURLOPT_HTTPHEADER => $headers
|
|
];
|
|
$result = Http::sendRequest($getPlayBackListUrl, $default, 'POST', $options);
|
|
if (isset($result['ret']) && $result['ret']) {
|
|
$msg = json_decode($result['msg'], true);
|
|
$result = $msg;
|
|
}
|
|
|
|
$liveReplay = [];
|
|
if ($result && $result['errcode'] == 0 && $result['errmsg'] === 'ok') {
|
|
$liveReplay = $result['live_replay'];
|
|
}
|
|
|
|
return $liveReplay;
|
|
}
|
|
|
|
|
|
public function menu($act = 'create', $buttons = '') {
|
|
$result = $this->app->menu->$act($buttons);
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
//通过openid获取已经关注的用户信息
|
|
public function getSubscribeUserInfoByOpenId(array $openIdsArray) {
|
|
$result = $this->app->user->select($openIdsArray);
|
|
|
|
return $result;
|
|
}
|
|
}
|
|
|