如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人。谢谢大家!❤
如果解决不了,可以在文末进群交流。
本文章转自php中文网:http://www.php.cn/weixin-kaifa-406993.html,用微信第三方平台开发实现小程序业务,代码很全,每一步都有详细介绍,供大家学习参考。
第一步:申请微信开放平台帐号并创建第三方平台
第二步:公众号/小程序授权给第三方平台
?php/** 微信第三方平台授权流程*/namespace apphomecontroller;class Weixin extends Common{ private $appid = 'wx3e******165c'; //第三方平台应用appid private $appsecret = '13e**********d039'; //第三方平台应用appsecret private $token = 'ePF58******Q2Ae'; //第三方平台应用token(消息校验Token) private $encodingAesKey = 'bzH***FCamD'; //第三方平台应用Key(消息加解密Key) private $component_ticket= 'ticket@**xv-g'; //微信后台推送的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 = '{ "component_appid":"'.$this-appid.'" , "component_appsecret": "'.$this-appsecret.'", "component_verify_ticket": "'.$this-component_ticket.'" }'; $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 = '{"component_appid":"'.$this-appid.'"}'; $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 'Errno'.curl_error($curl); } else{$result=curl_exec($curl);} curl_close($curl); return $result; }}?php/** 接收微信官方推送的ticket值以及取消授权等操作*/namespace apphomecontroller;use thinkDb;class Openoauth extends Common{ private $appid = 'wx3e******165c'; //第三方平台应用appid private $appsecret = '13e**********d039'; //第三方平台应用appsecret private $token = 'ePF58******Q2Ae'; //第三方平台应用token(消息校验Token) private $encodingAesKey = 'bzH***FCamD'; //第三方平台应用Key(消息加解密Key) private $component_ticket= 'ticket@**xv-g'; //微信后台推送的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('wxBizMsgCrypt.php'); $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" = 0); Db::name("wxuser")-where($where)-update($save); //公众号取消授权 Db::name("wxminiprograms")-where('authorizer_appid',$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('weixin_account')-where(['type'=1])-field('id,appId,appSecret,component_access_token,token_expires')-find(); if($weixin_account['token_expires'] = time() ) { $apiUrl = 'https://api.weixin.qq.com/cgi-bin/component/api_component_token'; $data = '{"component_appid":"'.$weixin_account['appId'].'" ,"component_appsecret": "'.$weixin_account['appSecret'].'","component_verify_ticket": "'.$component_verify_ticket.'"}'; $json = json_decode(_request($apiUrl,$data)); if(isset($json-component_access_token)) { Db::name('weixin_account')-where(['id'=$weixin_account['id']])-update(['component_access_token'=$json-component_access_token,'token_expires'=time()+7200]); } } }}?php/** 代小程序实现业务*/namespace apphomemodel;use thinkModel;use thinkDb;use thinkCache;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('weixin_account')-where(['type' = 1])-field('token,encodingAesKey,appId,component_access_token')-find(); if ($weixin_account) { $this-thirdAppId = $weixin_account['appId']; $this-encodingAesKey = $weixin_account['encodingAesKey']; $this-thirdToken = $weixin_account['token']; $this-thirdAccessToken = $weixin_account['component_access_token']; $miniprogram = Db::name('wxminiprograms')-where('authorizer_appid',$appid) -field('authorizer_access_token,authorizer_refresh_token,authorizer_expires')-find(); if($miniprogram){ $this-authorizer_appid = $appid; if(time() $miniprogram['authorizer_expires']){ $miniapp = $this-update_authorizer_access_token($appid,$miniprogram['authorizer_refresh_token']); 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,''); exit; } } else { $this-authorizer_access_token = $miniprogram['authorizer_access_token']; $this-authorizer_refresh_token = $miniprogram['authorizer_refresh_token']; } } else { $this-errorLog("小程序不存在,appid:".$this-authorizer_appid,''); exit; } } else { $this-errorLog("请增加微信第三方公众号平台账户信息",''); exit; } } /* * 设置小程序服务器地址,无需加https前缀,但域名必须可以通过https访问 * @params string / array $domains : 域名地址。只接收一维数组。 * */ public function setServerDomain($domain = 'test.moh.cc') { $url = "https://api.weixin.qq.com/wxa/modify_domain?access_token=".$this-authorizer_access_token; if(is_array($domain)) { $https = ''; $wss = ''; foreach ($domain as $key = $value) { $https .= '"https://'.$value.'",'; $wss .= '"wss://'.$value.'",'; } $https = rtrim($https,','); $wss = rtrim($wss,','); $data = '{ "action":"add", "requestdomain":['.$https.'], "wsrequestdomain":['.$wss.'], "uploaddomain":['.$https.'], "downloaddomain":['.$https.'] }'; } else { $data = '{ "action":"add", "requestdomain":"https://'.$domain.'", "wsrequestdomain":"wss://'.$domain.'", "uploaddomain":"https://'.$domain.'", "downloaddomain":"https://'.$domain.'" }'; } $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 = 'test.moh.cc') { $url = "https://api.weixin.qq.com/wxa/setwebviewdomain?access_token=".$this-authorizer_access_token; if(is_array($domain)) { $https = ''; foreach ($domain as $key = $value) { $https .= '"https://'.$value.'",'; } $https = rtrim($https,','); $data = '{ "action":"add", "webviewdomain":['.$https.'] }'; } else { $data = '{ "action":"add", "webviewdomain":"https://'.$domain.'" }'; } $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 = '{"wechatid":"'.$wechatid.'"}'; $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 = '{"wechatid":"'.$wechatid.'"}'; $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 = '{"action":"get_experiencer"}'; $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 = 'v1.0.0', $user_desc = "魔盒CMS小程序模板库") { $ext_json = json_encode('{"extEnable": true,"extAppid": "wx572****bfb","ext":{"appid": "'.$this-authorizer_appid.'"}}'); $url = "https://api.weixin.qq.com/wxa/commit?access_token=".$this-authorizer_access_token; $data = '{"template_id":"'.$template_id.'","ext_json":'.$ext_json.',"user_version":"'.$user_version.'","user_desc":"'.$user_desc.'"}'; $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 = '') { 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 = '';$second_class = '';$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 : '' ; $second_class = $category[0]-second_class ? $category[0]-second_class : ''; $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 = '{ "item_list":[{ "address":"'.$address.'", "tag":"'.$tag.'", "title":"'.$title.'", "first_class":"'.$first_class.'", "second_class":"'.$second_class.'", "first_id":"'.$first_id.'", "second_id":"'.$second_id.'" }] }'; $ret = json_decode(https_post($url,$data)); if($ret-errcode == 0) { Db::name('wxminiprogram_audit')-insert([ 'appid'=$this-authorizer_appid, 'auditid'=$ret-auditid, 'create_time'=date('Y-m-d H:i:s') ]); 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 = '{"auditid":"'.$auditid.'"}'; $ret = json_decode(https_post($url,$data)); if($ret-errcode == 0) { $reason = $ret-reason ? $ret-reason : ''; Db::name('wxminiprogram_audit')-where(['appid'=$this-authorizer_appid,'auditid'=$auditid])-update([ 'status'=$ret-status, 'reason'=$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 : ''; Db::name('wxminiprogram_audit')-where(['appid'=$this-authorizer_appid,'auditid'=$ret-auditid])-update([ 'status'=$ret-status, 'reason'=$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 = '{}'; $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 = 'https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token=' . $this-thirdAccessToken; $data = '{"component_appid":"' . $this-thirdAppId . '","authorizer_appid":"' . $appid . '","authorizer_refresh_token":"' . $refresh_token . '"}'; $ret = json_decode(https_post($url, $data)); if (isset($ret-authorizer_access_token)) { Db::name('wxminiprograms')-where(['authorizer_appid' = $appid])-update(['authorizer_access_token' = $ret-authorizer_access_token, 'authorizer_expires' = (time() + 7200), 'authorizer_refresh_token' = $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 . 'runtime/error/miniprogram.log', "[" . date('Y-m-d H:i:s') . "] ".$msg."," .json_encode($ret).PHP_EOL, FILE_APPEND); }}?php//代小程序实现业务示例包namespace appusercontroller;use apphomemodelMiniprogram;use thinkDb;class Wxminiprogram extends Pub{ public $appid = 'wx57****1bfb'; //需要实现业务小程序appid public function index() { return view(); } public function doAction() { if(request()-isPost()) { $action = input('action'); $mini = new Miniprogram($this-appid); if($action == 'auth') { //小程序授权 echo 'scriptalert("已授权");history.back();/script'; } elseif($action == 'setServerDomain') { //设置小程序服务器域名地址 if($mini-setServerDomain()){ echo 'scriptalert("设置小程序服务器域名操作成功");history.back();/script'; } else { echo 'scriptalert("设置小程序服务器域名操作失败或已设置,请查看日志");history.back();/script'; } } elseif($action == 'setBusinessDomain') { //设置业务域名 if($mini-setBusinessDomain()){ echo 'scriptalert("设置小程序业务域名操作成功");history.back();/script'; } else { echo 'scriptalert("设置小程序业务域名操作失败或已设置,请查看日志");history.back();/script'; } } elseif($action == 'bind') { //绑定小程序体验者 $wechatid = input('wechatid'); if($wechatid) { if($mini-bindMember($wechatid)){ echo 'scriptalert("绑定小程序体验者操作成功");history.back();/script'; } else { echo 'scriptalert("绑定小程序体验者操作失败,请查看日志");history.back();/script'; } } else { echo 'scriptalert("请输入微信号");history.back();/script'; } } elseif($action == 'uploadCode') { //上传小程序代码 if($mini-uploadCode(2)){ echo 'scriptalert("上传小程序代码操作成功");history.back();/script'; } else { echo 'scriptalert("上传小程序代码操作失败,请查看日志");history.back();/script'; } } elseif($action == 'getExpVersion') { //获取体验小程序的体验二维码 $qrcode = $mini-getExpVersion(); if($qrcode){ echo 'scriptwindow.location.href="'.$qrcode.'";/script'; } else { echo 'scriptalert("获取体验小程序的体验二维码操作失败");history.back();/script'; } } elseif($action == 'review') { //提交审核 $auditid = Db::name('wxminiprogram_audit')-where(['appid'=$this-appid,'status'=['neq',0]])-order('create_time','desc')-value('auditid'); if($auditid){ echo 'scriptalert("有待处理的版本,请先处理该版本相关事项再提交新的审核。审核ID:'.$auditid.'");history.back();/script'; } else { if($mini-submitReview()){ echo 'scriptalert("小程序提交审核操作成功");history.back();/script'; } else { echo 'scriptalert("小程序提交审核操作失败,请查看日志");history.back();/script'; } } } elseif($action == 'getAudit') { //查询指定版本的审核状态 $auditid = input('auditid'); if($auditid) { if($mini-getAuditStatus($auditid)){ $audit = Db::name('wxminiprogram_audit')-where(['appid'=$this-appid,'auditid'=$auditid])-field('status,reason')-find(); if($audit['status'] == 0) { echo 'scriptalert("该版本审核已通过");history.back();/script'; } elseif($audit['status'] == 1) { echo 'scriptalert("该版本审核失败,原因:'.$audit['reason'].'");history.back();/script'; } elseif($audit['status'] == 2) { echo 'scriptalert("该版本小程序正在审核中......");history.back();/script'; } else { echo 'scriptalert("未知状态......");history.back();/script'; } } else { echo 'scriptalert("查询指定版本的审核状态操作失败,请查看日志");history.back();/script'; } } else { echo 'scriptalert("请输入要查询的审核ID");history.back();/script'; } } elseif($action == 'lastAudit') { //查询最新一次提交的审核状态 $auditid = $mini-getLastAudit(); if($auditid){ $audit = Db::name('wxminiprogram_audit')-where(['appid'=$this-appid,'auditid'=$auditid])-field('status,reason')-find(); if($audit['status'] == 0) { echo 'scriptalert("审核已通过");history.back();/script'; } elseif($audit['status'] == 1) { echo 'scriptalert("审核失败,原因:'.$audit['reason'].'");history.back();/script'; } elseif($audit['status'] == 2) { echo 'scriptalert("小程序正在审核中......");history.back();/script'; } else { echo 'scriptalert("未知状态......");history.back();/script'; } }else { echo 'scriptalert("查询最新一次提交的审核状态操作失败,请查看日志");history.back();/script'; } } elseif($action == 'release') { //发布已通过审核的小程序 $auditid = Db::name('wxminiprogram_audit')-where(['appid'=$this-appid,'status'=['neq',0]])-order('create_time','desc')-value('auditid'); if($auditid){ echo 'scriptalert("有待处理的版本,请先处理该版本相关事项再发布版本。审核ID:'.$auditid.'");history.back();/script'; } else { $errcode = $mini-release(); if($errcode){ echo 'scriptalert("已发版");history.back();/script'; } else { echo 'scriptalert("发版失败,错误代码:'.$errcode.'");history.back();/script'; } } } } }}wxminiprograms数据表,保存已授权小程序的基本信息及授权相关信息(authorizer_access_token/authorizer_refresh_token)这两个值很重要,代小程序实现业务基本上是通过这两个值来实现
-- Adminer 4.6.2 MySQL dump SET NAMES utf8;SET time_zone = '+00:00';SET foreign_key_checks = 0;SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; DROP TABLE IF EXISTS `wxminiprograms`;CREATE TABLE `wxminiprograms` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `uid` int(10) unsigned NOT NULL COMMENT '用户ID', `nick_name` varchar(45) DEFAULT NULL COMMENT '微信小程序名称', `alias` varchar(45) DEFAULT NULL COMMENT '别名', `token` varchar(45) DEFAULT NULL COMMENT '平台生成的token值', `head_img` varchar(255) DEFAULT NULL COMMENT '微信小程序头像', `verify_type_info` tinyint(1) DEFAULT NULL COMMENT '授权方认证类型,-1代表未认证,0代表微信认证', `is_show` tinyint(1) DEFAULT '0' COMMENT '是否显示,0显示,1隐藏', `user_name` varchar(45) DEFAULT NULL COMMENT '原始ID', `qrcode_url` varchar(255) DEFAULT NULL COMMENT '二维码图片的URL', `business_info` varchar(255) DEFAULT NULL COMMENT 'json格式。用以了解以下功能的开通状况(0代表未开通,1代表已开通): open_store:是否开通微信门店功能 open_scan:是否开通微信扫商品功能 open_pay:是否开通微信支付功能 open_card:是否开通微信卡券功能 open_shake:是否开通微信摇一摇功能', `idc` int(10) unsigned DEFAULT NULL COMMENT 'idc', `principal_name` varchar(45) DEFAULT NULL COMMENT '小程序的主体名称', `signature` varchar(255) DEFAULT NULL COMMENT '帐号介绍', `miniprograminfo` varchar(255) DEFAULT NULL COMMENT 'json格式。判断是否为小程序类型授权,包含network小程序已设置的各个服务器域名', `func_info` longtext COMMENT 'json格式。权限集列表,ID为17到19时分别代表: 17.帐号管理权限 18.开发管理权限 19.客服消息管理权限 请注意: 1)该字段的返回不会考虑小程序是否具备该权限集的权限(因为可能部分具备)。', `authorizer_appid` varchar(45) DEFAULT NULL COMMENT '小程序appid', `authorizer_access_token` varchar(255) DEFAULT NULL COMMENT '授权方接口调用凭据(在授权的公众号或小程序具备API权限时,才有此返回值),也简称为令牌', `authorizer_expires` int(10) unsigned DEFAULT NULL COMMENT 'refresh有效期', `authorizer_refresh_token` varchar(255) DEFAULT NULL COMMENT '接口调用凭据刷新令牌', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '授权时间', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='微信小程序授权列表';
wxminiprogram_audit数据表,保存提交审核的小程序
-- Adminer 4.6.2 MySQL dump SET NAMES utf8;SET time_zone = '+00:00';SET foreign_key_checks = 0;SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; DROP TABLE IF EXISTS `wxminiprogram_audit`;CREATE TABLE `wxminiprogram_audit` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `appid` varchar(45) NOT NULL COMMENT '小程序appid', `auditid` varchar(45) NOT NULL COMMENT '审核编号', `status` tinyint(1) unsigned NOT NULL DEFAULT '3' COMMENT '审核状态,其中0为审核成功,1为审核失败,2为审核中,3已提交审核', `reason` varchar(255) DEFAULT NULL COMMENT '当status=1,审核被拒绝时,返回的拒绝原因', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '提交审核时间', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='微信小程序提交审核的小程序'; -- 2018-07-25 09:35:07














