微前端架构如何改变企业的开发模式与效率提升
1094
2022-10-05
终于整理出来了,用微信第三方平台授权小程序业务
本文章是自己编写的,用微信第三方平台开发实现小程序业务,代码很全,每一步都有详细介绍,供大家学习参考。
第一步:申请微信开放平台帐号并创建第三方平台
第二步:公众号/小程序授权给第三方平台
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]); } } }}-
isPost()) { $action = input('action'); $mini = new Miniprogram($this->appid); if($action == 'auth') { //小程序授权 echo ''; } elseif($action == 'setServerDomain') { //设置小程序服务器域名地址 if($mini->setServerDomain()){ echo ''; } else { echo ''; } } elseif($action == 'setBusinessDomain') { //设置业务域名 if($mini->setBusinessDomain()){ echo ''; } else { echo ''; } } elseif($action == 'bind') { //绑定小程序体验者 $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') { //获取体验小程序的体验二维码 $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') { //查询指定版本的审核状态 $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') { //查询最新一次提交的审核状态 $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') { //发布已通过审核的小程序 $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数据表,保存已授权小程序的基本信息及授权相关信息(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:49-
wxminiprogram_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-
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~