溫州鳳陽畬族鄉(xiāng)終于整理出來了,用微信第三方平臺(tái)授權(quán)小程序業(yè)務(wù)
閱讀 30346 · 發(fā)布日期 2020-08-24 17:26 · 溫州優(yōu)光網(wǎng)絡(luò)科技有限公司|建站|APP小程序制作|做網(wǎng)站SEO推廣優(yōu)化
【摘要】
本文章是自己編寫的,用微信第三方平臺(tái)開發(fā)實(shí)現(xiàn)小程序業(yè)務(wù),代碼很全,每一步都有詳細(xì)介紹,供大家學(xué)習(xí)參考。第一步:申請微信開放平臺(tái)帳號并創(chuàng)建第三方平臺(tái)第二步:公眾號/小程序授權(quán)給第三方平臺(tái) 【溫州小程序開發(fā),溫州微信公眾號,平陽做網(wǎng)站,平陽網(wǎng)站建設(shè)公司,平陽小程序商城制作,昆陽萬全做網(wǎng)站,鰲江水頭小程序,蕭江騰蛟微信公眾號,山門順溪南雁海西南麂鳳臥麻步懷溪網(wǎng)絡(luò)網(wǎng)店服務(wù),政采云網(wǎng)店管理服務(wù)】...
本文章是自己編寫的,用微信第三方平臺(tái)開發(fā)實(shí)現(xiàn)小程序業(yè)務(wù),代碼很全,每一步都有詳細(xì)介紹,供大家學(xué)習(xí)參考。
第一步:
申請微信開放平臺(tái)帳號并創(chuàng)建第三方平臺(tái)第二步:
公眾號/小程序授權(quán)給第三方平臺(tái) class Weixin extends Common {
private $appid = '
wx3e******165c'
;
//第三方平臺(tái)應(yīng)用appid private $appsecret = '
13e**********d039'
;
//第三方平臺(tái)應(yīng)用appsecret private $token = '
ePF58******Q2Ae'
;
//第三方平臺(tái)應(yīng)用token(消息校驗(yàn)Token) private $encodingAesKey = '
bzH***FCamD'
;
//第三方平臺(tái)應(yīng)用Key(消息加解密Key) private $component_ticket= '
ticket@**xv-g'
;
//微信后臺(tái)推送的ticket,用于獲取第三方平臺(tái)接口調(diào)用憑據(jù) /* * 掃碼授權(quán),注意此URL必須放置在頁面當(dāng)中用戶點(diǎn)擊進(jìn)行跳轉(zhuǎn),不能通過程序跳轉(zhuǎn),否則將出現(xiàn)“請確認(rèn)授權(quán)入口頁所在域名,與授權(quán)后回調(diào)頁所在域名相同....”錯(cuò)誤 * @params string $redirect_uri : 掃碼成功后的回調(diào)地址 * @params int $auth_type : 授權(quán)類型,1公眾號,2小程序,3公眾號/小程序同時(shí)展現(xiàn)。
不傳參數(shù)默認(rèn)都展示 */ 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;
}
/* * 獲取第三方平臺(tái)access_token * 注意,此值應(yīng)保存,代碼這里沒保存 */ 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;
}
}
/* * 第三方平臺(tái)方獲取預(yù)授權(quán)碼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網(wǎng)絡(luò)提交 * @params string $url : 網(wǎng)絡(luò)地址 * @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網(wǎng)絡(luò)提交 * @params string $url : 網(wǎng)絡(luò)地址 */ 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;
}
}
use thinkDb;
class Openoauth extends Common {
private $appid = '
wx3e******165c'
;
//第三方平臺(tái)應(yīng)用appid private $appsecret = '
13e**********d039'
;
//第三方平臺(tái)應(yīng)用appsecret private $token = '
ePF58******Q2Ae'
;
//第三方平臺(tái)應(yīng)用token(消息校驗(yàn)Token) private $encodingAesKey = '
bzH***FCamD'
;
//第三方平臺(tái)應(yīng)用Key(消息加解密Key) private $component_ticket= '
ticket@**xv-g'
;
//微信后臺(tái)推送的ticket,用于獲取第三方平臺(tái)接口調(diào)用憑據(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") {
//取消公眾號/小程序授權(quán) $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);
//公眾號取消授權(quán) Db::name("wxminiprograms")->where('
authorizer_appid'
,$AuthorizerAppid)->update($save);
//小程序取消授權(quán) }
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'
] $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]);
}
}
}
}
use thinkModel;
use thinkDb;
use thinkCache;
class Miniprogram extends Model {
private $thirdAppId;
//開放平臺(tái)appid private $encodingAesKey;
//開放平臺(tái)encodingAesKey private $thirdToken;
//開放平臺(tái)token private $thirdAccessToken;
//開放平臺(tái)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("請?jiān)黾游⑿诺谌焦娞柶脚_(tái)賬戶信息",'
'
);
exit;
}
}
/* * 設(shè)置小程序服務(wù)器地址,無需加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("設(shè)置小程序服務(wù)器地址失敗,appid:".$this->authorizer_appid,$ret);
return false;
}
}
/* * 設(shè)置小程序業(yè)務(wù)域名,無需加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("設(shè)置小程序業(yè)務(wù)域名失敗,appid:".$this->authorizer_appid,$ret);
return false;
}
}
/* * 成員管理,綁定小程序體驗(yàn)者 * @params string $wechatid : 體驗(yàn)者的微信號 * */ 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("綁定小程序體驗(yàn)者操作失敗,appid:".$this->authorizer_appid,$ret);
return false;
}
}
/* * 成員管理,解綁定小程序體驗(yàn)者 * @params string $wechatid : 體驗(yàn)者的微信號 * */ 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("解綁定小程序體驗(yàn)者操作失敗,appid:".$this->authorizer_appid,$ret);
return false;
}
}
/* * 成員管理,獲取小程序體驗(yàn)者列表 * */ 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("獲取小程序體驗(yàn)者列表操作失敗,appid:".$this->authorizer_appid,$ret);
return false;
}
}
/* * 為授權(quán)的小程序帳號上傳小程序代碼 * @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("為授權(quán)的小程序帳號上傳小程序代碼操作失敗,appid:".$this->authorizer_appid,$ret);
return false;
}
}
/* * 獲取體驗(yàn)小程序的體驗(yàn)二維碼 * @params string $path : 指定體驗(yàn)版二維碼跳轉(zhuǎn)到某個(gè)具體頁面 * */ 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("獲取體驗(yàn)小程序的體驗(yàn)二維碼操作失敗,appid:".$this->authorizer_appid,$ret);
return false;
}
else {
return $url;
}
}
/* * 提交審核 * @params string $tag : 小程序標(biāo)簽,多個(gè)標(biāo)簽以空格分開 * @params strint $title : 小程序頁面標(biāo)題,長度不超過32 * */ public function submitReview($tag = "魔盒CMS 微信投票 微網(wǎng)站 微信商城" ,$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;
}
}
/* * 小程序?qū)徍顺坊? * 單個(gè)帳號每天審核撤回次數(shù)最多不超過1次,一個(gè)月不超過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("小程序?qū)徍顺坊夭僮魇?,appid:".$this->authorizer_appid,$ret);
return false;
}
}
/* * 查詢指定版本的審核狀態(tài) * @params string $auditid : 提交審核時(shí)獲得的審核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;
}
}
/* * 獲取授權(quán)小程序帳號的可選類目 * */ 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("獲取授權(quán)小程序帳號的可選類目操作失敗,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;
}
}
/* * 更新授權(quán)小程序的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("更新授權(quán)小程序的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);
}
}
use apphomemodelMiniprogram;
use thinkDb;
class Wxminiprogram extends Pub {
public $appid = '
wx57****1bfb'
;
//需要實(shí)現(xiàn)業(yè)務(wù)小程序appid public function index() {
return view();
}
public function doAction() {
if(request()->isPost()) {
$action = input('
action'
);
$mini = new Miniprogram($this->appid);
if($action == '
auth'
) {
//小程序授權(quán) echo '
'
;
}
elseif($action == '
setServerDomain'
) {
//設(shè)置小程序服務(wù)器域名地址 if($mini->setServerDomain()){
echo '
'
;
}
else {
echo '
'
;
}
}
elseif($action == '
setBusinessDomain'
) {
//設(shè)置業(yè)務(wù)域名 if($mini->setBusinessDomain()){
echo '
'
;
}
else {
echo '
'
;
}
}
elseif($action == '
bind'
) {
//綁定小程序體驗(yàn)者 $wechatid = input('
wechatid'
);
if($wechatid) {
if($mini->bindMember($wechatid)){
echo '
'
;
}
else {
echo '
'
;
}
}
else {
echo '
'
;
}
}
elseif($action == '
uploadCode'
) {
//上傳小程序代碼 if($mini->uploadCode(2)){
echo '
'
;
}
else {
echo '
'
;
}
}
elseif($action == '
getExpVersion'
) {
//獲取體驗(yàn)小程序的體驗(yàn)二維碼 $qrcode = $mini->getExpVersion();
if($qrcode){
echo '
'
;
}
else {
echo '
'
;
}
}
elseif($action == '
review'
) {
//提交審核 $auditid = Db::name('
wxminiprogram_audit'
)->where(['
appid'
=>$this->appid,'
status'
=>['
neq'
,0]])->order('
create_time'
,'
desc'
)->value('
auditid'
);
if($auditid){
echo '
'
;
}
else {
if($mini->submitReview()){
echo '
'
;
}
else {
echo '
'
;
}
}
}
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 '
'
;
}
elseif($audit['
status'
] == 1) {
echo '
'
;
}
elseif($audit['
status'
] == 2) {
echo '
'
;
}
else {
echo '
'
;
}
}
else {
echo '
'
;
}
}
else {
echo '
'
;
}
}
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 '
'
;
}
elseif($audit['
status'
] == 1) {
echo '
'
;
}
elseif($audit['
status'
] == 2) {
echo '
'
;
}
else {
echo '
'
;
}
}
else {
echo '
'
;
}
}
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 '
'
;
}
else {
$errcode = $mini->release();
if($errcode){
echo '
'
;
}
else {
echo '
'
;
}
}
}
}
}
}
wxminiprograms數(shù)據(jù)表,保存已授權(quán)小程序的基本信息及授權(quán)相關(guān)信息(authorizer_access_token/authorizer_refresh_token)這兩個(gè)值很重要,代小程序?qū)崿F(xiàn)業(yè)務(wù)基本上是通過這兩個(gè)值來實(shí)現(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 '
平臺(tái)生成的token值'
, `head_img` varchar(255) DEFAULT NULL COMMENT '
微信小程序頭像'
, `verify_type_info` tinyint(1) DEFAULT NULL COMMENT '
授權(quán)方認(rèn)證類型,-1代表未認(rèn)證,0代表微信認(rèn)證'
, `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格式。
判斷是否為小程序類型授權(quán),包含network小程序已設(shè)置的各個(gè)服務(wù)器域名'
, `func_info` longtext COMMENT '
json格式。
權(quán)限集列表,ID為17到19時(shí)分別代表:
17.帳號管理權(quán)限 18.開發(fā)管理權(quán)限 19.客服消息管理權(quán)限 請注意:
1)該字段的返回不會(huì)考慮小程序是否具備該權(quán)限集的權(quán)限(因?yàn)榭赡懿糠志邆洌?br>'
, `authorizer_appid` varchar(45) DEFAULT NULL COMMENT '
小程序appid'
, `authorizer_access_token` varchar(255) DEFAULT NULL COMMENT '
授權(quán)方接口調(diào)用憑據(jù)(在授權(quán)的公眾號或小程序具備API權(quán)限時(shí),才有此返回值),也簡稱為令牌'
, `authorizer_expires` int(10) unsigned DEFAULT NULL COMMENT '
refresh有效期'
, `authorizer_refresh_token` varchar(255) DEFAULT NULL COMMENT '
接口調(diào)用憑據(jù)刷新令牌'
, `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '
授權(quán)時(shí)間'
, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='
微信小程序授權(quán)列表'
;
-- 2018-07-25 09:32:49wxminiprogram_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 '
當(dāng)status=1,審核被拒絕時(shí),返回的拒絕原因'
, `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '
提交審核時(shí)間'
, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='
微信小程序提交審核的小程序'
;
-- 2018-07-25 09:35:07x相關(guān)推薦:
微信開發(fā)公眾號平臺(tái)視頻教程微信公眾平臺(tái)開發(fā)者文檔PHP微信公眾平臺(tái)開發(fā)視頻教程以上就是終于整理出來了,用微信第三方平臺(tái)授權(quán)小程序業(yè)務(wù)的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
微信
分享相關(guān)標(biāo)簽:
微信 微信開放平臺(tái) 微信小程序 php本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請注明出處,感謝您的尊重!
上一篇:
來看看你的顏值多高吧!基于Python開發(fā)的公眾號
下一篇:
三招教你怎樣實(shí)現(xiàn)微信禮物打賞功能 (代碼全)相關(guān)文章相關(guān)視頻修改微信號有什么影響嗎?微信中共享實(shí)時(shí)位置什么意思數(shù)據(jù)庫設(shè)計(jì)的基本原則是什么?微信小程序調(diào)用圖片安全API終于整理出來了,用微信第三方平臺(tái)授權(quán)小程序業(yè)務(wù)打造自己的微信平臺(tái)微信開發(fā)模式 接入自己的微信服務(wù)器開發(fā)簡單的微信計(jì)算器 微信在線音樂點(diǎn)播(上) [溫州做微信公眾號]
為您推薦
- 微信公眾號里“JS接口域名”實(shí)現(xiàn)分享功能 2020-08-24
- 微信支付驗(yàn)證或簽名失敗是什么原因?附三種解決方案 2020-08-24
- android微信登陸、分享做了一段時(shí)間了發(fā)現(xiàn)的一些坑 2020-08-24
- 最新整理出的微信分享后端接口實(shí)現(xiàn)的大致流程 2020-08-24
- 微信公眾號開發(fā):商戶如何給用戶發(fā)紅包實(shí)例講解 2020-08-24
- 長見識了,原來微信瀏覽器內(nèi)可以直接啟動(dòng)外部瀏覽器 2020-08-24
- 怎么創(chuàng)建微信公眾號自定義菜單欄?這里給出了權(quán)威解答 2020-08-24
- 微信公眾號開發(fā),實(shí)現(xiàn)倒計(jì)時(shí)的一個(gè)功能(純代碼) 2020-08-24