微信公众平台的开发过程及其要点

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 微信公众平台的搭建,首先需要确定整体的架构模式,我们一般选用B/S的整体架构模式,手机或者pc端可以通过关注微信公众 号,进而访问和操作公众号中的内容,其中的主要搭建包括: A.使用xampp继承开发环境来搭建后台,需要用到的服务器和数据库。

微信公众平台的搭建,首先需要确定整体的架构模式,我们一般选用B/S的整体架构模式,手机或者pc端可以通过关注微信公众

号,进而访问和操作公众号中的内容,其中的主要搭建包括:

A.使用xampp继承开发环境来搭建后台,需要用到的服务器和数据库。(apache+mysql)

B.前端页面通过html+php动态网页来实现。如果再加点js+css效果就显示的更加完美了。

 

1.首先开发者需要申请一个微信的公众号,由于目前微信开放的微信接口测试号提供了与微信公众平台类似的功能,只是在某些

接口的访问权限和次数上有一定的限制,所以对于初学者,可以先申请一个微信接口测试号。

http://weixin.qq.com/

 

 

 

 

2.接下来做的是对微信服务器以及对数据库网页服务器的部署。

服务器可以选择阿里云,百度云,腾讯云等服务器,然后再服务器端完成xampp的下载和整体部署。

 

linux下xampp集成包安装配置方法

http://www.cnblogs.com/ygyg/p/5395207.html

 

xampp的下载地址

https://www.apachefriends.org/zh_cn/index.html

wget https://downloadsapachefriends.global.ssl.fastly.net/xampp-files/5.6.30/xampp-linux-x64-5.6.30-0-installer.run

 

 

 3.系统的原理

信公众平台的数据交互线路一般按照“微信用户客户端—微信服务器(我的公众号)—网微站服务器

(核心代码页)—微信服务器(我的公众号)—微信客户端”,每一次的数据交互都是通过用户发送

消息进行请求。微信公众平台提供消息接口的行为标准是指导数据进行交互。如果微信公众号接入

了消息接口,当用户在向公众号发送消息请求时,微信服务器将通过HTTP 请求传送给网站服务器,

网站服务器会根据我们提前设置好的规则进行响应,并回复指定的操作或消息。

 

4.进行前台浏览器或者手机微信端和后台数据库的交互

安装php-curl

apt-get install php5-curl

 

启动xampp开发环境

/opt/lampp/lampp start

 

向服务器上传校验文件,与微信公众平台校验,以一微信公众平台税务系统为例,校验文件内容可以为:

 

<?php

$text[0]="请点击相应按钮完成您办理的业务。";

$text[1]="欢迎关注林海市国税系统微信公众平台!";

$text[2]="很高兴为你服务!";

$text[3]="有事请留言,我们会在第一时间为您解决!";

include "wechat.class.php";

$options = array('token'=>'weixin_abc', //填写你设定的key
'encodingaeskey'=>'encodingaeskey', //填写加密用的EncodingAESKey,如接口为明模式可忽略
'appid' => 'wxe64345b8801234ad', //填写与自己公众号相对应的appid
'appsecret' => 'f21524rty822rttycd1e9c846566da8676' //填写与自己公众号相对应的appsecret
);
print_r($options);//自定义菜单开发 $button_data = array (
'button' => array (
0 => array (
'name' => '我要报税',
'sub_button' => array (
0 => array (
'type' => 'view',
'name' => '身份绑定',
'url' => '115.28.26.89/bangding1.php', ),
1 => array (
'type' => 'view',
'name' => '申报纳税',
'url' => 'http://115.28.26.89/userlogin.php', ),
2 => array (
'type' => 'view',
'name' => '业务办理',
'url' => 'http://115.28.26.89/ywbl.php', ),
3 => array (
'type' => 'view',
'name' => '办税指南',
'url' => '115.28.26.89/zhinan.php', ), ), ),
1 => array (
'name' => '我要查询',
'sub_button' => array (
0 => array (
'type' => 'view',
'name' => '最新通知',
'url' => '115.28.26.89/zxgg.php', ),
1 => array (
'type' => 'view',
'name' => '发票信息查询',
'url' => '115.28.26.89/fpxxcx.php', ),
2 => array (
'type' => 'view',
'name' => '税收查询',
'url' => '115.28.26.89/sscx.php', ),
3 => array (
'type' => 'view',
'name' => '税收法规',
'url' => '115.28.26.89/ssfg.php', ), ), ),
2 => array (
'name' => '其他',
'sub_button' => array (
0 => array (
'type' => 'view',
'name' => '留言',
'url' => '115.28.26.89/ly.php', ),
1 => array (
'type' => 'location_select',
'name' => '发送位置',
'key' => 'rselfmenu_2_1', ), ), ), ), ); $weObj = new Wechat($options); $weObj->valid();//明文或兼容模式可以在接口验证通过后注释此句,但加密模式一定不能注释,否则会验证失ètype = $weObj->createMenu($button_data);//image上传照片开发 $type="image"; $data1=array('media'=>'11234','filename'=>'@/opt/lampp/htdocs/pic/fen.jpg' ); print_r($data1); $media_id1=11234;//$result=$weObj->uploadMedia($data1,$type);//print_r($result); $type = $weObj->getRev()->getRevType();

