基于bluemix的微信公众平台开发——环境搭建
来源:互联网 发布:饥荒巨人的统治mac版 编辑:程序博客网 时间:2024/06/11 19:14
基于bluemix的微信公众平台开发——环境搭建
一、微信公众平台运行原理
当用户A向自己关注的微信公众号发送一条消息以请求某项服务时,,实质上是用户A将请求的消息发送到微信服务器(即图中的微信公众平台),然后由微信服务器将用户的请求转发到公众账号服务器。当公众账号服务器响应用户A的请求,生成相应的回复消息时,也是将这个消息发送到微信服务器,再由微信服务器转发给用户A。
微信服务器与公众账号服务器之间进行通信时,只要使用http协议传送消息,消息主要使用XML和JSON两种格式进行封装。
二、,使用bluemix作为公众账号服务器
1、申请bluemix账号
(1)在网页浏览器的地址中输入https://new-console.ng.bluemix.net/,将显示如下界面
图2-1
(2)在图2-1的网页单击右上角的“注册”链接,将显示如下网页,并进行注册。
图2-2
(3)注册后,bluemix会给注册页面中填写的邮箱发送一封激活邮件,登录到邮箱中查看激活邮件,点击激活邮件中的链接即可激活账号。激活后即完成了bluemix的注册过程,接下来就可以创建应用,并将开发的项目上传到应用。
2、下载并安装 Cloud Foundry 程序
1、首先要创建一个新的应用,
(1)登录 https://console.ng.bluemix.net/
(2)点击网页右上角的仪表盘,如图2-3。
图2-3
(3)选择cloud foundry 创建应用程序,并选择web应用程序
图2-4
图2-5
(4)在这里,我们使用php语言,给新的应用程序命名,即可完成应用程序的创建。程序创建完成后会自动运行,这时打开仪表盘就可以看到正在运行的应用程序,如图2-8所示。
图2-6
图2-7
2、下载安装Cloud Foundry 程序
(1) 打开创建的应用,点击网页上的开始编码。
图2-8
图2-9
(2) 根据页面提示,下载入门代码,之后点击下载cf命令行界面,根据c操作系统下载相应的安装包,并安装。例如笔者下载地址是: Stable Installers 下的”Windows 64 bit”下载了一个文件,该文件为 installer-windows-amd64 .zip。 安装该文件后,在 C:\Program Files (x86)\Cloud Foundry 下产生了一个 cf.exe 文件。同时经过检查发现,在系统的 PATH 路径中,也增加了该目录,也就是说可以直接在 DOS COMMAND 环境下输入 CF 命令执行该文件。
图2-10
图2-11
(3)cf的具体使用将在后文进行介绍
三、设置微信接口配置
1、申请测试号
登陆配置测试账号在浏览器中输入 http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?t=sandbox/login 将打开如图3-1所示的测试账号登录页面。
图3-1
也可以申请正式的微信公众账号,在图3-2 所示的页面中点击“进入公众平台测试账号”
图3-2
2、根据微信公众平台开发者文档,接入微信公众平台开发,开发者需要按照如下步骤完成:
填写服务器配置
验证服务器地址的有效性
http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html
(1)第一步:填写服务器配置
进入公众平台测试账号后,可以看到有“接口配置信息”,在这里的服务器地址(URL)和Token 中填写相应的值,就可以建立信息传输的通道,其中URL是开发者用来接收微信消息和事件的接口URL(这里填写bluemix上面创建的应用的URL)。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。
验证原理:
在微信服务器向URL地址发送的get请求中带有四个参数:
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。
为什么建立一个信息通道需要这么多参数呢,这是因为微信公众账号服务器的URL是对外公开的,任何互联网上的用户都可以通过这个URL访问改服务器中的web页面,也就是说,其他人也可能杜撰一个消息发布到公众账号服务器上来,因此,为了验证消息的来源是由微信服务器发送的,因此特别添加以上参数,在我们的代码中,对以上参数按一定的算法进行计算,即可验证信息的来源了,微信规定的加密/校验流程如下:
- 将token、timestamp、nonce三个参数进行字典序排序
- 将三个参数字符串拼接成一个字符串进行sha1加密
- 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
(2)编写代码
打开eclipse,这时需要打开从bluemix上下载的入门代码,编写其中index.php 的内容。代码如下:
<?php/** * wechat php test *///define your tokendefine("TOKEN", "token"); //定义token,这里填写接口配置时设置的token$wechatObj = new wechatCallbackapiTest();//生成类实例$wechatObj->valid();//调用类的校验方法class wechatCallbackapiTest{ public function valid() { $echoStr = $_GET["echostr"];//获取get请求的参数 //valid signature , option if($this->checkSignature())//调用校验方法 { echo $echoStr; exit; } } private function checkSignature() { // you must define TOKEN by yourself if (!defined("TOKEN")) { throw new Exception('TOKEN is not defined!'); } $signature = $_GET["signature"]; //获取get请求的参数signature $timestamp = $_GET["timestamp"];//获取get请求的参数timestamp $nonce = $_GET["nonce"];//获取get请求的参数nonce $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce);//将三个参数保存到数组中 // use SORT_STRING rule sort($tmpArr, SORT_STRING);//对数组中的三个数排序 $tmpStr = implode( $tmpArr );//将数组中的三个数据组成一个字符串 $tmpStr = sha1( $tmpStr );//对字符串进行SHA-1散列运算 if( $tmpStr == $signature ){ //计算结果与signature相等 return true; //通过验证 }else{ return false; //未通过验证 } }}?>
(3)将编写好的代码发布到bluemix,这里需要用到cf命令。参考bluemix提供的步骤(打开创建的程序点击开始编码)
第一步:在命令行切换至代码所在目录
cd your_new_directory
第二步:连接到bluemix
cf api https://api.ng.bluemix.net
第三步:账号密码登录
bluemix login -u 账号 -o 账号 -s 新创新的应用名称
回车后,命令行会提示输入密码,登录成功会提示OK
第四步:上传代码
cf push 工程文件夹的名称
(4) 在微信接口配置信息里点击提交,提示配置成功。
- 基于bluemix的微信公众平台开发——环境搭建
- 微信公众平台开发环境搭建
- 基于Bluemix的微信公共平台应用开发
- 微信公众平台开发之基于百度 BAE3.0 的开发环境搭建(采用 Baidu Eclipse)
- 微信公众平台开发之基于百度 BAE3.0 的开发环境搭建(MyEclipse + SVN)
- 微信公众平台开发之基于百度 BAE3.0 的开发环境搭建(MyEclipse + SVN)
- 微信公众平台开发之基于百度 BAE3.0 的开发环境搭建(采用 Baidu Eclipse)
- 微信公众平台开发之基于百度 BAE3.0 的开发环境搭建(MyEclipse + SVN)
- (转)微信公众平台开发之基于百度 BAE3.0 的开发环境搭建(采用 Baidu Eclipse)
- 【微信公众平台开发之一】微信公众平台开发环境搭建
- 微信公众平台接口开发——环境搭建1
- 微信公众平台开发流程(环境搭建)
- 微信公众平台开发之环境搭建
- 基于微信公众平台的Python开发——自动回复
- 基于微信公众平台的Python开发——有道翻译
- 基于微信公众平台的Python开发——(网易云)音乐搜索
- 基于微信公众平台的Python开发——豆瓣电影搜索
- 基于java的微信公众平台开发视频教程
- Snmp学习总结——SNMP4J介绍
- Spring 实现数据库读写分离
- Android画一个几何图形
- [从头学数学] 第115节 几何图形初步 小结与复习题
- javascript入门可以试试
- 基于bluemix的微信公众平台开发——环境搭建
- Spring 整合Quartz 2实现定时任务五:集群、分布式架构实现探讨
- 采用hudson部署javaWeb项目
- 简单理解JavaSe基础中的内存分析
- JVM中的垃圾收集算法和Heap分区简记
- 安装doctrine
- rxjava 的了解和使用
- hdu 1541 Stars【思维】
- Spring 3实现定时任务