国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 網絡軟件教程 > 詳細頁面

終于整理出來了,用微信第3方平臺授權小程序業(yè)務

終于整理出來了,用微信第3方平臺授權小程序業(yè)務

更新時間:2025-09-20 文章作者:未知 信息來源:網絡 閱讀次數(shù):

微信(WeChat)是騰訊公司于2011年1月21日推出的一個為智能終端提供即時通訊服務的免費應用程序,由張小龍所帶領的騰訊廣州研發(fā)中心產品團隊打造 [2] 。微信支持跨通信運營商、跨操作系統(tǒng)平臺...
微信(WeChat)是騰訊公司于2011年1月21日推出的一個為智能終端提供即時通訊服務的免費應用程序,由張小龍所帶領的騰訊廣州研發(fā)中心產品團隊打造 [2] 。微信支持跨通信運營商、跨操作系統(tǒng)平臺通過網絡快速發(fā)送免費(需消耗少量網絡流量)語音短信、視頻、圖片和文字,同時,也可以使用通過共享流媒體內容的資料和基于位置的社交插件“搖一搖”、“漂流瓶”、“朋友圈”、”公眾平臺“、”語音記事本“等服務插件。
本文章是自己編寫的,用微信第三方平臺開發(fā)實現(xiàn)小程序業(yè)務,代碼很全,每一步都有詳細介紹,供大家學習參考。

第一步:申請微信開放平臺帳號并創(chuàng)建第三方平臺

2236665639-5b238482e677f_articlex.png

636996152-5b2384a750438_articlex.png

1610749029-5b2386c9e68e0_articlex.png

253370562-5b23877febf0c_articlex.png

第二步:公眾號/小程序授權給第三方平臺

<?php
/*
*    微信第三方平臺授權流程
*/
namespace app\home\controller;
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,用于獲取第三方平臺接口調用憑據(jù)
    
    /*
    * 掃碼授權,注意此URL必須放置在頁面當中用戶點擊進行跳轉,不能通過程序跳轉,否則將出現(xiàn)“請確認授權入口頁所在域名,與授權后回調頁所在域名相同....”錯誤
    * @params string $redirect_uri : 掃碼成功后的回調地址
    * @params int $auth_type : 授權類型,1公眾號,2小程序,3公眾號/小程序同時展現(xiàn)。不傳參數(shù)默認都展示    
    */
    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;
        }
    }
    
    /*
    * 發(fā)起POST網絡提交
    * @params string $url : 網絡地址
    * @params json $data : 發(fā)送的json格式數(shù)據(jù)
    */
    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;
    }
     /*
    * 發(fā)起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 app\home\controller;
use think\Db;
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,用于獲取第三方平臺接口調用憑據(jù)
    /*
    *    接收微信官方推送的消息(每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
/*
*    代小程序實現(xiàn)業(yè)務
*/
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('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 : 域名地址。只接收一維數(shù)組。
     * */
    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;
        }
    }
    /*
     * 設置小程序業(yè)務域名,無需加https前綴,但域名必須可以通過https訪問
     * @params string / array $domains : 域名地址。只接收一維數(shù)組。
     * */
    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("設置小程序業(yè)務域名失敗,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微信公眾號營銷小程序開發(fā)")
    {
        $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;
        }
    }
    /*
     * 小程序審核撤回
     * 單個帳號每天審核撤回次數(shù)最多不超過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;
        }
    }
    /*
     * 查詢指定版本的審核狀態(tài)
     * @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("查詢指定版本的審核狀態(tài)操作失敗,appid:".$this->authorizer_appid,$ret);
            return false;
        }
    }
    /*
     * 查詢最新一次提交的審核狀態(tài)
     * */
    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("查詢最新一次提交的審核狀態(tài)操作失敗,appid:".$this->authorizer_appid,$ret);
            return false;
        }
    }
    /*
     * 發(fā)布已通過審核的小程序
     * */
    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("發(fā)布已通過審核的小程序操作失敗,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
//代小程序實現(xiàn)業(yè)務示例包
namespace app\user\controller;
use app\home\model\Miniprogram;
use think\Db;
class Wxminiprogram extends Pub
{
    public $appid = 'wx57****1bfb';    //需要實現(xiàn)業(yè)務小程序appid
    public 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') {
                //設置業(yè)務域名
                if($mini->setBusinessDomain()){
                    echo '<script>alert("設置小程序業(yè)務域名操作成功");history.back();</script>';
                } else {
                    echo '<script>alert("設置小程序業(yè)務域名操作失敗或已設置,請查看日志");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') {
                //查詢指定版本的審核狀態(tài)
                $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("未知狀態(tài)......");history.back();</script>';
                        }
                    } else {
                        echo '<script>alert("查詢指定版本的審核狀態(tài)操作失敗,請查看日志");history.back();</script>';
                    }
                } else {
                    echo '<script>alert("請輸入要查詢的審核ID");history.back();</script>';
                }
            } elseif($action == 'lastAudit') {
                //查詢最新一次提交的審核狀態(tài)
                $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("未知狀態(tài)......");history.back();</script>';
                    }
                }else {
                    echo '<script>alert("查詢最新一次提交的審核狀態(tài)操作失敗,請查看日志");history.back();</script>';
                }
            } elseif($action == 'release') {
                //發(fā)布已通過審核的小程序
                $auditid = Db::name('wxminiprogram_audit')->where(['appid'=>$this->appid,'status'=>['neq',0]])->order('create_time','desc')->value('auditid');
                if($auditid){
                    echo '<script>alert("有待處理的版本,請先處理該版本相關事項再發(fā)布版本。審核ID:'.$auditid.'");history.back();</script>';
                } else {
                    $errcode = $mini->release();
                    if($errcode){
                        echo '<script>alert("已發(fā)版");history.back();</script>';
                    } else {
                        echo '<script>alert("發(fā)版失敗,錯誤代碼:'.$errcode.'");history.back();</script>';
                    }
                }
            }
        }
    }
}