switch($type)
{case Wechat::MSGTYPE_TEXT://$weObj->text(" hello, I'm wechat ,welcome to the linhai guo shui system . can we help you? " )->reply(); $weObj->text($text[rand()%4])->reply(); exit;

break;

case Wechat::MSGTYPE_EVENT:break;

case Wechat::MSGTYPE_IMAGE: $response = $weObj->getRevPic();

foreach($response as $key=>$value) { $weObj->image($value)->reply();//$weObj->text($value)->reply();//$weObj->text($key)->reply();}//$weObj->text("$media_id"+$text[rand()%3])->reply();//$weObj->image($media_id1)->reply();//$weObj->news($data_news)->reply();break;default: $weObj->text('bangding1.php ')->reply(); }?>

 

 

 5.在自定义接口菜单型中获取access_token.

  为了更好的服务用户,可以开发属于自己的自定义菜单,公众平台已经为开发者提供了在线接口调试工具,开发者在这里应该选择的

接口类型为基础支持,选择的接口列表为获取access_token接口/token,然后输入自己测试号appid和secret,选择点击检查问题按

钮,获得我要进行自定义菜单设计的access_token编码。

  当取得access token编码串以后,继续在接口的调试工具中进行重新选择,这时选择的接口类型为自定义菜单,自定义接口为menu

下的create,在参数列表中输入自己刚才获取的access_token编码,最后在body框中写入自己编好的自定义菜单编码。注意这里的自定

义菜单提交的编码格式只支持JSON数据结构,他和网站服务器中提交的自定义菜单数组格式不同。

 

 

 

  在成功的获取access_token以后,进行自定义接口菜单的调试。

 

 

 

 

 6.然后进行自定义接口json包的上传验证。

{"button": [

{"name": "我要办税",

"sub_button": [

{"type": "view",

"name": "身份绑定",

"url": "http://114.218.216.89/bangding1.php/"

},

{"type": "view",

"name": "申报纳税",

"url": "http://114.218.216.89/userlogin.php/"

},

{"type": "view",

"name": "业务办理",

"url": "http://114.218.216.89/ywbl.php/"

},

{"type": "view",

"name": "办税指南",

"url": "http://114.128.216.89/zhinan.php/"

}

]

},

{"name": "我要查询",

"sub_button": [

{"type": "view",

"name": "最新通知",

"url": "http://114.218.216.89/zxgg.php/"

},

{"type": "view",

"name": "发票信息查询",

"url": "http://114.218.216.89/fpxxcx.php/"

},

{"type": "view",

"name": "税收查询",

"url": "http://115.28.216.89/sscx.php/"

},

{"type": "view",

"name": "税收法规",

"url": "http://114.218.216.89/ssfg.php/"

}

]

},

{"name": "其他",

"sub_button": [

{"type": "view",

"name": "留言",

"url": "http://114.218.216.89/ly.php/"

},

{"name": "发送位置",

"type": "location_select",

"key": "rselfmenu_2_1"

}

]

}

]

}

 

 

 

在提交json body自动定义接口包后,微信公众平台会和后台服务器平台进行验证。


 

7.token与access_token的区别

token是在微信后台选择开发模式的时候填写的,是自己的微信公众平台与后台验证的关键字,类似于一种令牌或者指令。
而access_token则是通过接口调用生成的,在相应的微信公众平台接口调试页面通过输入自己的appid和appsecret而生成的。 https
://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx607ad3f161bc9c83&secret=7d955b008d74fafbc6878d48a9641961 https://segmentfault.com/q/1010000003749563 https://mp.weixin.qq.com/debug

 

 

8.在通过验证后,就可以编写网页文件,网页编写可以采用html+php,在加一部分jsp和css,效果会显得更加完美。

网页一般上传在自己的/opt/lampp/htdocs目录当中。

 

 

上传过程中可以使用Linux自带的命令rz/sz命令来完成。也可以使用工具进行,比如xftp和MobaXtermPersonalEdition等工具。

通过在浏览器窗口输入自己的服务器公网ip地址,或者是自己的域名,就可以访问进入到自己的服务器页面当中。如图。

 

 

通过点击第一行的PhpMyAdmin可以进入到数据库,进而在数据库中创建爱你,修改查询等对自己的数据库进行操作。

 

 

9.公众号中的自动回复设计

在已经写好的验证文件demo.php中进行添加自定义回复消息,寻找选择模块switch语句,然后进行设置MEGTYPE_TEXT。

$weObj->text($text[rand()%4])->reply();添加数组text,并为其赋值,最后根据用户消息请求次数给予回复[15]。 涉及到的核心代码主要包括:$text[0]="请点击相应按钮完成您办理的业务。
";$text[1]="欢迎关注林海市国税系统微信公众平台!";$text[2]="很高兴为你服务!";switch($type) { $weObj->text($text[rand()%4])->reply(); $response = $weObj->getRevPic(); foreach($response as $key=>$value) { $weObj->image($value)->reply(); } break; default: $weObj->text('wehope.top/bangding1.php ')->reply(); }

 

 

 

 10.数据库的管理和设计

通过与服务器中的数据库建立连接,可以将用户的注册信息,增值税、消费税、个人所得税等信息方便的录入到数据库的表单中。同时为了方便系统管理员对数据库MySql的管理,
采用了phpMyAdmin技术,通过网页远程对数据库进行有效的管理[16]。 数据库中的表单创建代码包括: (1) 注册表的创建 CREATE table `register` ( `id` int(10) NOT NULL auto_increment, `user` varchar(10) NOT NULL default '0', `regdate` date NOT NULL, `code` varchar(11) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; (2) 给注册表插入新用户 insert into register (id,user,regdate,tel) values('','李斯','now()','12345678901') (3) 与数据库建立连接<?php$connect = @ mysql_connect("localhost", "root", "zfdroot")
or die("数据库链接错误");mysql_select_db("bbs", $connect);mysql_query("set names 'utf-8'"); //使用utf-8编码格式; ?>

 

 

 11.前台界面的设计和实现

  通过在阿里云的网站服务器端配置PHP5-curl,采用预定义的$_GET$_POST变量、可以收集来自method="post"表单中提交的值,并向服务器和数据库提交参数。

微信客户端可以将用户输入的注册、绑定、纳税等基本信息通过http、ftp等协议传输到服务器的数据库中,同时服务器端通过判断客户端的请求类型给出相应的响应信息

部分代码包括:

 if(isset($_POST['submit']) && $_POST['submit'])  

 { $sql="insert into register (id,user,regdate,code) values('','$_POST[user]',now(),'$_POST[code]')";

  mysql_query($sql);

  echo "<script language=\"javascript\">alert('注册成功');history.go(-1)</script>"; }

 

 

 

 

 

涉及到的标题设置代码包括:

<?php

echo '<img src="/pic/wa.jpg" width="1300" height="400">' ;

?>

<head>

<title>我要查询 |  最新通知 </title>

<p><font size=7 color= blue >通知公告 </p> </font>

<p><hr size=3 color= blue></p><br>

</head>

 

核心代码包括:

<?php

 error_reporting(E_ALL^E_NOTICE);

  include("fpxxcx.php");

 include("connect.php");

echo '<img src="/pic/fen.jpg" width="1300" height="400">' ;

?>

<p><font size=7 color= blue >发票查询信息明细 </p> </font>

<p><hr size=3 color= blue></p><br>

<?

$sql="select * from luru where haoma= $work "; //倒序排序

$query=mysql_query($sql);

while($row=mysql_fetch_array($query))

{

?>

<td><b><font  color=red size=6 ><center>  <?=$row[type]?>类发票</font></b></td></center>

时间:<?echo date("Y年-m月-d日 H:i:s",time());?>

   <td>编号ID:<?=$row[id]?> </td>

   <td>发票代码:<?=$row[daima]?></td>

   <td>开票日期:<?=$row[date]?> </td>

   <td>发票号码:<?=$row[haoma]?></td>

   <td>付款方名称:<?=$row[user]?> </td>

   <td>身份识别号码:<?=$row[uid]?></td>

   <td>工程项目名称:<?=$row[user1]?> </td>

   <td>金额:<?=$row[money]?></td>

   <td>利率:<?=$row[money1]?> </td>

   <td>备注:</td>

   <?  

  }

   ?>

 

16:41:46

 

其中的关键代码包括:

const EVENT_LOCATION = 'LOCATION';         //上报地理位置

if (isset($this->_receive['Location_X'])){

return array(

'x'=>$this->_receive['Location_X'],

'y'=>$this->_receive['Location_Y'],

); 

 }

 else     return false; 

 }

 

 

 12.资料文档下载

WeChatPHPSDK,让PHP接入微信公众平台更便捷

WeChatPHP-SDK-Intro

其它微信公众号开发文档若干

https://github.com/dodgepudding/wechat-php-sdk

https://mp.weixin.qq.com/wiki

 

13.构造函数及其参数

.构造函数参数

public function __construct($options)

{

$this->token = isset($options['token'])?$options['token']:'';

$this->encodingAesKey = isset($options['encodingaeskey'])?$options['encodingaeskey']:'';

$this->appid = isset($options['appid'])?$options['appid']:'';

$this->appsecret = isset($options['appsecret'])?$options['appsecret']:'';

$this->debug = isset($options['debug'])?$options['debug']:false;

$this->logcallback = isset($options['logcallback'])?$options['logcallback']:false;

}

 

 14.遇到的问题

1)从微信客户端提交的数据,在数据库中显示常看时,显示乱码

解决措施:文件以及数据库的编码格式尽量统一修改成utf-8格式。

(1)从微信客户端提交的数据,在数据库中显示常看时,显示乱码

解决措施:文件以及数据库的编码格式尽量统一修改成utf-8格式。

(2)图片无法显式

原因为路径不对,

<img src="/pic/deng.jpg" width="1300" height="400">

中缺少了/pic中的/

 

 

 

 

2018-01-17

16:09:0416:09:04

 



 

 

 

 

 

 

 

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
14天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
14天前
|
小程序 安全 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的身份认证与授权机制。身份认证包括手机号验证、微信登录和第三方登录,而授权机制涉及角色权限控制、ACL和OAuth 2.0。实践中,开发者可利用微信登录获取用户信息,集成第三方登录,以及实施角色和ACL进行权限控制。注意点包括安全性、用户体验和合规性,以保障小程序的安全运行和良好体验。通过这些方法,开发者能有效掌握小程序全栈开发技术。
|
14天前
|
JavaScript 前端开发 小程序
微信小程序全栈开发之性能优化策略
【4月更文挑战第12天】本文探讨了微信小程序全栈开发的性能优化策略,包括前端的资源和渲染优化,如图片压缩、虚拟DOM、代码分割;后端的数据库和API优化,如索引创建、缓存使用、RESTful API设计;以及服务器的负载均衡和CDN加速。通过这些方法,开发者可提升小程序性能,优化用户体验,增强商业价值。
|
14天前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中PWA技术的应用,PWA结合Web的开放性和原生应用的性能,提供离线访问、后台运行、桌面图标和原生体验。开发者可利用Service Worker实现离线访问,Worker处理后台运行,Web App Manifest添加桌面图标,CSS和JavaScript提升原生体验。实践中需注意兼容性、性能优化和用户体验。PWA技术能提升小程序的性能和用户体验,助力开发者打造优质小程序。
|
1月前
|
小程序 前端开发 程序员
微信小程序开发入门教程-小程序账号注册及开通
微信小程序开发入门教程-小程序账号注册及开通
|
2天前
|
数据采集 存储 人工智能
【Python+微信】【企业微信开发入坑指北】4. 企业微信接入GPT,只需一个URL,自动获取文章总结
【Python+微信】【企业微信开发入坑指北】4. 企业微信接入GPT,只需一个URL,自动获取文章总结
13 0
|
2天前
|
人工智能 机器人 API
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
6 0
|
2天前
|
缓存 人工智能 API
【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
6 0
|
14天前
|
SQL 安全 小程序
探索微信小程序全栈开发的安全性问题
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的安全性问题,包括数据安全、接口安全、隐私保护和代码安全。为解决这些问题,建议采取数据加密、使用HTTPS协议、身份认证与授权、输入验证、安全审计及漏洞扫描以及安全培训等措施。通过这些方法,开发者可提升小程序安全性,保护用户隐私和数据。
|
1月前
|
小程序 JavaScript
在使用微信小程序开发中用vant2框架中的Uploader 文件上传wx.uploadFile无反应和使用多图上传
网上有的说是bind:after-read="afterRead"的命名问题不支持-,但是我这儿执行了console.log("file",file);证明函数运行了。后来发现是multiple="true"原因开启了多图上传,如果是多图上传的话file就是数组了
36 2

热门文章

最新文章