微信多人二次开发中转平台及其在教学上的应用
2016-03-22陈昀杨铠铭孟洁
陈昀++杨铠铭++孟洁
摘要:为解决教学中多人共享微信公众账号进行二次开发的需求,通过扫描带参数的二维码区分微信用户并进行XML数据的转发,使用PHP开发出一个可供多人同时进行微信二次开发的中转平台,满足教学和企业中多人共享微信公众账号进行二次开发的要求。
关键词:微信;公众账号;多人二次开发;中转平台;PHP
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)01-0128-02
微信是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,微信支持跨通信运营商、跨操作系统平台通过网络快速发送免费语音短信、视频、图片和文字。因其贴合大众日常生活需求,程序界面简单实用,现已成为亚洲地区最大用户群体的移动即时通讯软件。微信提供的公众平台,让个人和企业可以打造一个微信的公众号,可以进行服务、产品推广,以及和用户进行互动。
微信公众平台是为微信用户提供服务的平台,而公众平台开发接口则是提供服务的基础,开发者在公众平台网站中创建公众号、获取接口权限后,可以通过接口文档来帮助开发。而微信公众平台开发接口的高级功能需要缴纳一定费用进行认证后才能得到开通,在微信公众平台的二次开发教学环节中,以及在企业的开发流程中都需要能够让多人共享一个微信公众账号进行二次开发、测试等操作。
通过扫描带参数的二维码来区分用户,并将微信服务器POST过来的用户XML数据转发给对应的开发人员,从而实现多个开发人员能同时共享一个微信公众账号进行各自对立的开发、测试工作。
图1 中转平台转发XML数据
1 生成带参数二维码
微信公众平台提供有生成带参数二维码的接口,通过该接口,可以在二维码中加入开发者ID等参数。如图2就是一个包含参数1的二维码,微信用户扫描该二维码,并加关注就能触发微信服务器传送带有参数1的XML数据给开发者。
图2 带参数1的二维码
2 建立用户与开发人员关系
每个开发人员在进行独立微信公众账号二次开发时,需要有一个接收用户XML数据的服务器地址:developer_url,这个地址可以是内部网络的服务器地址,也可以是公众网络的服务器地址,而且端口不必限定为80,只要能被中转平台访问到即可。该地址专门用来接收处理中转平台转发过来的XML数据。
表1 开发者与微信用户关系表
微信用户扫描带有开发人员ID值的二维码并加关注,其XML数据中就包含了微信用户openid和开发人员ID值。实现判断的PHP代码如下:
$postStr = file_get_contents("php://input");
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
If(!empty($postObj-> EventKey)){
$developer_id = str_replace('qrscene_', '', $postObj->EventKey);
// 将微信用户openid($postObj->FromUserName)存入到表1中
// $developer_id对应的行,这样就建立了微信用户和开发者的关系。
// 并将接收到的XML数据($postStr)转发给对应开发者developer_url。
}
}
3 转发XML数据
微信用户扫描带参数的二维码并加关注后,表中就存储了微信用户和开发人员之间的关系,之后中转平台就可以根据微信服务器发送过来的XML数据有针对性的进行转发。
表2 开发者与微信用户关系表
实现XML数据转发的PHP代码如下:
// 判断openid和哪个开发者有对应关系,将XML数据转发给对应developer_url。
$options = array(
'http'=>array(
'method' => POST,
'header' => 'Content-type: text/raw\r\n',
'content' => $postStr
));
$context = stream_context_create($options);
$xml = file_get_contents($developer_url, false, $context);
// 将开发者被动响应的XML数据返回给微信服务器。
echo $xml;
4 结论
此中转平台在教学上使用以来,解决了教学上多人共享微信公众账号进行二次开发、测试的问题。学生们可以在不互相干扰的情况下,独立对自己的程序接口进行开发、调试。而且此中转平台也可以应用到企业的实际开发环境中,解决多开发者共享微信公众账号进行二次开发的问题。
本文表格中的实例体现的开发者和微信用户之间是1对1的关系,通过对中转平台程序的改进也可以建立1对多的关系,即一个开发人员对应多个微信用户,甚至可以实现更复杂的多对多关系。此中转平台的机制也同样可以应用于易信、飞信等公众账号的多人共享二次开发。
参考文献:
[1] 微信 [EB/OL].(2015-03-13).[2015-12-21].http://baike.baidu.com/view/5117297.htm,
[2] 微信公众平台开发文档 [EB/OL]. (2015-03-03).[2015-12-21].http://mp.weixin.qq.com/wiki/,
[3] php:// — Accessing various I/O streams [EB/OL]. (2015-03-16).[2015-12-21].http://php.net/manual/en/wrappers.php.php.