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.
 
 
 
 
 
 
shipin/crmeb/services/easywechat/Open3rd/ProgramOpen3rd.php

326 lines
9.2 KiB

<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace crmeb\services\easywechat\open3rd;
/**
* Class ProgramWechatLive
* @package crmeb\services\wechatlive
*/
class ProgramOpen3rd
{
/**
* @var AccessToken
*/
protected $accessToken;
/**
* 预授权码
*/
const PRE_AUTH_CODE = 'https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode';
/**
* 获取授权方的帐号基本信息
*/
const GET_AUTHORIZER_INFO = 'https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_info';
/**
* 获取体验真列表
*/
const MEMBER_AUTH_LIST = 'https://api.weixin.qq.com/wxa/memberauth';
/**
* 绑定体验者
*/
const BIND_MEMBER_AUTH = 'https://api.weixin.qq.com/wxa/bind_tester';
/**
* 解除绑定体验者
*/
const UNBIND_MEMBER_AUTH = 'https://api.weixin.qq.com/wxa/unbind_tester';
/**
* 获取代码草稿列表
*/
const DRAFT_LIST = 'https://api.weixin.qq.com/wxa/gettemplatedraftlist';
/**
* 将草稿添加到代码模板库
*/
const ADD_TO_TEMPLATE = 'https://api.weixin.qq.com/wxa/addtotemplate';
/**
* 获取代码模版列表
*/
const TEMPLATE_LIST = 'https://api.weixin.qq.com/wxa/gettemplatelist';
/**
* 删除指定代码模版
*/
const DEL_TEMPLATE = 'https://api.weixin.qq.com/wxa/deletetemplate';
/**
* 上传代码
*/
const COMMIT = 'https://api.weixin.qq.com/wxa/commit';
/**
* 获取已上传的代码页面列表
*/
const GET_PAGE = 'https://api.weixin.qq.com/wxa/get_page';
/**
* 获取体验二维码
*/
const GET_QRCODE = 'https://api.weixin.qq.com/wxa/get_qrcode';
/**
* 代码提交审核
*/
const SUBMIT_AUDIT = 'https://api.weixin.qq.com/wxa/submit_audit';
/**
* 查询指定版本审核状态
*/
const GET_AUDIT_STATUS = 'https://api.weixin.qq.com/wxa/get_auditstatus';
/**
* 查询最近一次提交审核状态
*/
const GET_LATEST_AUDIT_STATUS = 'https://api.weixin.qq.com/wxa/get_latest_auditstatus';
/**
* 撤回审核
*/
const UNDO_CODE_AUDIT = 'https://api.weixin.qq.com/wxa/undocodeaudit';
/**
* 发布已经通过审核的小程序
*/
const RELEASE = 'https://api.weixin.qq.com/wxa/release';
/**
* 分阶段发布
*/
const GRAY_RELEASE = 'https://api.weixin.qq.com/wxa/grayrelease';
/**
* 版本回退
*/
const REVERT_CODE_RELEASE = 'https://api.weixin.qq.com/wxa/revertcoderelease';
/**
* ProgramOpen3rd constructor.
* @param AccessToken $accessToken
*/
public function __construct(AccessToken $accessToken)
{
$this->accessToken = $accessToken;
$this->config = $accessToken->getConfig();
}
/**
* 获取预授权码
* @return array|bool|mixed
*/
public function getPreAuthCode()
{
return $this->accessToken->httpRequest(self::PRE_AUTH_CODE, [], false);
}
/**
* 获取授权
* @param $authorization_code
* @return authorizer_appid
*/
public function getAuth($authorization_code)
{
return $this->accessToken->getAuthorizationInfo($authorization_code);
}
/**
* 获取授权方帐号基本信息
* @param $authorizer_appid
* @return array|bool|mixed
*/
public function getAuthorizerinfo(string $authorizer_appid)
{
return $this->accessToken->httpRequest(self::GET_AUTHORIZER_INFO, ['authorizer_appid' => $authorizer_appid], false);
}
/**
* 获取授权体验者列表
* @return array|bool|mixed
*/
public function getMemberAuthList()
{
return $this->accessToken->httpRequest(self::MEMBER_AUTH_LIST, ['action' => 'get_experiencer']);
}
/**
* 绑定体验者
* @param string $wechatid
* @return array|bool|mixed
*/
public function bindMemberAuth(string $wechatid)
{
return $this->accessToken->httpRequest(self::BIND_MEMBER_AUTH, ['wechatid' => $wechatid]);
}
/**
* 解除绑定体验者
* @param string $wechatid
* @param string $userstr
* @return array|bool|mixed
*/
public function unBindMemberAuth(string $wechatid, string $userstr = '')
{
$data = ['wechatid' => $wechatid];
if ($userstr) $data['userstr'] = $userstr;
return $this->accessToken->httpRequest(self::UNBIND_MEMBER_AUTH, $data);
}
/**
* 获取草稿列表
* @return array|bool|mixed
*/
public function getDraftList()
{
return $this->accessToken->httpRequest(self::DRAFT_LIST);
}
/**
* 将草稿添加到代码模版
* @param $draft_id
* @return array|bool|mixed
*/
public function addToTemplate($draft_id)
{
return $this->accessToken->httpRequest(self::ADD_TO_TEMPLATE, ['draft_id' => $draft_id]);
}
/**
* 获取代码模版列表
* @return array|bool|mixed
*/
public function getTemplateList()
{
return $this->accessToken->httpRequest(self::TEMPLATE_LIST);
}
/**
* 删除指定模版
* @param $template_id
* @return array|bool|mixed
*/
public function delTemplate($template_id)
{
return $this->accessToken->httpRequest(self::DEL_TEMPLATE, ['template_id' => $template_id]);
}
/**
* 代码上传
* @param $template_id
* @param string $ext_json
* @param string $user_version
* @param string $user_desc
* @return array|bool|mixed
*/
public function commit($template_id, string $ext_json, string $user_version, string $user_desc = '')
{
return $this->accessToken->httpRequest(self::COMMIT, ['template_id' => $template_id, 'ext_json' => $ext_json, 'user_version' => $user_version, 'user_desc' => $user_desc]);
}
/**
* 获取已上传代码列表
* @return array|bool|mixed
*/
public function getPage()
{
return $this->accessToken->httpRequest(self::GET_PAGE, []);
}
/**
* 获取体验二维码
* @return array|bool|mixed
*/
public function getQrcode($path = '')
{
return $this->accessToken->httpRequest(self::GET_QRCODE, ['path' => $path], true, 'GET');
}
/**
* 提交审核
* @param array $data
* @param data = [
* 'item_list' => [],//审核项列表(选填,至多填写 5 项)
* 'preview_info' => (object)[],//预览信息(小程序页面截图和操作录屏)
* 'version_desc' => '',//小程序版本说明和功能解释
* 'feedback_info' => '',//反馈内容,至多 200 字
* 'feedback_stuff' => '',//用 | 分割的 media_id 列表,至多 5 张图片, 可以通过新增临时素材接口上传而得到
* 'ugc_declare' => (object)[],//用户生成内容场景(UGC)信息安全声明
* ];
* @return array|bool|mixed
*/
public function submitAudit($data = [])
{
$base = [
'item_list' => [],
'preview_info' => (object)[],
'version_desc' => '',
'feedback_info' => '',
'feedback_stuff' => '',
'ugc_declare' => (object)[],
];
$data = array_merge($base, $data);
return $this->accessToken->httpRequest(self::SUBMIT_AUDIT, $data);
}
/**
* 查询指定版本的审核状态
* @param string $auditid
* @return array|bool|mixed
*/
public function getAuditStatus(string $auditid)
{
return $this->accessToken->httpRequest(self::GET_AUDIT_STATUS, ['auditid' => $auditid]);
}
/**
* 获取最后一次提交审核状态
* @return array|bool|mixed
*/
public function getLatestAuditStatus()
{
return $this->accessToken->httpRequest(self::GET_LATEST_AUDIT_STATUS, [], true, 'GET');
}
/**
* 审核撤回
* @return array|bool|mixed
*/
public function undoAudit()
{
return $this->accessToken->httpRequest(self::UNDO_CODE_AUDIT, [], true, 'GET');
}
/**
* 发布已通过审核小程序
* @return array|bool|mixed
*/
public function release()
{
return $this->accessToken->httpRequest(self::RELEASE);
}
/**
* 分阶段发布
* @param int $gray_percentage 1-100整数
* @return mixed
*/
public function grayRelease(int $gray_percentage)
{
return $this->accessToken->httpRequest(self::GRAY_RELEASE, ['gray_percentage' => $gray_percentage]);
}
/**
* 版本回退
* @return array|bool|mixed
*/
public function revertCodeRelease()
{
return $this->accessToken->httpRequest(self::REVERT_CODE_RELEASE, [], true, 'GET');
}
}