如何实现开发一个企业认证开发版微信服务号的详细步骤

题目:企业如何实现开发一个企业开发版微信公众号的详细步骤?(以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

  2win8服务器存在.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/UbuntuCentOS/RHEL/fedora/AliyunLinuxSUSE、等linux系统平台。 

Root用户登陆服务器执行相关操作。

一,查看操作系统版本。

#uname -r             ——查看版本。或用uname -a,或cat /proc/version

建议使用2.8.x或更新版本的Linux系统平台。 

 

二,系统2.8.x(包括2.8.0)及以上Linux平台安装启动过程(相对简单/推荐):

nat123软件linuxlinux2.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/AlinuxLinuxyumdebian/ubuntuapt-getsuse 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-develmonoDevelopmonodevelopyum/apt-get/zypper是等效的,不同系统下的对应命令。centos/RHEL/fedora/AlinuxLinuxyumdebian/ubuntuapt-getsuse 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

安装好monomonodev后,查看当前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/AlinuxLinuxyumdebian/ubuntuapt-getsuse 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

上述过程,在为公司工作的时候,本人都已经亲自实现并成功,现在该服务号已经完成商业应用,由于内容太多,有些配置环境的小细节可能没有提到,如有任何疑问,可微信扫码咨询博主:



猜你喜欢

转载自blog.csdn.net/yanxiaolx/article/details/80351428