微信公共平台开发接口(二)

是不是在关注了有些订阅号或者服务号之后,马上会收到一条消息。什么回复1,怎样怎样;回复2,怎样怎样之类的。

拿我自己的博客举例,我的关注语是:
    感谢您关注AndyYang个人博客微信小助手。
    回复【1】返回两篇最新文章
    回复【2】返回两篇人气文章
    回复【3】返回两篇热评文章
    回复【4】返回两篇最新技术文章
    回复【5】返回两篇最新写作文章
    回复其他返回搜索关键字的两篇文章
    更多精彩内容,尽在:www.webyang.net。亲们,请多多支持哦,谢谢~

那这个怎么实现呢?
直接上代码:

 
 
  1. <?php
  2. /**
  3. * wechat php test
  4. */
  5.  
  6. //define your token
  7. define("TOKEN", "weixin");
  8. $wechatObj = new wechatCallbackapiTest();
  9. //$wechatObj->valid();
  10. $wechatObj->responseMsg();
  11.  
  12. class wechatCallbackapiTest
  13. {
  14.  
  15. public function valid()
  16. {
  17. $echoStr = $_GET["echostr"];
  18.  
  19. //valid signature , option
  20. if($this->checkSignature()){
  21. echo $echoStr;
  22. exit;
  23. }
  24. }
  25.  
  26. public function responseMsg()
  27. {
  28. //get post data, May be due to the different environments
  29. $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
  30.  
  31. //extract post data
  32. if (!empty($postStr)){
  33. $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  34. $fromUsername = $postObj->FromUserName;
  35. $toUsername = $postObj->ToUserName;
  36. $keyword = trim($postObj->Content);
  37. $time = time();
  38. $MsgType = $postObj->MsgType; //add
  39. $textTpl = "<xml>
  40. <ToUserName><![CDATA[%s]]></ToUserName>
  41. <FromUserName><![CDATA[%s]]></FromUserName>
  42. <CreateTime>%s</CreateTime>
  43. <MsgType><![CDATA[%s]]></MsgType>
  44. <Content><![CDATA[%s]]></Content>
  45. <FuncFlag>0</FuncFlag>
  46. </xml>";
  47.  
  48. if($MsgType != 'event') {
  49. if(!empty( $keyword ))
  50. {
  51. $msgType = "text";
  52. $contentStr = "Welcome to wechat world!";
  53. }else{
  54. echo "Input something...";
  55. }
  56. } else {
  57. $msgType = "text";
  58. $contentStr = "感谢您关注AndyYang个人博客微信小助手。\r\n".
  59. "回复【1】返回两篇最新文章\r\n".
  60. "回复【2】返回两篇人气文章\r\n".
  61. "回复【3】返回两篇热评文章\r\n".
  62. "回复【4】返回两篇最新技术文章\r\n".
  63. "回复【5】返回两篇最新写作文章\r\n".
  64. "回复其他返回搜索关键字的两篇文章\r\n".
  65. "更多精彩内容,尽在:<a href='http://www.webyang.net'>www.webyang.net</a>。亲们,请多多支持哦,谢谢~";
  66. ;
  67. }
  68. $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  69. echo $resultStr;
  70.  
  71. }else {
  72. echo "";
  73. exit;
  74. }
  75. }
  76.  
  77. private function checkSignature()
  78. {
  79. $signature = $_GET["signature"];
  80. $timestamp = $_GET["timestamp"];
  81. $nonce = $_GET["nonce"];
  82. $token = TOKEN;
  83. $tmpArr = array($token, $timestamp, $nonce);
  84. sort($tmpArr, SORT_STRING); //这个在新的sdk中添加了第二个参数(compare items as strings)
  85. $tmpStr = implode( $tmpArr );
  86. $tmpStr = sha1( $tmpStr );
  87. if( $tmpStr == $signature ){
  88. return true;
  89. }else{
  90. return false;
  91. }
  92. }
  93.  
  94. }

当然这里只是简单的实现下,在微信公共平台提供的sdk上做简单的修改,实际上msgtype类型很多,就算消息类型为event的,它里面也有subscribe、LOCATION等,而如果细化的话,就用Event为subscribe来处理初次关注的事件。

欢迎大家关注我的微信订阅号:webyangnet,或者扫我吧,亲!^_^

更多请支持:http://www.webyang.net/Html/web/article_108.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值