硕顺crm后台
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

<?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;
}
}