123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326 |
- <?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');
- }
- }
|