题目:企业如何实现开发一个企业开发版微信公众号的详细步骤?(以PHP为例进行开发)
先附上一张流程图:
一、首先在微信公众平台官网进行注册登录,打款认证,微信公众平台小程序注册与认证详细过程看链接:
https://jingyan.baidu.com/article/72ee561a7d5d6fe16138df0e.html
二、在本地Windows环境下,配置好PHP编译运行环境
参考慕课网上的配置课程:http://www.imooc.com/video/3510
下载Wampserver64,地址:http://www.wampserver.com/en/#begin-wrapper
然后根据提示步骤,进行安装,安装好之后启动,Wampserver64服务器应该是绿色,其它颜色(红或黄)都不是正常启动。
注意测试代码“test.php”放在“D:\360Downloads\wamp64\www”即“\wamp64\www”目录下,在浏览器中打开看是否能够运行test.php程序代码
三、在Linux服务器下,配置好PHP编译运行环境
详细内容见博文(http://jingyan.baidu.com/article/9f63fb91a6aaa2c8400f0ec8.html)
工具/原料
centos 6.5系统
网络
yum,基本系统自带,没有自行安装个
方法/步骤
开始都只需要打些代码
1. 安装Apahce, PHP, MySQL以及php连接mysql库组件。 #yum -y install httpd php mysql mysql-server php-mysql
2. 安装apache扩展 #yum -y installhttpd-manual mod_ssl mod_perl mod_auth_mysql
3. 安装php的扩展 #yum -y installphp-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc
4. 安装MySQL的扩展 #yum -y installmysql-connector-odbc mysql-devel libdbi-dbd-mysql
上面的每个命令敲完后需要等待一段时间让其下载安装
#/sbin/servicehttpd start [启动httpd服务,与开机启动无关]
#/sbin/service mysqldstart [启动mysqld服务,与开机启动无关]
安装完后通过这两个命令启动服务
服务启动后,默认php文件存放的目录在/var/www/html目录下,这里建立一个test.php文件,里面打上些内容,如图,我这里是先删除原有的test.php,再新建
在浏览器中浏览
.
四、在本地编写好对接认证的PHP代码,并实现微信公众号开发的对接
慕课网上相关相关视频课程:http://www.imooc.com/learn/509
test1.php:
<?php
echo "success";
?>
test.php:
<?php
//获得参数 signature noncetoken timestamp echostr
$nonce = $_GET['nonce'];
$token = 'weixin';
$timestamp= $_GET['timestamp'];
$echostr = $_GET['echostr'];
$signature= $_GET['signature'];
//形成数组,然后按字典序排序
$array= array();
$array= array($nonce, $timestamp, $token);
sort($array);
//拼接成字符串,sha1加密 ,然后与signature进行校验
$str= sha1( implode( $array ) );
if($str == $signature && $echostr){
//第一次接入weixinapi接口的时候
echo $echostr;
exit;
}else{
// 接收事件推送并回复
//1.获取到微信推送过来post数据(xml格式)
$postArr= $GLOBALS['HTTP_RAW_POST_DATA'];
//2.处理消息类型,并设置回复类型和内容
/*<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
</xml>*/
$postObj= simplexml_load_string( $postArr );
//$postObj->ToUserName= '';
//$postObj->FromUserName= '';
//$postObj->CreateTime= '';
//$postObj->MsgType= '';
//$postObj->Event= '';
//gh_e79a177814ed
//判断该数据包是否是订阅的事件推送
if(strtolower( $postObj->MsgType) == 'event'){
//如果是关注subscribe 事件
if(strtolower($postObj->Event == 'subscribe') ){
//回复用户消息(纯文本格式)
$toUser = $postObj->FromUserName;
$fromUser= $postObj->ToUserName;
$time =time();
$msgType = 'text';
$content = '欢迎关注我们的微信公众账号'.$postObj->FromUserName.'-'.$postObj->ToUserName;
$template= "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info = sprintf($template, $toUser, $fromUser,$time, $msgType, $content);
echo$info;
/*<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
</xml>*/
}
}
//当微信用户发送imooc,公众账号回复‘imoocis very good'
/*<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
</xml>*/
if(strtolower($postObj->MsgType)== 'text'){
switch(trim($postObj->Content) ){
case1:
$content= '您输入的数字是1';
break;
case2:
$content= '您输入的数字是2';
break;
case3:
$content= '您输入的数字是3';
break;
case4:
$content= "<a href='https://www.baidu.com'>百度</a>";
break;
case'1234567':
$content= '7654321';
break;
}
$template= "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
//注意模板中的中括号 不能少 也不能多
$fromUser= $postObj->ToUserName;
$toUser = $postObj->FromUserName;
$time = time();
//$content = '18723180099';
$msgType = 'text';
echosprintf($template, $toUser, $fromUser, $time, $msgType, $content);
}
}
?>
记得将上面“test1.php”和“test.php”两个文件存放在linux的“/var/www/html/”目录下
截图一:
微信公众平台上提交验证,截图二:
五、解决本地8080端口到80端口的映射问题
1.将Linux服务器下的Apache默认80端口修改为8080端口,
参考如下博文:(http://jingyan.baidu.com/article/86112f136573352736978744.html)
2.开始利用nat123软件完成8080端口到80端口的映射,下载nat123安装到Linux上
解压后的nat123存放在我的电脑:“D:\360Downloads\nat123”目录下,可从我的电脑直接拷贝,然后上传到Linux服务器上。
3.映射步骤:(https://www.2cto.com/weixin/201504/390452.html)
(一):下载nat123
1:地址:http://www.nat123.com/Pages_2_32.jsp
2:win8服务器存在.Net4.0,直接下载简体版(2.8M);否则下载整个运行环境安装包
(二):安装到服务器上
http://www.nat123.com/Pages_8_602.jsp
我的是系统2.8.x以下Linux平台安装启动:http://www.nat123.com/pages_17_601.jsp
Nat123客户端Linux版本安装启动教程。推荐使用2.8.x及以上Linux系统环境。适用于Debian/Ubuntu、CentOS/RHEL/fedora/AliyunLinux、SUSE、等linux系统平台。
以Root用户登陆服务器执行相关操作。
一,查看操作系统版本。
#uname -r ——查看版本。或用uname -a,或cat /proc/version
建议使用2.8.x或更新版本的Linux系统平台。
二,系统2.8.x(包括2.8.0)及以上Linux平台安装启动过程(相对简单/推荐):
《nat123软件linux版linux2.8及更高版本以上的安装启动教程》
三,系统2.8.x以下Linux平台安装启动过程(仅供参考,如实际操作过程有其他异常提示,请按照实际环境提示解决):
1,本地系统环境更新
#yum update ——centos/RHEL/fedora/AliyunLinux系统使用的命令
#apt-get update ——debian/ubuntu系统使用的命令
#zypper update ——suse系统使用的命令
Yum/apt-get/zypper是等效的,不同系统下的对应命令。centos/RHEL/fedora/AlinuxLinux用yum;debian/ubuntu用apt-get;suse 用zypper。
如出现提示是否继续时,输入y回车。
出现提示完成complete表示更新成功完成。
本地更新操作可按需执行,建议执行;新装系统建议执行;未执行此更新操作,但后续操作过程中提示缺少某某,回头这一步更新再从头开始。
2,运行环境mono安装
#yum install mono-complete ——centos/RHEL/fedora/AlinuxLinux系统执行的命令
#apt-get install mono-complete ——debian/ubuntu系统执行的命令
#zypper install mono-complete ——SUSE系统执行的命令
如提示没有mono-complete,使用mono-devel或monoDevelop或monodevelop。yum/apt-get/zypper是等效的,不同系统下的对应命令。centos/RHEL/fedora/AlinuxLinux用yum;debian/ubuntu用apt-get;suse 用zypper。如以上install安装命令都提示不存在包,不要急,继续往下看,下面后续文档说明会有手动下载安装mono的步骤。
如过程中出现提示是否继续时,输入y并回车
出现完成提示,表示安装成功。
#mono -V ——查看安装运行环境版本信息,注意是大写的V字母
如果版本号信息是高于2.8.0的,则无需再执行下面的安装mono2.8的操作,跳跃到客户端安装启动步骤参考。如果小于2.8.0的版本号,继续参考往下的环境部署和mono2.8安装步骤。
环境部署之安装bison环境。如提示已存在时,忽略;如提示是否继续时输入y回车继续。
#yum installbison ——centos/RHEL/fedora/AlinuxLinux系统执行的命令
#apt-get installbison ——debian/ubuntu系统执行的命令
#zypper installbison ——SUSE系统执行的命令
环境部署之安装gettext环境。如提示已存在时,忽略;如提示是否继续时输入y回车继续。
#yum install gettext ——centos/RHEL/fedora/AlinuxLinux系统执行的命令
#apt-get install gettext ——debian/ubuntu系统执行的命令
#zypper install gettext ——SUSE系统执行的命令
#cd /mnt ——进入自己的目标文件夹目录,mnt换成自己(客户端)实际目录
在线下载mono2.8或更高版本安装包(部份环境不一定支持最新版本的安装包)
#wget http://origin-download.mono-project.com/sources/mono/mono-2.8.1.tar.bz2
#wget http://origin-download.mono-project.com/sources/monodevelop/monodevelop-2.8.1.tar.bz2
更多安装可以直接访问http地址查看,省略最后的文件名,保留前台的http目录即可浏览器访问查看。
#tar jvxf mono-2.8.1.tar.bz2 ——解压本地
#tar jvxf monodevelop-2.8.1.tar.bz2 ——解压本地
#cd /mnt/mono-2.8.1 ——进入mono-2.8.1的解压目录,mnt换成自己的实际目录
安装mono环境
#./configure--prefix=/usr ——如提示少什么,就先安装什么,再来执行这一句,直到无报错提示
#make
#make install
#cd /mnt/monodevelop-2.8.1 ——进入monodevelop-2.8.1的解压目录,mnt换成自己的实际目录
安装monodev环境
#./configure--prefix=/usr ——如提示少什么,就先安装什么,再来执行这一句,直到无报错提示
#make
#make install
安装好mono和monodev后,查看当前mono版本信息
#mono -V ——大写的V字母
确保版本信息提示为2.8.0或大于这个版本号。
3,客户端安装
可以直接在自己Linux服务器在线下载安装,也可以登陆网站下载安装包并上传自己Linux服务器。
(1)方法一:直接在自己Linux服务器在线下载安装方法:
#cd /mnt ——将mnt换成是自己本地实际目标安装目录
#wget http://www.nat123.com/down/nat123linux.tar.gz ——下载安装包。过程可能有转跳提示,忽略它
# tar -zxvf nat123linux.tar.gz 解压本地目录
(2)方法二:登陆网站下载安装包并上传自己Linux服务器方法:
访问网站,在软件下载页面,下载Linux版本安装包到本地。
并通过SSH Secure File或其他FTP方式或其他方法上传到自己的Linux服务器。
4,客户端启动
客户端启动之screen方式
(1)安装screen。本地已经有,或安装提示已存在,可忽略。
#yum install screen ——centos/RHEL/fedora/AlinuxLinux系统执行的命令
#apt-get install screen ——debian/ubuntu系统执行的命令
#zypper install screen ——SUSE系统执行的命令
yum/apt-get/zypper是等效的,不同系统下的对应命令。centos/RHEL/fedora/AlinuxLinux用yum;debian/ubuntu用apt-get;suse 用zypper。安装过程如有提示是否继续,输入y回车确认继续。
已经安装过screen,和系统本身自带有的,则不需要再重复安装了。
(2)客户端启动
#cd /mnt ——将mnt换成是自己本地实际安装目录
#screen -S nat123 ——创建一个客户端运行进程。注意是大写的S字母。如提示没有screen,则安装screen后再执行。
#mono nat123linux.sh ——运行客户端,并按提示依次输入自己的帐号和密码
登陆成功截图如下预览
运行成功正常后,按住Ctrl键,并依次先按A,再按D,退出当前窗口,提示显示为detached分开任务,不会关闭当前进程。
客户端启动之service后台启动方式
此方式无需安装screen,执行过程示例如下
# cd /mnt ------将mnt换为自己本地实际安装目录
# mononat123linux.sh ------根据提示手动输入帐号密码
# mono nat123linux.sh service& ------自动读取上次成功登录帐号并以后台启动
更多service启动方式可参考《linux2.8及以上版本的安装启动教程》里面的客户端启动章节
5,登陆网站远程web管理
登陆网页进行端口映射和动态域名解析添加修改删除,进行管理。用户中心,端口映射列表/域名解析列表相关操作。
开机自动读本地最近登录帐号启动(推荐):
(1)本地先手动输入帐号密码成功登录一次;客户端会自动记住正确的登录帐号密码。
(2)再次登录时即无需重复输入帐号密码,通过 #mono nat123linux.sh service & 即可登录使用。可将此命令写入自己的开机启动脚本即可实现开机自动登录使用。
带帐号Linux下开机自动登录使用:
支持 #mono nat123linux.sh autologin username password & 带帐号一令式登录。其中username是自己的帐号名,password是自己的密码。可以通过此登录方式自定义shell脚本或类似开机调用自动登录使用。提示,此方式下如开机未及时联网成功,可能会导致客户端登录失败。
>>查看centos/ubuntu等开机自动登录启动示例
提示:
1,在实际操作过程中,结合本地环境,以本地实际为准。
2,确保服务器有联网。网络好时,更新安装会快点;网络一般时,可能会要慢点。
3,同一个账号,默认最后登陆点为端口映射和动态域名解析生效地址;多机登陆使用,可以按需设置端口映射的负载均衡和故障转移;多机登陆使用,可以按需设置动态域名解析的负载均衡和故障转移。
4,不熟悉linux的建议使用windows环境和windows版。
三:注册nat123账号,并登录
按照提示流程依次操作注册即可,注意要购买300个T币(30元),才能认证成功。
四:登录界面,添加映射,配置端口映射
1:如图:
2:内网端口:8080,内网地址:192.168.103.212
3:应用名称:sstest
4:外网域名:yaoyaotest.nat123.net,访问的外网IP地址:http://yaoyaotest.nat123.net/test.php
五:确认保存回到登录界面,从”端口映射列表“查看配置状态,微笑表示映射成功,否则不成功需要根据错误提示修改配置;
1:如图:
六:测试外网能否访问上述项目,并进行微信公众号的token提交测试
1:地址:http://yaoyaotest.nat123.net/test.php
六、常见出错问题解答:
1.Wampserver64启动之后没有变成正常的绿色状态?
解决方法:删除原来的程序安装包,重新安装并启动,反正安装时间也短。
2.在微信公众平台上修改服务器配置时,注意:(1)确认nat123软件已经在Linux下登录了,
登录命令为:cd /var/www/html/nat123/nat123_install/source/program
mono nat123linux.sh
接着输入登录用户名:xxxxx 密码:xxxxxx
(2)可以先在浏览器上访问PHP程序代码,最好先启动本地Wampserver64服务器,看是否能够访问IP地址:
http://yaoyaotest.nat123.net/test1.php和http://yaoyaotest.nat123.net/test.php进行测试
七、其它玩法,接入图灵机器人
如何在微信公众号调用图灵机器人:https://jingyan.baidu.com/article/b2c186c8c8877cc46ff6ff52.html
上述过程,在为公司工作的时候,本人都已经亲自实现并成功,现在该服务号已经完成商业应用,由于内容太多,有些配置环境的小细节可能没有提到,如有任何疑问,可微信扫码咨询博主: