+发表新主题
查看: 1747|回复: 0

[代码片段] PHP玩转微信公众平台自定义接口

[复制链接]

[代码片段] PHP玩转微信公众平台自定义接口

[复制链接]
MONDEO 发表于 2013-12-14 15:54:05 浏览:  1747 回复:  0 [显示全部楼层] 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
从微信公众平台开通自定义回复后,就一直在关注微信接口这一块,很想用自定义回复这块做个站长工具的查询,例如PR查询,备案查询等,输入网址信息,就能自动获取PR,获取备案信息,应该是一个不错的想法。不过以前一直不支持自定义API,只能是一些固定的信息回复。最近微信公众平台终于开放第三方接口了,也就是说,可以根据用户提交的信息,来自定义回复内容,非常方便。

微信站官方微信第一时间开通了自定义回复,大家可以添加微信站微信账号 easymarket 来看看自定义接口的方便性,输入新闻,就能自动查看最新微信相关资讯。

看到了微信的自定义第三方接口的强大后,下面我们来讲讲怎么实现自定义回复。

首先我们进入第三方接口的页面进行注册,地址:http://mp.weixin.qq.com/cgi-bin/ ... ype=info&lang=zh_CN

URL为你以后的微信自定义回复生成的地址。Token你可以随便输,主要是用来校验当前的信息是否为微信提交过来的信息。

如果你的微信接口页面没有做好,提交保存的时候,会提示:验证Token失败。这个错误是因为,你的接口页面还没有反馈正确的信息给微信接口。微信在教程方面还做得不够成熟,就一个PHP示例,还是有问题的,在下篇文章我会讲到这个错误在哪。微信官方也没有跟大家说清楚怎么才能是token验证成功。下面我将给出示例告诉大家如何通过token验证。

譬如:微信站的微信接口页面是http://www.weixinmi.net/weixin.php,我们只需要把default.asp的代码改为:

  1. define("TOKEN", "weixin");// weixin 改成你在程序后台设置的相对应
复制代码


然后再在官方提交下保存,提示“验证token成功”。到此为止,第一步我们完成了接口的申请。

上面给大家讲了如何申请微信公众平台自定义接口,这篇文章讲通过实例,为大家讲述如何实现Hello World的一个简单的自定义回复。

微信官方提供的PHP代码示例,
  1. $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
复制代码

通过该代码可以获知微信平台提交过来的信息是一个XML对象。

该代码可以获取到提交过来的用户,其他的接收者,微信内容都可以该方法获取到。

微信站公众帐号核心代码如下:
  1. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">if(!empty( $keyword ))//当文字输入不为空 </span>
  2. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">{</span>
  3. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">if(($keyword != "新闻") && ($keyword != "news")) { </span>

  4. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">$contentStr = "<a href="http://www.weixinmi.net">微信论坛</a>";</span>
  5. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">$msgType = "text";//表示文本 </span>
  6. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">$text=$textTp.$contentList.$textc; </span>
  7. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">}</span>
复制代码


当大家输入新闻或者news我们给粉丝发送的是图文讯息

  1. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">else { </span>

  2. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">$contentStr = "";</span>
  3. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">$msgType = "news";//表示图文 关键</span>
  4. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">$text=$textTp.$newsList.$textc;</span>
  5. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">}</span>
  6. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">$resultStr = sprintf($text, $fromUsername, $toUsername, $time, $msgType, $contentStr);</span>
  7. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">echo $resultStr;</span>

  8. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">///此处对代码进行重组</span>

  9. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">}else{</span>
  10. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">echo "Input something...";</span>
  11. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">}</span>

  12. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">}else {</span>
  13. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">echo "";</span>
  14. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">exit;</span>
  15. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">}</span>
  16. <span style="color: rgb(50, 50, 50); font-family: 'Century Gothic', 'Microsoft yahei'; font-size: 16px; line-height: 28.8px;">}</span>
复制代码



最后我们重新组合,并生成对应的XML字符串,反馈给微信公众平台,用户就能接受到自定义回复内容了。相关代码如下:

另外请大家注意,PHP文件需要以UTF-8的格式保存,包括页面编码也要用UTF-8的格式,否则有可能自定义回复出现乱码。

至此,我们就完成了PHP微信公众平台自定义接口的一个简单的自定义回复。

源码DEMO地址:http://pan.baidu.com/s/128Wxp
回复

使用道具 举报


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版| 赣南网

© 2013-2016 Comsenz Inc. Powered by Discuz! X3.4

用微信扫一扫

赣南网