// +---------------------------------------------------------------------- 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'); } }