基于bluemix的微信公众平台开发——环境搭建

来源:互联网 发布:饥荒巨人的统治mac版 编辑:程序博客网 时间:2024/06/11 19:14

基于bluemix的微信公众平台开发——环境搭建

一、微信公众平台运行原理
当用户A向自己关注的微信公众号发送一条消息以请求某项服务时,,实质上是用户A将请求的消息发送到微信服务器(即图中的微信公众平台),然后由微信服务器将用户的请求转发到公众账号服务器。当公众账号服务器响应用户A的请求,生成相应的回复消息时,也是将这个消息发送到微信服务器,再由微信服务器转发给用户A。
图1

微信服务器与公众账号服务器之间进行通信时,只要使用http协议传送消息,消息主要使用XML和JSON两种格式进行封装。

二、,使用bluemix作为公众账号服务器
1、申请bluemix账号
(1)在网页浏览器的地址中输入https://new-console.ng.bluemix.net/,将显示如下界面

图2-1
图2-1

(2)在图2-1的网页单击右上角的“注册”链接,将显示如下网页,并进行注册。
图2-2
图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页面,也就是说,其他人也可能杜撰一个消息发布到公众账号服务器上来,因此,为了验证消息的来源是由微信服务器发送的,因此特别添加以上参数,在我们的代码中,对以上参数按一定的算法进行计算,即可验证信息的来源了,微信规定的加密/校验流程如下:

  1. 将token、timestamp、nonce三个参数进行字典序排序
  2. 将三个参数字符串拼接成一个字符串进行sha1加密
  3. 开发者获得加密后的字符串可与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) 在微信接口配置信息里点击提交,提示配置成功。

0 0
原创粉丝点击