<?phpnamespace app\common\lib\built;use app\platform\model\AppletGrant;/*** 微信小程序类文件* 公开属性* 微信小程序类文件返回统一格式['status'=>'0失败  1成功','message'=>'提示语','data'=>'结果']* Class WxApplet* [* release 发布已通过审核的小程序* bindUser 绑定微信用户为体验者* modifyDomain 设置服务器域名* auditStatus 查询指定发布审核单的审核状态* latestAuditStatus 查询最新一次提交的审核状态* undoCodeAudit 小程序审核撤回* submitAudit 提交审核* commit 上传小程序代码并生成体验版* getQRCode 获取体验版二维码* getCategory 获取审核时可填写的类目信息* getPage 获取已上传的代码的页面列表* privacySetting 配置小程序用户隐私保护指引* setWebViewDomain 设置小程序业务域名* getAccessToken 获取或刷新接口调用令牌* ]* @package app\common\lib\built*/
class WxApplet
{public $platform_applet_config; //平台小程序配置信息protected $platform_id; //平台idprotected $request;public function __construct($platform_id){$where = [['platform_id', '=', $platform_id]];$fields = ['authorizer_appid','authorizer_access_token','access_token_time','authorizer_refresh_token','user_desc','tag'];$AppletGrantModel = new AppletGrant();$this->platform_applet_config = $AppletGrantModel->getFindField($where, $fields);if (empty($this->platform_applet_config)) {echo json_encode(callBack('error', 'param_error', '小程序未授权'), JSON_UNESCAPED_UNICODE);die();}$this->platform_id = $platform_id;$this->request = new ThirdRequest();$this->getAccessToken(); //获取令牌}//发布已通过审核的小程序public function release(){$url = "https://api.weixin.qq.com/wxa/release?access_token=" . $this->platform_applet_config['authorizer_access_token'];$result = $this->request->curlPostRaw($url, "{}");$result = json_decode($result, true);if ($result['errcode'] != 0) {return callBack('error', 'param_error', '发布小程序失败' . $result['errmsg']);}return callBack('success', 'success', '发布成功');}/*** 绑定微信用户为体验者* @param $wx_number  微信号* @return array*/public function bindUser($wx_number){$url = "https://api.weixin.qq.com/wxa/bind_tester?access_token=" . $this->platform_applet_config['authorizer_access_token'];$data = ['wechatid' => $wx_number,];$result = $this->request->curlPostRaw($url, json_encode($data));$result = json_decode($result, true);if ($result['errcode'] != 0) {return callBack('error', 'param_error', '绑定失败' . $result['errmsg'], $result);}return callBack('success', 'success', '绑定成功');}/*** 设置服务器域名* @param $domain_name* @return array*/public function modifyDomain($domain_name){$url = "https://api.weixin.qq.com/wxa/modify_domain?access_token=" . $this->platform_applet_config['authorizer_access_token'];$data = ["action" => "add","requestdomain" => ["https://" . $domain_name],"uploaddomain" => ["https://" . $domain_name],"downloaddomain" => ["https://" . $domain_name],];$result = $this->request->curlPostRaw($url, json_encode($data, JSON_UNESCAPED_SLASHES));$result = json_decode($result, true);if ($result['errcode'] != 0 && $result['errcode'] != 85017) {return callBack('error', 'param_error', '设置服务器域名失败' . $result['errmsg']);}return callBack('success', 'success', '设置服务器域名成功');}//查询指定发布审核单的审核状态public function auditStatus($audit_id){$data = ['auditid' => $audit_id,];$url = "https://api.weixin.qq.com/wxa/get_auditstatus?access_token=" . $this->platform_applet_config['authorizer_access_token'];$result = $this->request->curlPostRaw($url, json_encode($data));$result = json_decode($result, true);if ($result['errcode'] != 0) {return callBack('error', 'param_error', '指定版本审核状态查询失败' . $result['errmsg']);}return callBack('success', 'success', '查询成功', $result);}//查询最新一次提交的审核状态public function latestAuditStatus(){$url = "https://api.weixin.qq.com/wxa/get_latest_auditstatus?access_token=" . $this->platform_applet_config['authorizer_access_token'];$result = $this->request->curlGet($url);$result = json_decode($result, true);if ($result['errcode'] != 0) {return callBack('error', 'param_error', '查询最新一次提交的审核状态失败' . $result['errmsg']);}return callBack('success', 'success', '查询成功', $result);}//小程序审核撤回public function undoCodeAudit(){$url = "https://api.weixin.qq.com/wxa/undocodeaudit?access_token=" . $this->platform_applet_config['authorizer_access_token'];$result = $this->request->curlGet($url);$result = json_decode($result, true);if ($result['errcode'] != 0) {return callBack('error', 'param_error', '撤销审核失败' . $result['errmsg'], $result);} else {return callBack('success', 'success', '撤销审核成功');}}/*** 提交审核* @param $data* @return array*/public function submitAudit($data){$url = 'https://api.weixin.qq.com/wxa/submit_audit?access_token=' . $this->platform_applet_config['authorizer_access_token'];$result = $this->request->curlPostRaw($url, json_encode($data, JSON_UNESCAPED_UNICODE));$result = json_decode($result, true);if ($result['errcode'] != 0) {return callBack('error', 'param_error', '提交审核失败');}return callBack('success', 'success', '提交审核成功', $result['auditid']);}/*** 上传小程序代码并生成体验版* @param $template_id 模板id* @return array*/public function commit($template_id){$domain = 'https://' . config('super.domain_name');$platform_id = $this->platform_id;$authorizer_appid = $this->platform_applet_config['authorizer_appid'];$data = ['template_id' => $template_id,"user_version" => "V" . $template_id,'ext_json' => "{\"extEnable\":true,\"extAppid\": \"$authorizer_appid\",\"ext\":{\"platform_id\":\"$platform_id\",\"appid\":\"$authorizer_appid\",\"domain\":\"$domain\"}}","user_desc" => $this->platform_applet_config['user_desc'],];$url = "https://api.weixin.qq.com/wxa/commit?access_token=" . $this->platform_applet_config['authorizer_access_token'];$result = $this->request->curlPostRaw($url, json_encode($data, JSON_UNESCAPED_UNICODE));$result = json_decode($result, true);if ($result['errcode'] != 0) {return callBack('error', 'param_error', '上传失败', $result);}return callBack('success', 'success', '上传成功', $result);}//获取体验版二维码public function getQRCode(){$url = "https://api.weixin.qq.com/wxa/get_qrcode?access_token=" . $this->platform_applet_config['authorizer_access_token'];$result = $this->request->curlGet($url);if (($result['errcode'] ?? 0) != 0) {return callBack('error', 'param_error', '获取体验版二维码失败', $result);}return callBack('success', 'success', '获取成功', $result);}//获取审核时可填写的类目信息public function getCategory(){$url = "https://api.weixin.qq.com/wxa/get_category?access_token=" . $this->platform_applet_config['authorizer_access_token'];$result = $this->request->curlGet($url);$result = json_decode($result, true);if ($result['errcode'] != 0) {return callBack('error', 'param_error', '获取授权小程序帐号的可选类目:' . $result['errmsg'], $result);} else {return callBack('success', 'success', '获取成功', $result['category_list']);}}//获取已上传的代码的页面列表public function getPage(){$url = 'https://api.weixin.qq.com/wxa/get_page?access_token=' . $this->platform_applet_config['authorizer_access_token'];$result = $this->request->curlGet($url);$result = json_decode($result, true);if ($result['errcode'] != 0) {return callBack('error', 'param_error', '获取小程序的第三方提交代码的页面配置接口错误' . $result['errmsg'], $result);} else {return callBack('success', 'success', '获取成功', $result['page_list']);}}/*** 配置小程序用户隐私保护指引* @param $param* [* owner_setting 收集方(开发者)信息配置* setting_list 要收集的用户信息配置,可选择的用户信息类型参考下方详情* ]* @return array*/public function privacySetting($param){$url = 'https://api.weixin.qq.com/cgi-bin/component/setprivacysetting?access_token=' . $this->platform_applet_config['authorizer_access_token'];$param = ['owner_setting' => $param['owner_setting'],'setting_list' => $param['setting_list']];$result = $this->request->curlPostRaw($url, json_encode($param));$result = json_decode($result, true);if ($result['errcode'] != 0) {return callBack('error', 'param_error', '设置失败' . $result['errmsg']);}return callBack('success', 'success', '设置成功');}//设置小程序业务域名public function setWebViewDomain($domain_name){$url = "https://api.weixin.qq.com/wxa/setwebviewdomain?access_token=" . $this->platform_applet_config['authorizer_access_token'];$data = ['action' => 'add','webviewdomain' => ['https://' . $domain_name]];$data = json_encode($data);$result = $this->request->curlPostRaw($url, $data);$result = json_decode($result, true);if ($result['errcode'] != 0) {return callBack('error', 'param_error', '小程序业务域名设置失败');}return callBack('success', 'success', '设置成功');}//获取或刷新接口调用令牌public function getAccessToken(){if ($this->platform_applet_config['access_token_time'] < time() || empty($this->platform_applet_config['authorizer_access_token'])) {//令牌过期获取新令牌//获取开放平台接口调用令牌$WxOpenPlatformClass = new WxOpenPlatform();$url = 'https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token=' . $WxOpenPlatformClass->open_platform_config['component_access_token'];$data = ['component_appid' => $WxOpenPlatformClass->open_platform_config['component_appid'],'authorizer_appid' => $this->platform_applet_config['authorizer_appid'],'authorizer_refresh_token' => $this->platform_applet_config['authorizer_refresh_token']];$data = json_encode($data);$result = $this->request->curlPostRaw($url, $data);file_put_contents('./z2.txt', $result);$result = json_decode($result, true);if (empty($result['authorizer_access_token'])) {echo json_encode(callBack('error', 'param_error', '调用微信接口令牌刷新失败' . $result['errmsg']), JSON_UNESCAPED_UNICODE);die();}$content = ['authorizer_access_token' => $result['authorizer_access_token'],'authorizer_refresh_token' => $result['authorizer_refresh_token'],'access_token_time' => time() + $result['expires_in'] - 200];$where = [['platform_id', '=', $this->platform_id]];$AppletGrantModel = new AppletGrant();$AppletGrantModel->updateInfo($where, $content);$this->platform_applet_config['authorizer_access_token'] = $result['authorizer_access_token'];}}
}