wxminiprograms數(shù)據(jù)表,保存已授權小程序的基本信息及授權相關信息(authorizer_access_token/authorizer_refresh_token)這兩個值很重要,代小程序實現(xiàn)業(yè)務基本上是通過這兩個值來實現(xiàn)

-- 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.開發(fā)管理權限 19.客服消息管理權限 請注意: 1)該字段的返回不會考慮小程序是否具備該權限集的權限(因為可能部分具備)。',
  `authorizer_appid` varchar(45) DEFAULT NULL COMMENT '小程序appid',
  `authorizer_access_token` varchar(255) DEFAULT NULL COMMENT '授權方接口調用憑據(jù)(在授權的公眾號或小程序具備API權限時,才有此返回值),也簡稱為令牌',
  `authorizer_expires` int(10) unsigned DEFAULT NULL COMMENT 'refresh有效期',
  `authorizer_refresh_token` varchar(255) DEFAULT NULL COMMENT '接口調用憑據(jù)刷新令牌',
  `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:49

wxminiprogram_audit數(shù)據(jù)表,保存提交審核的小程序

-- 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 '審核狀態(tài),其中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

3839345434-5b28cd7a43128_articlex.png

2715287353-5b239018f1482_articlex.pngx

相關推薦:

微信開發(fā)公眾號平臺視頻教程

微信公眾平臺開發(fā)者文檔

PHP微信公眾平臺開發(fā)視頻教程

以上就是終于整理出來了,用微信第三方平臺授權小程序業(yè)務的詳細內容,更多請關注php中文網其它相關文章!


微信提供公眾平臺、朋友圈、消息推送等功能,用戶可以通過“搖一搖”、“搜索號碼”、“附近的人”、掃二維碼方式添加好友和關注公眾平臺,同時微信將內容分享給好友以及將用戶看到的精彩內容分享到微信朋友圈。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        国产盗摄一区二区三区| 亚洲电影一区二区三区| 久久色成人在线| 亚洲综合激情小说| 欧美三区在线观看| 亚洲乱码国产乱码精品精98午夜| 国产大陆亚洲精品国产| 国产欧美精品一区aⅴ影院 | 亚洲国产精品t66y| 成人三级在线视频| 日本一区二区视频在线观看| 国产精品99久久久| 国产丝袜在线精品| 91麻豆免费看片| 一区二区三区欧美久久| 欧美日韩国产美女| 九九视频精品免费| 亚洲免费视频中文字幕| 日韩视频免费观看高清完整版 | 91理论电影在线观看| 日韩毛片视频在线看| 欧美放荡的少妇| 成人午夜在线播放| 午夜久久电影网| 一区二区三区欧美在线观看| 欧美精品一区二区久久久 | 亚洲最新视频在线观看| 久久嫩草精品久久久精品| 色菇凉天天综合网| 精品一区二区三区在线播放| 亚洲综合网站在线观看| 国产精品久久久久9999吃药| 国产亚洲成av人在线观看导航| 欧洲亚洲精品在线| 色婷婷综合激情| 91福利在线导航| 成人成人成人在线视频| 国产成人一级电影| 成人黄色电影在线| 在线观看日韩精品| 欧美日韩一区二区三区高清| 在线亚洲高清视频| 欧美色图第一页| 欧美精品日韩一区| 日韩女同互慰一区二区| 日韩美一区二区三区| 久久久一区二区三区| 久久亚洲一级片| 亚洲乱码国产乱码精品精小说| 欧美精彩视频一区二区三区| 国产精品久久久久一区| 国产精品久久久久久久久免费桃花| 久久久精品影视| 国产精品护士白丝一区av| 一区二区三区在线观看欧美| 日韩综合在线视频| 成人av午夜电影| 91麻豆精品国产自产在线 | 国产一区三区三区| 北条麻妃一区二区三区| 91精品婷婷国产综合久久竹菊| 精品国一区二区三区| 一区二区三区精品| www.亚洲色图.com| 久久日一线二线三线suv| 一区二区三区四区亚洲| 国产成人免费在线| 久久久精品国产免大香伊| 日韩高清欧美激情| 制服丝袜国产精品| 亚洲超碰精品一区二区| 99久久久国产精品免费蜜臀| 欧美天堂一区二区三区| 亚洲精品视频在线看| 在线亚洲高清视频| 亚洲韩国精品一区| 欧美男男青年gay1069videost | 日韩欧美一卡二卡| 亚洲一区二区三区四区的| 97精品久久久午夜一区二区三区 | 欧美精品一级二级三级| 一区二区三区四区国产精品| av在线综合网| 午夜一区二区三区在线观看| 欧美视频一区二| 婷婷久久综合九色综合绿巨人 | 国产精品视频在线看| 99精品视频在线观看| 亚洲欧美电影一区二区| 色悠久久久久综合欧美99| 亚洲综合视频在线| 日韩欧美区一区二| av福利精品导航| 五月天一区二区三区| 精品99999| 欧美三区在线视频| 成人蜜臀av电影| 日本特黄久久久高潮| 国产精品高潮久久久久无| 91精品午夜视频| 在线视频欧美区| 国产精品一区二区在线观看不卡| 亚洲综合久久av| 亚洲九九爱视频| 国产精品久久久久久久久快鸭| 9191成人精品久久| 欧美午夜一区二区三区| 99久久99久久精品国产片果冻| 久久99精品视频| 青青草视频一区| 国产专区欧美精品| 国产成人精品免费在线| 国产一区二区影院| 国产一区二区日韩精品| 狠狠色丁香久久婷婷综合丁香| 日本一区中文字幕| 九九精品一区二区| 国产一区激情在线| 国产99久久久久| 99久久免费视频.com| 色婷婷综合久久久| 欧美日韩二区三区| 国产亚洲精品超碰| 亚洲最大成人综合| 国产一区二区伦理| 国产suv精品一区二区6| 成人精品视频一区二区三区| 福利一区二区在线观看| 成人aa视频在线观看| 日本高清无吗v一区| 欧美日韩精品系列| 欧美大胆一级视频| 国产精品久久久久久久久图文区 | 亚洲国产欧美一区二区三区丁香婷| 亚洲一区在线观看免费观看电影高清 | 麻豆国产精品777777在线| 国产在线不卡一卡二卡三卡四卡| thepron国产精品| 欧美疯狂做受xxxx富婆| 26uuu亚洲综合色欧美 | 日韩欧美一区中文| 亚洲精品视频在线观看网站| 日日摸夜夜添夜夜添亚洲女人| 久久精品国产99国产| 9色porny自拍视频一区二区| 欧美日韩国产片| 一区二区三区中文字幕电影| 国产麻豆日韩欧美久久| 欧美一区二区三区日韩| 一区二区三区四区在线播放| 国产成人亚洲综合a∨婷婷| 777久久久精品| 亚洲成av人片在www色猫咪| 成人理论电影网| 中文字幕巨乱亚洲| 另类人妖一区二区av| 91精品婷婷国产综合久久性色 | 欧美v国产在线一区二区三区| 亚洲人成精品久久久久| 国产a区久久久| 国产精品国产a| 日本道免费精品一区二区三区| 久久精品一区二区三区不卡| 国产尤物一区二区在线| 国产色91在线| 色88888久久久久久影院按摩| 一区二区三区中文字幕| 91精品国产综合久久婷婷香蕉 | 69堂国产成人免费视频| 蜜臀精品一区二区三区在线观看 | 日韩激情av在线| 精品不卡在线视频| 色综合天天做天天爱| 亚洲在线成人精品| 精品粉嫩超白一线天av| 不卡视频在线观看| 日本麻豆一区二区三区视频| 欧美一级理论性理论a| 国产麻豆午夜三级精品| 一区二区三区日韩欧美| 精品久久久久久久久久久院品网| 成人黄色国产精品网站大全在线免费观看| 国产精品女人毛片| 欧美一区二区大片| 精品视频一区三区九区| 成人中文字幕电影| 国产在线国偷精品产拍免费yy| 一区二区三区在线免费播放| 国产日产亚洲精品系列| 精品人在线二区三区| 制服丝袜日韩国产| 欧美又粗又大又爽| av一区二区三区在线| 国产老肥熟一区二区三区| 日韩电影在线看| 毛片av一区二区三区| 麻豆国产91在线播放| 麻豆传媒一区二区三区| 日韩电影一区二区三区| 日韩精品国产精品|