• 和小猪一起搞微信公众号开发—回复简单文本


    前言

    今天小猪来和大家分享怎样使用微信公众号来自定义回复简单文本!

    正题

    首先要说明的是:当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的指定URL上。

    知道了上面这点之后我们来假定一个需求:将用户发的内容加上一个字符串"welcome by smallerpig"后回复给用户。

    下面跟随小猪一步一步来实现该功能。

    第一步:申请调用接口的权限。

     访问地址 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 可通过手机号来申请一个微信开发者测试帐号。测试账号的有效期只有一年,最多只能有20个关注者。对于我们来测试开发来说足够了!

    第二步:设置自己的推送的URL及token

     填写接口配置信息,此信息需要你有自己的服务器资源,填写的URL需要正确响应微信发送的Token验证!这里需要的服务器资源就是你能够接收到微信服务器通过您填写的URL给你发送的消息,并且在第一次的时候微信是需要验证该地址是否是您的切实可用的,方法就是微信会给你发送一个get请求,让您来返回指定的内容,如果验证内容合格,则这一步通过。下面小猪的代码只是简单的将微信服务器发送的数据返回,并没有验证数据是否来自微信服务器,在项目正式上线之前,这里需要验证消息是否来自微信服务器。

    public ActionResult Login(string signature ,string timestamp , string nonce, string echostr)
    {
           //TODO:验证消息是否来自微信服务器
           return Content(echostr);
    }
    

    这里小猪是用的ASP.NET MVC的开发框架,目前百度貌似有免费的空间免费的域名来让开发者使用,但是环境是php的,所以小猪就没怎么涉及。但是开发逻辑都是一样滴!

    第三步:实现回复消息代码

    在微信上面,当用户与公众号进行交互时,其实是 用户=》微信服务器=》公众号服务器=》微信服务器=》用户  的一整个过程。完成了上面第二部也就完成了公众号服务器与微信服务器的绑定,绑定之后每次有交互微信服务器都会告诉公众号:你的小弟给你发消息了,请将你要回复给小弟的消息赶紧告诉我,如果你5秒内不给我我就不睬你小弟了!!

    所以当我们的服务器收到微信服务器的推送后我们要及时的给他返回对应格式的消息,请看实现代码:

    /*
    微信推送数据格式
    <xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[fromUser]]></FromUserName> 
    <CreateTime>1348831860</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[this is a test]]></Content>
    <MsgId>1234567890123456</MsgId>
    </xml>
        * */
    //
    
    [HttpPost]
    public ActionResult Login()
    {
        string xmlFromWeChat =new StreamReader(Request.InputStream).ReadToEnd();
        XmlDocument xmldocument = new XmlDocument();
        xmldocument.LoadXml(xmlFromWeChat);
        string fromUserName = xmldocument.GetElementsByTagName("FromUserName").Item(0).InnerText;
        string fromContent = xmldocument.GetElementsByTagName("Content").Item(0).InnerText;
        string toContent = fromContent + " welcome by smallerpig!";//给用户发来的内容加上welcome by smallerpig!
        string testresult = "<xml><ToUserName><![CDATA[" + fromUserName + "]]></ToUserName>"
            + "<FromUserName><![CDATA[gh_716621f6673f]]></FromUserName>"
            + "<CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType>"
            + "<Content><![CDATA[" + toContent + "]]></Content></xml>";
        return Content(testresult);
    }
    

    上面的代码实现了一开始我们提的需求!

    第四步:将代码编译(如果需要)后上传到指定的服务器

    确保你的服务器能收到微信的推送!

    第五步:关注测试微信帐号

    拿起你的手机打开扫一扫功能对紧二维码扫扫~点关注(这步最简单了……哈哈)!让你成为开发者帐号关注者的20名限额之一吧。

    关注后应该能够从你的开发者账号页面看到您的帐号

    QQ截图20131204123358

    第六步:发送消息到测试账号试试

    wp_ss_20131204_0001

    结语:

    上面小猪实现了一个很简单的功能,该功能虽然简单,但却基本上完成了整个微信公众号开发的逻辑过程,能够实现了该篇内容的读者相信自己能够举一反三的完成其他接口的相关功能。

    加上一些对用户发送内容的处理结合数据库内容的读取后可以为用户定制不同的服务。例如天气查询、路况查询等等等etc~~

    当然比较高级的接口小猪下面也会慢慢的分享。但是整体思路应该和本篇一样!相信读者能够开发出优秀的微信公众账号!

    最后,觉得小猪说的好的请评论下哈,让人家知道你曾经出现过~555555~~

  • 相关阅读:
    c++11 static_assert
    UVA
    析构函数与运行错误
    UVA
    2017 ACM-ICPC 亚洲区(乌鲁木齐赛区) C. Coconut
    2017 ACM-ICPC 亚洲区(乌鲁木齐赛区) A. Banana
    DOCTYPE的作用?
    数组去重的方法
    闭包的分析?
    SVN(集中式管理)分析
  • 原文地址:https://www.cnblogs.com/smallerpig/p/3646184.html
Copyright © 2020-2023  润新知