小程序授权第三方平台相关推荐

  1. 小程序授权第三方管理开发的流程

    第三方平台帮助旗下已授权的小程序进行代码管理时,需先开发完成小程序模版,再将小程序模版部署到旗下小程序帐号中,具体流程如下: 第一步:绑定开发小程序 (1)第三方平台的开发人员需先到微信公众平台(mp ...

  2. 微信小程序 申请第三方平台流程

    为什么80%的码农都做不了架构师?>>>    准备 一.https://open.weixin.qq.com 注册开放平台账号 二.申请开发着资质 三.创建第三方平台 1.输入基本 ...

  3. JeewxBoot微信管家平台 支持微信公众号/小程序/微信第三方平台/抽奖活动等

    JeewxBoot是一款免费的JAVA微信管家平台,支持微信公众号.小程序.微信第三方平台.抽奖活动等.JeewxBoot已经实现了系统权限管理.公众号管理.抽奖活动等基础功能,便于二次开发,可以快速 ...

  4. 微信小程序授权_微信小程序授权验证码什么意思

    首先,最先要进行的便是运行微信软件,然后在软件的主界面中,找到"发现"这一功能项目.1.点击"发现"界面之后,会看到一个"游戏中心"的选项, ...

  5. 微信 第三方开放平台 获取小程序授权并绑定小程序到开放平台(都是坑,留下帮助后人) 一

    接到需求,开发第三方平台的API对接,开始躺坑之路 第一步:获取小程序授权 看看官方给的流程图 OK,想获取授权就得获取 预授权码 看看预授权吧!! OK,想获取预授权码就得获取 令牌  OK OK  ...

  6. NO.2 微信第三方平台(小程序)授权流程技术说明

    官方文档 最好先熟悉以上文档 正文: 1: 授权流程 1.推送component_verify_ticket协议 在第三方平台创建审核通过后,微信服务器会向其"授权事件接收URL" ...

  7. 微信开放平台:小程序代码模板库管理 小程序授权 版本发布,版本回退 java代码实现

    一.业务场景: 小程序运营者,可以一键授权给第三方平台,通过第三方平台来完成代公众号和代小程序等业务,本文主要介绍代小程序业务实现步骤. 二.代开发的具体流程: 第三方平台帮已授权的小程序进行代码管理 ...

  8. 微信开放平台绑定各移动应用、网站应用、公众号、小程序、第三方的个数

    微信开放平台绑定各移动应用.网站应用.公众号.小程序.第三方的个数 目前没有在微信的文档中找到过具体的数字,只能真正的登录到后台,并且已经认证了的才能看的到.认证需要300元/年. 很多人都不知道具体 ...

  9. 微信小程序接入第三方插件腾讯位置服务地图选点

    微信小程序接入第三方插件腾讯位置服务地图选点 1.在小程序服务平台中添加"腾讯位置服务地图选点"插件 1.在小程序服务平台中添加"腾讯位置服务地图选点"插件 微 ...

最新文章

  1. 转:android实时语音问题分析
  2. Spring Autowire自动装配
  3. [剑指offer] 替换空格
  4. 存储ic载板_延伸IC领域 崇达技术拟将持有普诺威55%股权
  5. 漫步数理统计十一——连续随机变量(下)
  6. rust 死后不知道家在哪_赌王儿子何猷君被嘲妈宝,求婚不知道戒指戴哪只手,大喊求助妈妈...
  7. 去掉快捷方式图标上的箭头
  8. java下高精度定时器库_高精度定时器的使用
  9. mysql 、慢查询、到底如何玩
  10. 乒乓球(Table Tennis)
  11. Ubuntu系统切换jdk版本
  12. python 安卓王者荣耀刷金币
  13. 网络攻防学习心得一(20159320)学习小结
  14. linux系统安装s3fs,利用s3fs 将 s3 bucket 挂载到Linux目录
  15. 正则——只能允许是汉字、拼音和数字的正则表达式
  16. C语言编程100题-5.8
  17. 姜还是老的辣:微软才是Android阵营的大赢家
  18. 2022电大国家开放大学网上形考任务-老年用药基本知识非免费(非答案)
  19. 【数字IC/FPGA】Wallace乘法器
  20. Dijkstra算法总结(C/C++)

热门文章

  1. AD怎么输入坐标_实名推荐|相见恨晚的CAD坐标提取技巧
  2. RGB与YCbCr颜色空间的转换
  3. cad.net 图层隐藏 IsHidden 用法 eDuplicateRecordName 报错
  4. 3DMAX 多维材质及对应的UVW展开,UVW贴图
  5. 理想评价鸿蒙系统,鸿蒙系统来了!前期如何发育?后期的潜力有多大?苹果真豁口了!...
  6. 二进制十进制十六进制转换_二进制数制到十进制数制的转换
  7. 各种抗锯齿效果的记录
  8. 奢华酒店品牌美高梅将入驻上海西岸;ClinChoice昆翎完成1.5亿美元融资 | 美通企业日报...
  9. gmail真心用不惯啊
  10. 技术人才的出路在哪里,5种选择和2种思路