重庆小潘seo博客

当前位置:首页 > 重庆网络营销 > 小潘杂谈 >

小潘杂谈

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

时间:2020-09-07 11:00:09 作者:重庆seo小潘 来源:
本文章是自己编写的,用微信第三方平台开发实现小程序业务,代码很全,每一步都有详细介绍,供大家学习参考。 第一步:申请微信开放平台帐号并创建第三方平台 第二步:公众号/小程序授权给第三方平台?php/**微信第三方平台授权流程*/namespace apphomecontro

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

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

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

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

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

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

第二步:公众号/小程序授权给第三方平台<?php/**微信第三方平台授权流程*/namespace apphomecontroller;class Weixin extends Common{private $appid = 'wx3e******165c';//第三方平台应用appidprivate $appsecret = '13e**********d039';//第三方平台应用appsecretprivate $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';//第三方平台应用appidprivate $appsecret = '13e**********d039';//第三方平台应用appsecretprivate $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;//开放平台appidprivate $encodingAesKey;//开放平台encodingAesKeyprivate $thirdToken;//开放平台tokenprivate $thirdAccessToken;//开放平台access_tokenprivate $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 : 域名地址。只接收一维数组。* */publicfunction 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';//需要实现业务小程序appidpublic function index(){return view();}public function doAction(){if(request()->isPost()) {$action = input('action');$mini = new Miniprogram($this->appid);if($action == 'auth') {//小程序授权echo '<script>alert("已授权");history.back();</script>';} elseif($action == 'setServerDomain') {//设置小程序服务器域名地址if($mini->setServerDomain()){echo '<script>alert("设置小程序服务器域名操作成功");history.back();</script>';} else {echo '<script>alert("设置小程序服务器域名操作失败或已设置,请查看日志");history.back();</script>';}}elseif($action == 'setBusinessDomain') {//设置业务域名if($mini->setBusinessDomain()){echo '<script>alert("设置小程序业务域名操作成功");history.back();</script>';} else {echo '<script>alert("设置小程序业务域名操作失败或已设置,请查看日志");history.back();</script>';}}elseif($action == 'bind') {//绑定小程序体验者$wechatid = input('wechatid');if($wechatid) {if($mini->bindMember($wechatid)){echo '<script>alert("绑定小程序体验者操作成功");history.back();</script>';} else {echo '<script>alert("绑定小程序体验者操作失败,请查看日志");history.back();</script>';}} else {echo '<script>alert("请输入微信号");history.back();</script>';}}elseif($action == 'uploadCode') {//上传小程序代码if($mini->uploadCode(2)){echo '<script>alert("上传小程序代码操作成功");history.back();</script>';} else {echo '<script>alert("上传小程序代码操作失败,请查看日志");history.back();</script>';}}elseif($action == 'getExpVersion') {//获取体验小程序的体验二维码$qrcode = $mini->getExpVersion();if($qrcode){echo '<script>window.location.href="'.$qrcode.'";</script>';} else {echo '<script>alert("获取体验小程序的体验二维码操作失败");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 '<script>alert("有待处理的版本,请先处理该版本相关事项再提交新的审核。审核ID:'.$auditid.'");history.back();</script>';} else {if($mini->submitReview()){echo '<script>alert("小程序提交审核操作成功");history.back();</script>';} else {echo '<script>alert("小程序提交审核操作失败,请查看日志");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 '<script>alert("该版本审核已通过");history.back();</script>';} elseif($audit['status'] == 1) {echo '<script>alert("该版本审核失败,原因:'.$audit['reason'].'");history.back();</script>';} elseif($audit['status'] == 2) {echo '<script>alert("该版本小程序正在审核中......");history.back();</script>';} else {echo '<script>alert("未知状态......");history.back();</script>';}} else {echo '<script>alert("查询指定版本的审核状态操作失败,请查看日志");history.back();</script>';}} else {echo '<script>alert("请输入要查询的审核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 '<script>alert("审核已通过");history.back();</script>';} elseif($audit['status'] == 1) {echo '<script>alert("审核失败,原因:'.$audit['reason'].'");history.back();</script>';} elseif($audit['status'] == 2) {echo '<script>alert("小程序正在审核中......");history.back();</script>';} else {echo '<script>alert("未知状态......");history.back();</script>';}}else {echo '<script>alert("查询最新一次提交的审核状态操作失败,请查看日志");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 '<script>alert("有待处理的版本,请先处理该版本相关事项再发布版本。审核ID:'.$auditid.'");history.back();</script>';} else {$errcode = $mini->release();if($errcode){echo '<script>alert("已发版");history.back();</script>';} else {echo '<script>alert("发版失败,错误代码:'.$errcode.'");history.back();</script>';}}}}}}wxminiprograms数据表,保存已授权小程序的基本信息及授权相关信息(authorizer_access_token/authorizer_refresh_token)这两个值很重要,代小程序实现业务基本上是通过这两个值来实现-- Adminer 4.6.2 MySQL dumpSET 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='微信小程序授权列表';-- 2018-07-25 09:32:49wxminiprogram_audit数据表,保存提交审核的小程序-- Adminer 4.6.2 MySQL dumpSET 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终于整理出来了,用微信第三方平台授权小程序业务

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

相关推荐:

微信开发公众号平台视频教程

微信公众平台开发者文档

PHP微信公众平台开发视频教程以上就是终于整理出来了,用微信第三方平台授权小程序业务的详细内容,更多请关注小潘博客其它相关文章!