黔优媒体网-软文媒体自助发稿平台!
  1. 行业资讯
  2. 正文

终于整理出来了,用微信第三方平台授权小程序业务

来源:黔优媒体网   时间:2024-09-19

本文章是自己编写的,用微信第三方平台开发实现小程序业务,代码很全,每一步都有详细介绍,供大家学习参考。

第一步:申请微信开放平台帐号并创建第三方平台

第二步:公众号/小程序授权给第三方平台

 ?php
* 微信第三方平台授权流程
namespace app\home\controller;
class Weixin extends Common
 private $appid = #39;wx3e******165c #39;; //第三方平台应用appid
 private $appsecret = #39;13e**********d039 #39;; //第三方平台应用appsecret
 private $token = #39;ePF58******Q2Ae #39;; //第三方平台应用token(消息校验Token)
 private $encodingAesKey = #39;bzH***FCamD #39;; //第三方平台应用Key(消息加解密Key)
 private $component_ticket= #39;ticket@**xv-g #39;; //微信后台推送的ticket,用于获取第三方平台接口调用凭据
 * 扫码授权,注意此URL必须放置在页面当中用户点击进行跳转,不能通过程序跳转,否则将出现“请确认授权入口页所在域名,与授权后回调页所在域名相同....”错误
 * @params string $redirect_uri : 扫码成功后的回调地址
 * @params int $auth_type : 授权类型,1公众号,2小程序,3公众号/小程序同时展现。不传参数默认都展示 
 public function startAuth($redirect_uri,$auth_type = 3)
 $url = https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid= .$this- appid. pre_auth_code= .$this- get_pre_auth_code(). redirect_uri= .urlencode($redirect_uri). auth_type= .$auth_type;
 return $url;
 * 获取第三方平台access_token
 * 注意,此值应保存,代码这里没保存
 private function get_component_access_token()
 $url = https://api.weixin.qq.com/cgi-bin/component/api_component_token 
 $data = #39;{
 component_appid : #39;.$this- appid. #39; ,
 component_appsecret : #39;.$this- appsecret. #39; ,
 component_verify_ticket : #39;.$this- component_ticket. #39; 
 } #39;;
 $ret = json_decode($this- https_post($url,$data));
 if($ret- errcode == 0) {
 return $ret- component_access_token;
 } else {
 return $ret- errcode;
 * 第三方平台方获取预授权码pre_auth_code
 private function get_pre_auth_code()
 $url = https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token= .$this- get_component_access_token();
 $data = #39;{ component_appid : #39;.$this- appid. #39; } #39;;
 $ret = json_decode($this- https_post($url,$data));
 if($ret- errcode == 0) {
 return $ret- pre_auth_code;
 } else {
 return $ret- errcode;
 * 发起POST网络提交
 * @params string $url : 网络地址
 * @params json $data : 发送的json格式数据
 private function https_post($url,$data)
 $curl = curl_init();
 curl_setopt($curl, CURLOPT_URL, $url);
 if (!empty($data)){
 curl_setopt($curl, CURLOPT_POST, 1);
 curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 $output = curl_exec($curl);
 curl_close($curl);
 return $output;
 * 发起GET网络提交
 * @params string $url : 网络地址
 private function https_get($url)
 $curl = curl_init();
 curl_setopt($curl, CURLOPT_URL, $url);
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); 
 curl_setopt($curl, CURLOPT_HEADER, FALSE) ; 
 curl_setopt($curl, CURLOPT_TIMEOUT,60);
 if (curl_errno($curl)) {
 return #39;Errno #39;.curl_error($curl);
 else{$result=curl_exec($curl);}
 curl_close($curl);
 return $result;
}
 ?php
* 接收微信官方推送的ticket值以及取消授权等操作
namespace app\home\controller;
use think\Db;
class Openoauth extends Common
 private $appid = #39;wx3e******165c #39;; //第三方平台应用appid
 private $appsecret = #39;13e**********d039 #39;; //第三方平台应用appsecret
 private $token = #39;ePF58******Q2Ae #39;; //第三方平台应用token(消息校验Token)
 private $encodingAesKey = #39;bzH***FCamD #39;; //第三方平台应用Key(消息加解密Key)
 private $component_ticket= #39;ticket@**xv-g #39;; //微信后台推送的ticket,用于获取第三方平台接口调用凭据
 * 接收微信官方推送的消息(每10分钟1次)
 * 这里需要引入微信官方提供的加解密码示例包
 * 官方文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list t=resource/res_list verify=1 id=open1419318479 token= lang=zh_CN
 * 示例包下载:https://wximg.gtimg.com/shake_tv/mpwiki/cryptoDemo.zip
 public function index()
 $encryptMsg = file_get_contents( php://input 
 $xml_tree = new \DOMDocument();
 $xml_tree- loadXML($encryptMsg);
 $xml_array = $xml_tree- getElementsByTagName( Encrypt 
 $encrypt = $xml_array- item(0)- nodeValue;
 require_once( #39;wxBizMsgCrypt.php #39;);
 $Prpcrypt = new \Prpcrypt($this- encodingAesKey);
 $postData = $Prpcrypt- decrypt($encrypt, $this- appid);
 if ($postData[0] != 0) {
 return $postData[0];
 } else {
 $msg = $postData[1];
 $xml = new \DOMDocument();
 $xml- loadXML($msg);
 $array_a = $xml- getElementsByTagName( InfoType 
 $infoType = $array_a- item(0)- nodeValue;
 if ($infoType == unauthorized ) {
 //取消公众号/小程序授权
 $array_b = $xml- getElementsByTagName( AuthorizerAppid 
 $AuthorizerAppid = $array_b- item(0)- nodeValue; //公众号/小程序appid
 $where = array( type = 1, appid = $AuthorizerAppid);
 $save = array( authorizer_access_token = , authorizer_refresh_token = , authorizer_expires = 
 Db::name( wxuser )- where($where)- update($save); //公众号取消授权
 Db::name( wxminiprograms )- where( #39;authorizer_appid #39;,$AuthorizerAppid)- update($save); //小程序取消授权
 } else if ($infoType == component_verify_ticket ) {
 //微信官方推送的ticket值
 $array_e = $xml- getElementsByTagName( ComponentVerifyTicket 
 $component_verify_ticket = $array_e- item(0)- nodeValue;
 if (Db::name( weixin_account )- where(array( type = 1))- update(array( component_verify_ticket = $component_verify_ticket, date_time = time()))) {
 $this- updateAccessToken($component_verify_ticket);
 echo success 
 * 更新component_access_token
 * @params string $component_verify_ticket
 * */
 private function updateAccessToken($component_verify_ticket)
 $weixin_account = Db::name( #39;weixin_account #39;)- where([ #39;type #39;= 1])- field( #39;id,appId,appSecret,component_access_token,token_expires #39;)- find();
 if($weixin_account[ #39;token_expires #39;] = time() ) {
 $apiUrl = #39;https://api.weixin.qq.com/cgi-bin/component/api_component_token #39;;
 $data = #39;{ component_appid : #39;.$weixin_account[ #39;appId #39;]. #39; , component_appsecret : #39;.$weixin_account[ #39;appSecret #39;]. #39; , component_verify_ticket : #39;.$component_verify_ticket. #39; } #39;;
 $json = json_decode(_request($apiUrl,$data));
 if(isset($json- component_access_token)) {
 Db::name( #39;weixin_account #39;)- where([ #39;id #39;= $weixin_account[ #39;id #39;]])- update([ #39;component_access_token #39;= $json- component_access_token, #39;token_expires #39;= time()+7200]);
}
 ?php
* 代小程序实现业务
namespace app\home\model;
use think\Model;
use think\Db;
use think\Cache;
class Miniprogram extends Model
 private $thirdAppId; //开放平台appid
 private $encodingAesKey; //开放平台encodingAesKey
 private $thirdToken; //开放平台token
 private $thirdAccessToken; //开放平台access_token
 private $authorizer_appid;
 private $authorizer_access_token;
 private $authorizer_refresh_token;
 public function __construct($appid)
 $weixin_account = Db::name( #39;weixin_account #39;)- where([ #39;type #39; = 1])- field( #39;token,encodingAesKey,appId,component_access_token #39;)- find();
 if ($weixin_account) {
 $this- thirdAppId = $weixin_account[ #39;appId #39;];
 $this- encodingAesKey = $weixin_account[ #39;encodingAesKey #39;];
 $this- thirdToken = $weixin_account[ #39;token #39;];
 $this- thirdAccessToken = $weixin_account[ #39;component_access_token #39;];
 $miniprogram = Db::name( #39;wxminiprograms #39;)- where( #39;authorizer_appid #39;,$appid)
 - field( #39;authorizer_access_token,authorizer_refresh_token,authorizer_expires #39;)- find();
 if($miniprogram){
 $this- authorizer_appid = $appid;
 if(time() $miniprogram[ #39;authorizer_expires #39;]){
 $miniapp = $this- update_authorizer_access_token($appid,$miniprogram[ #39;authorizer_refresh_token #39;]);
 if($miniapp) {
 $this- authorizer_access_token = $miniapp- authorizer_access_token;
 $this- authorizer_refresh_token = $miniapp- authorizer_refresh_token;
 } else {
 $this- errorLog( 更新小程序access_token失败,appid: .$this- authorizer_appid, #39; #39;);
 exit;
 } else {
 $this- authorizer_access_token = $miniprogram[ #39;authorizer_access_token #39;];
 $this- authorizer_refresh_token = $miniprogram[ #39;authorizer_refresh_token #39;];
 } else {
 $this- errorLog( 小程序不存在,appid: .$this- authorizer_appid, #39; #39;);
 exit;
 } else {
 $this- errorLog( 请增加微信第三方公众号平台账户信息 , #39; #39;);
 exit;
 * 设置小程序服务器地址,无需加https前缀,但域名必须可以通过https访问
 * @params string / array $domains : 域名地址。只接收一维数组。
 * */
 public function setServerDomain($domain = #39;test.moh.cc #39;)
 $url = https://api.weixin.qq.com/wxa/modify_domain?access_token= .$this- authorizer_access_token;
 if(is_array($domain)) {
 $https = #39; #39;; $wss = #39; #39;;
 foreach ($domain as $key = $value) {
 $https .= #39; https:// #39;.$value. #39; , #39;;
 $wss .= #39; wss:// #39;.$value. #39; , #39;;
 $https = rtrim($https, #39;, #39;);
 $wss = rtrim($wss, #39;, #39;);
 $data = #39;{
 action : add ,
 requestdomain :[ #39;.$https. #39;],
 wsrequestdomain :[ #39;.$wss. #39;],
 uploaddomain :[ #39;.$https. #39;],
 downloaddomain :[ #39;.$https. #39;]
 } #39;;
 } else {
 $data = #39;{
 action : add ,
 requestdomain : https:// #39;.$domain. #39; ,
 wsrequestdomain : wss:// #39;.$domain. #39; ,
 uploaddomain : https:// #39;.$domain. #39; ,
 downloaddomain : https:// #39;.$domain. #39; 
 } #39;;
 $ret = json_decode(https_post($url,$data));
 if($ret- errcode == 0) {
 return true;
 } else {
 $this- errorLog( 设置小程序服务器地址失败,appid: .$this- authorizer_appid,$ret);
 return false;
 * 设置小程序业务域名,无需加https前缀,但域名必须可以通过https访问
 * @params string / array $domains : 域名地址。只接收一维数组。
 * */
 public function setBusinessDomain($domain = #39;test.moh.cc #39;)
 $url = https://api.weixin.qq.com/wxa/setwebviewdomain?access_token= .$this- authorizer_access_token;
 if(is_array($domain)) {
 $https = #39; #39;;
 foreach ($domain as $key = $value) {
 $https .= #39; https:// #39;.$value. #39; , #39;;
 $https = rtrim($https, #39;, #39;);
 $data = #39;{
 action : add ,
 webviewdomain :[ #39;.$https. #39;]
 } #39;;
 } else {
 $data = #39;{
 action : add ,
 webviewdomain : https:// #39;.$domain. #39; 
 } #39;;
 $ret = json_decode(https_post($url,$data));
 if($ret- errcode == 0) {
 return true;
 } else {
 $this- errorLog( 设置小程序业务域名失败,appid: .$this- authorizer_appid,$ret);
 return false;
 * 成员管理,绑定小程序体验者
 * @params string $wechatid : 体验者的微信号
 * */
 public function bindMember($wechatid)
 $url = https://api.weixin.qq.com/wxa/bind_tester?access_token= .$this- authorizer_access_token;
 $data = #39;{ wechatid : #39;.$wechatid. #39; } #39;;
 $ret = json_decode(https_post($url,$data));
 if($ret- errcode == 0) {
 return true;
 } else {
 $this- errorLog( 绑定小程序体验者操作失败,appid: .$this- authorizer_appid,$ret);
 return false;
 * 成员管理,解绑定小程序体验者
 * @params string $wechatid : 体验者的微信号
 * */
 public function unBindMember($wechatid)
 $url = https://api.weixin.qq.com/wxa/unbind_tester?access_token= .$this- authorizer_access_token;
 $data = #39;{ wechatid : #39;.$wechatid. #39; } #39;;
 $ret = json_decode(https_post($url,$data));
 if($ret- errcode == 0) {
 return true;
 } else {
 $this- errorLog( 解绑定小程序体验者操作失败,appid: .$this- authorizer_appid,$ret);
 return false;
 * 成员管理,获取小程序体验者列表
 * */
 public function listMember()
 $url = https://api.weixin.qq.com/wxa/memberauth?access_token= .$this- authorizer_access_token;
 $data = #39;{ action : get_experiencer } #39;;
 $ret = json_decode(https_post($url,$data));
 if($ret- errcode == 0) {
 return $ret- members;
 } else {
 $this- errorLog( 获取小程序体验者列表操作失败,appid: .$this- authorizer_appid,$ret);
 return false;
 * 为授权的小程序帐号上传小程序代码
 * @params int $template_id : 模板ID
 * @params json $ext_json : 小程序配置文件,json格式
 * @params string $user_version : 代码版本号
 * @params string $user_desc : 代码描述
 * */
 public function uploadCode($template_id = 1, $user_version = #39;v1.0.0 #39;, $user_desc = 魔盒CMS小程序模板库 )
 $ext_json = json_encode( #39;{ extEnable : true, extAppid : wx572****bfb , ext :{ appid : #39;.$this- authorizer_appid. #39; }} #39;);
 $url = https://api.weixin.qq.com/wxa/commit?access_token= .$this- authorizer_access_token;
 $data = #39;{ template_id : #39;.$template_id. #39; , ext_json : #39;.$ext_json. #39;, user_version : #39;.$user_version. #39; , user_desc : #39;.$user_desc. #39; } #39;;
 $ret = json_decode(https_post($url,$data));
 if($ret- errcode == 0) {
 return true;
 } else {
 $this- errorLog( 为授权的小程序帐号上传小程序代码操作失败,appid: .$this- authorizer_appid,$ret);
 return false;
 * 获取体验小程序的体验二维码
 * @params string $path : 指定体验版二维码跳转到某个具体页面
 * */
 public function getExpVersion($path = #39; #39;)
 if($path){
 $url = https://api.weixin.qq.com/wxa/get_qrcode?access_token= .$this- authorizer_access_token. path= .urlencode($path);
 } else {
 $url = https://api.weixin.qq.com/wxa/get_qrcode?access_token= .$this- authorizer_access_token;
 $ret = json_decode(https_get($url));
 if($ret- errcode) {
 $this- errorLog( 获取体验小程序的体验二维码操作失败,appid: .$this- authorizer_appid,$ret);
 return false;
 } else {
 return $url;
 * 提交审核
 * @params string $tag : 小程序标签,多个标签以空格分开
 * @params strint $title : 小程序页面标题,长度不超过32
 * */
 public function submitReview($tag = 魔盒CMS 微信投票 微网站 微信商城 ,$title = 魔盒CMS微信公众号营销小程序开发 )
 $first_class = #39; #39;;$second_class = #39; #39;;$first_id = 0;$second_id = 0;
 $address = pages/index/index 
 $category = $this- getCategory();
 if(!empty($category)) {
 $first_class = $category[0]- first_class ? $category[0]- first_class : #39; #39; ;
 $second_class = $category[0]- second_class ? $category[0]- second_class : #39; #39;;
 $first_id = $category[0]- first_id ? $category[0]- first_id : 0;
 $second_id = $category[0]- second_id ? $category[0]- second_id : 0;
 $getpage = $this- getPage();
 if(!empty($getpage) isset($getpage[0])) {
 $address = $getpage[0];
 $url = https://api.weixin.qq.com/wxa/submit_audit?access_token= .$this- authorizer_access_token;
 $data = #39;{
 item_list :[{
 address : #39;.$address. #39; ,
 tag : #39;.$tag. #39; ,
 title : #39;.$title. #39; ,
 first_class : #39;.$first_class. #39; ,
 second_class : #39;.$second_class. #39; ,
 first_id : #39;.$first_id. #39; ,
 second_id : #39;.$second_id. #39; 
 } #39;;
 $ret = json_decode(https_post($url,$data));
 if($ret- errcode == 0) {
 Db::name( #39;wxminiprogram_audit #39;)- insert([
 #39;appid #39;= $this- authorizer_appid,
 #39;auditid #39;= $ret- auditid,
 #39;create_time #39;= date( #39;Y-m-d H:i:s #39;)
 return true;
 } else {
 $this- errorLog( 小程序提交审核操作失败,appid: .$this- authorizer_appid,$ret);
 return false;
 * 小程序审核撤回
 * 单个帐号每天审核撤回次数最多不超过1次,一个月不超过10次。
 * */
 public function unDoCodeAudit()
 $url = https://api.weixin.qq.com/wxa/undocodeaudit?access_token= .$this- authorizer_access_token;
 $ret = json_decode(https_get($url));
 if($ret- errcode == 0) {
 return true;
 } else {
 $this- errorLog( 小程序审核撤回操作失败,appid: .$this- authorizer_appid,$ret);
 return false;
 * 查询指定版本的审核状态
 * @params string $auditid : 提交审核时获得的审核id
 * */
 public function getAuditStatus($auditid)
 $url = https://api.weixin.qq.com/wxa/get_auditstatus?access_token= .$this- authorizer_access_token;
 $data = #39;{ auditid : #39;.$auditid. #39; } #39;;
 $ret = json_decode(https_post($url,$data));
 if($ret- errcode == 0) {
 $reason = $ret- reason ? $ret- reason : #39; #39;;
 Db::name( #39;wxminiprogram_audit #39;)- where([ #39;appid #39;= $this- authorizer_appid, #39;auditid #39;= $auditid])- update([
 #39;status #39;= $ret- status,
 #39;reason #39;= $reason
 return true;
 } else {
 $this- errorLog( 查询指定版本的审核状态操作失败,appid: .$this- authorizer_appid,$ret);
 return false;
 * 查询最新一次提交的审核状态
 * */
 public function getLastAudit()
 $url = https://api.weixin.qq.com/wxa/get_latest_auditstatus?access_token= .$this- authorizer_access_token;
 $ret = json_decode(https_get($url));
 if($ret- errcode == 0) {
 $reason = $ret- reason ? $ret- reason : #39; #39;;
 Db::name( #39;wxminiprogram_audit #39;)- where([ #39;appid #39;= $this- authorizer_appid, #39;auditid #39;= $ret- auditid])- update([
 #39;status #39;= $ret- status,
 #39;reason #39;= $reason
 return $ret- auditid;
 } else {
 $this- errorLog( 查询最新一次提交的审核状态操作失败,appid: .$this- authorizer_appid,$ret);
 return false;
 * 发布已通过审核的小程序
 * */
 public function release()
 $url = https://api.weixin.qq.com/wxa/release?access_token= .$this- authorizer_access_token;
 $data = #39;{} #39;;
 $ret = json_decode(https_post($url,$data));
 if($ret- errcode == 0) {
 return true;
 } else {
 $this- errorLog( 发布已通过审核的小程序操作失败,appid: .$this- authorizer_appid,$ret);
 return $ret- errcode;
 * 获取授权小程序帐号的可选类目
 * */
 private function getCategory()
 $url = https://api.weixin.qq.com/wxa/get_category?access_token= .$this- authorizer_access_token;
 $ret = json_decode(https_get($url));
 if($ret- errcode == 0) {
 return $ret- category_list;
 } else {
 $this- errorLog( 获取授权小程序帐号的可选类目操作失败,appid: .$this- authorizer_appid,$ret);
 return false;
 * 获取小程序的第三方提交代码的页面配置
 * */
 private function getPage()
 $url = https://api.weixin.qq.com/wxa/get_page?access_token= .$this- authorizer_access_token;
 $ret = json_decode(https_get($url));
 if($ret- errcode == 0) {
 return $ret- page_list;
 } else {
 $this- errorLog( 获取小程序的第三方提交代码的页面配置失败,appid: .$this- authorizer_appid,$ret);
 return false;
 * 更新授权小程序的authorizer_access_token
 * @params string $appid : 小程序appid
 * @params string $refresh_token : 小程序authorizer_refresh_token
 * */
 private function update_authorizer_access_token($appid,$refresh_token)
 $url = #39;https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token= #39; . $this- thirdAccessToken;
 $data = #39;{ component_appid : #39; . $this- thirdAppId . #39; , authorizer_appid : #39; . $appid . #39; , authorizer_refresh_token : #39; . $refresh_token . #39; } #39;;
 $ret = json_decode(https_post($url, $data));
 if (isset($ret- authorizer_access_token)) {
 Db::name( #39;wxminiprograms #39;)- where([ #39;authorizer_appid #39; = $appid])- update([ #39;authorizer_access_token #39; = $ret- authorizer_access_token, #39;authorizer_expires #39; = (time() + 7200), #39;authorizer_refresh_token #39; = $ret- authorizer_refresh_token]);
 return $ret;
 } else {
 $this- errorLog( 更新授权小程序的authorizer_access_token操作失败,appid: .$appid,$ret);
 return null;
 private function errorLog($msg,$ret)
 file_put_contents(ROOT_PATH . #39;runtime/error/miniprogram.log #39;, [ . date( #39;Y-m-d H:i:s #39;) . ] .$msg. , .json_encode($ret).PHP_EOL, FILE_APPEND);
}
 ?php
//代小程序实现业务示例包
namespace app\user\controller;
use app\home\model\Miniprogram;
use think\Db;
class Wxminiprogram extends Pub
 public $appid = #39;wx57****1bfb #39;; //需要实现业务小程序appid
 public function index()
 return view();
 public function doAction()
 if(request()- isPost()) {
 $action = input( #39;action #39;);
 $mini = new Miniprogram($this- appid);
 if($action == #39;auth #39;) {
 //小程序授权
 echo #39; script alert( 已授权 history.back(); /script #39;;
 } elseif($action == #39;setServerDomain #39;) {
 //设置小程序服务器域名地址
 if($mini- setServerDomain()){
 echo #39; script alert( 设置小程序服务器域名操作成功 history.back(); /script #39;;
 } else {
 echo #39; script alert( 设置小程序服务器域名操作失败或已设置,请查看日志 history.back(); /script #39;;
 } elseif($action == #39;setBusinessDomain #39;) {
 //设置业务域名
 if($mini- setBusinessDomain()){
 echo #39; script alert( 设置小程序业务域名操作成功 history.back(); /script #39;;
 } else {
 echo #39; script alert( 设置小程序业务域名操作失败或已设置,请查看日志 history.back(); /script #39;;
 } elseif($action == #39;bind #39;) {
 //绑定小程序体验者
 $wechatid = input( #39;wechatid #39;);
 if($wechatid) {
 if($mini- bindMember($wechatid)){
 echo #39; script alert( 绑定小程序体验者操作成功 history.back(); /script #39;;
 } else {
 echo #39; script alert( 绑定小程序体验者操作失败,请查看日志 history.back(); /script #39;;
 } else {
 echo #39; script alert( 请输入微信号 history.back(); /script #39;;
 } elseif($action == #39;uploadCode #39;) {
 //上传小程序代码
 if($mini- uploadCode(2)){
 echo #39; script alert( 上传小程序代码操作成功 history.back(); /script #39;;
 } else {
 echo #39; script alert( 上传小程序代码操作失败,请查看日志 history.back(); /script #39;;
 } elseif($action == #39;getExpVersion #39;) {
 //获取体验小程序的体验二维码
 $qrcode = $mini- getExpVersion();
 if($qrcode){
 echo #39; script window.location.href= #39;.$qrcode. #39; /script #39;;
 } else {
 echo #39; script alert( 获取体验小程序的体验二维码操作失败 history.back(); /script #39;;
 } elseif($action == #39;review #39;) {
 //提交审核
 $auditid = Db::name( #39;wxminiprogram_audit #39;)- where([ #39;appid #39;= $this- appid, #39;status #39;= [ #39;neq #39;,0]])- order( #39;create_time #39;, #39;desc #39;)- value( #39;auditid #39;);
 if($auditid){
 echo #39; script alert( 有待处理的版本,请先处理该版本相关事项再提交新的审核。审核ID: #39;.$auditid. #39; history.back(); /script #39;;
 } else {
 if($mini- submitReview()){
 echo #39; script alert( 小程序提交审核操作成功 history.back(); /script #39;;
 } else {
 echo #39; script alert( 小程序提交审核操作失败,请查看日志 history.back(); /script #39;;
 } elseif($action == #39;getAudit #39;) {
 //查询指定版本的审核状态
 $auditid = input( #39;auditid #39;);
 if($auditid) {
 if($mini- getAuditStatus($auditid)){
 $audit = Db::name( #39;wxminiprogram_audit #39;)- where([ #39;appid #39;= $this- appid, #39;auditid #39;= $auditid])- field( #39;status,reason #39;)- find();
 if($audit[ #39;status #39;] == 0) {
 echo #39; script alert( 该版本审核已通过 history.back(); /script #39;;
 } elseif($audit[ #39;status #39;] == 1) {
 echo #39; script alert( 该版本审核失败,原因: #39;.$audit[ #39;reason #39;]. #39; history.back(); /script #39;;
 } elseif($audit[ #39;status #39;] == 2) {
 echo #39; script alert( 该版本小程序正在审核中...... history.back(); /script #39;;
 } else {
 echo #39; script alert( 未知状态...... history.back(); /script #39;;
 } else {
 echo #39; script alert( 查询指定版本的审核状态操作失败,请查看日志 history.back(); /script #39;;
 } else {
 echo #39; script alert( 请输入要查询的审核ID history.back(); /script #39;;
 } elseif($action == #39;lastAudit #39;) {
 //查询最新一次提交的审核状态
 $auditid = $mini- getLastAudit();
 if($auditid){
 $audit = Db::name( #39;wxminiprogram_audit #39;)- where([ #39;appid #39;= $this- appid, #39;auditid #39;= $auditid])- field( #39;status,reason #39;)- find();
 if($audit[ #39;status #39;] == 0) {
 echo #39; script alert( 审核已通过 history.back(); /script #39;;
 } elseif($audit[ #39;status #39;] == 1) {
 echo #39; script alert( 审核失败,原因: #39;.$audit[ #39;reason #39;]. #39; history.back(); /script #39;;
 } elseif($audit[ #39;status #39;] == 2) {
 echo #39; script alert( 小程序正在审核中...... history.back(); /script #39;;
 } else {
 echo #39; script alert( 未知状态...... history.back(); /script #39;;
 }else {
 echo #39; script alert( 查询最新一次提交的审核状态操作失败,请查看日志 history.back(); /script #39;;
 } elseif($action == #39;release #39;) {
 //发布已通过审核的小程序
 $auditid = Db::name( #39;wxminiprogram_audit #39;)- where([ #39;appid #39;= $this- appid, #39;status #39;= [ #39;neq #39;,0]])- order( #39;create_time #39;, #39;desc #39;)- value( #39;auditid #39;);
 if($auditid){
 echo #39; script alert( 有待处理的版本,请先处理该版本相关事项再发布版本。审核ID: #39;.$auditid. #39; history.back(); /script #39;;
 } else {
 $errcode = $mini- release();
 if($errcode){
 echo #39; script alert( 已发版 history.back(); /script #39;;
 } else {
 echo #39; script alert( 发版失败,错误代码: #39;.$errcode. #39; history.back(); /script #39;;
}

wxminiprograms数据表,保存已授权小程序的基本信息及授权相关信息(authorizer_access_token/authorizer_refresh_token)这两个值很重要,代小程序实现业务基本上是通过这两个值来实现

-- Adminer 4.6.2 MySQL dump
SET NAMES utf8;
SET time_zone = #39;+00:00 #39;;
SET foreign_key_checks = 0;
SET sql_mode = #39;NO_AUTO_VALUE_ON_ZERO #39;;
DROP TABLE IF EXISTS `wxminiprograms`;
CREATE TABLE `wxminiprograms` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT #39;ID #39;,
 `uid` int(10) unsigned NOT NULL COMMENT #39;用户ID #39;,
 `nick_name` varchar(45) DEFAULT NULL COMMENT #39;微信小程序名称 #39;,
 `alias` varchar(45) DEFAULT NULL COMMENT #39;别名 #39;,
 `token` varchar(45) DEFAULT NULL COMMENT #39;平台生成的token值 #39;,
 `head_img` varchar(255) DEFAULT NULL COMMENT #39;微信小程序头像 #39;,
 `verify_type_info` tinyint(1) DEFAULT NULL COMMENT #39;授权方认证类型,-1代表未认证,0代表微信认证 #39;,
 `is_show` tinyint(1) DEFAULT #39;0 #39; COMMENT #39;是否显示,0显示,1隐藏 #39;,
 `user_name` varchar(45) DEFAULT NULL COMMENT #39;原始ID #39;,
 `qrcode_url` varchar(255) DEFAULT NULL COMMENT #39;二维码图片的URL #39;,
 `business_info` varchar(255) DEFAULT NULL COMMENT #39;json格式。用以了解以下功能的开通状况(0代表未开通,1代表已开通): open_store:是否开通微信门店功能 open_scan:是否开通微信扫商品功能 open_pay:是否开通微信支付功能 open_card:是否开通微信卡券功能 open_shake:是否开通微信摇一摇功能 #39;,
 `idc` int(10) unsigned DEFAULT NULL COMMENT #39;idc #39;,
 `principal_name` varchar(45) DEFAULT NULL COMMENT #39;小程序的主体名称 #39;,
 `signature` varchar(255) DEFAULT NULL COMMENT #39;帐号介绍 #39;,
 `miniprograminfo` varchar(255) DEFAULT NULL COMMENT #39;json格式。判断是否为小程序类型授权,包含network小程序已设置的各个服务器域名 #39;,
 `func_info` longtext COMMENT #39;json格式。权限集列表,ID为17到19时分别代表: 17.帐号管理权限 18.开发管理权限 19.客服消息管理权限 请注意: 1)该字段的返回不会考虑小程序是否具备该权限集的权限(因为可能部分具备)。 #39;,
 `authorizer_appid` varchar(45) DEFAULT NULL COMMENT #39;小程序appid #39;,
 `authorizer_access_token` varchar(255) DEFAULT NULL COMMENT #39;授权方接口调用凭据(在授权的公众号或小程序具备API权限时,才有此返回值),也简称为令牌 #39;,
 `authorizer_expires` int(10) unsigned DEFAULT NULL COMMENT #39;refresh有效期 #39;,
 `authorizer_refresh_token` varchar(255) DEFAULT NULL COMMENT #39;接口调用凭据刷新令牌 #39;,
 `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT #39;授权时间 #39;,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT= #39;微信小程序授权列表 #39;;

-- 2018-07-25 09:32:49

wxminiprogram_audit数据表,保存提交审核的小程序

-- Adminer 4.6.2 MySQL dump
SET NAMES utf8;
SET time_zone = #39;+00:00 #39;;
SET foreign_key_checks = 0;
SET sql_mode = #39;NO_AUTO_VALUE_ON_ZERO #39;;
DROP TABLE IF EXISTS `wxminiprogram_audit`;
CREATE TABLE `wxminiprogram_audit` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT #39;ID #39;,
 `appid` varchar(45) NOT NULL COMMENT #39;小程序appid #39;,
 `auditid` varchar(45) NOT NULL COMMENT #39;审核编号 #39;,
 `status` tinyint(1) unsigned NOT NULL DEFAULT #39;3 #39; COMMENT #39;审核状态,其中0为审核成功,1为审核失败,2为审核中,3已提交审核 #39;,
 `reason` varchar(255) DEFAULT NULL COMMENT #39;当status=1,审核被拒绝时,返回的拒绝原因 #39;,
 `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT #39;提交审核时间 #39;,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT= #39;微信小程序提交审核的小程序 #39;;

微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!


【免责申明】黔优媒体网以上展示内容来源于用户自主上传、合作媒体、企业机构或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表黔优媒体网官方立场,请读者仅做参考,本文标题:终于整理出来了,用微信第三方平台授权小程序业务;欢迎转载,转载时请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何违法/违规的内容,请您立即联系我们及时修正或删除。(邮箱号: kefu@qianu.com)