美文网首页程序员
ruby微信开发介绍

ruby微信开发介绍

作者: 杜小龙 | 来源:发表于2014-06-16 00:27 被阅读2852次

    首先我们要知道微信公众账号分两种,订阅号和服务号,它们的区别如下图:


    从上图可以看出订阅号的功能其实很弱的,如果没有认证的话,连自定义菜单都没有,尼玛认证还要出300块,还不包过!!!

    不过,这对我们学习微信公众账号开发并没有什么影响,因为微信提供一个测试账号供我们调试。

    首先我们先进入开发者模式先,这需要我们有一个独立的服务器。
    然后进行配置

    url:www.xxx.com/weixin
    token: abcd
    

    然后微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数:

    signature    微信加密签名
    timestamp    时间戳
    nonce    随机数
    echostr
    

    加密/校验流程如下:

    1. 将token、timestamp、nonce三个参数进行字典序排序

    2. 将三个参数字符串拼接成一个字符串进行sha1加密

    3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
      代码如下:

      def check_weixin_legality
      array = [Rails.configuration.weixin_token, params[:timestamp], params[:nonce]].sort
      render :text => "Forbidden", :status => 403 if params[:signature] != Digest::SHA1.hexdigest(array.join)
      end

    然后我们通过这个www.xxx.com/weixin 接口就可以做很多事情了,根据你发送的不同的文字消息可以返回不同的消息。比如你发,新闻,然后就返回一条图文信息,发音乐,然后就返回一首歌,这个在方法里面进行判断就好了。

    def text_message
      content = params[:xml][:Content]
      case content
      when "音乐"
        render xml: music_reply_message
      when "新闻"
        render xml: news_reply_message
      end
    end
    

    然后自定义菜单的实现,这需要微信提供的APPID 和APPSECRET
    接口调用请求说明

    http请求方式: GET

    https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
    

    由于这里的token有个凭证有效时间,然后我们如果每次访问都去获取这个token的话,那实在是太浪费了,而且微信对于token的每天的获取次数是有限的。这个的话用cache来解决。

    def get_access_token
      if Rails.cache.read("access_token").nil?
        params = {grant_type: "client_credential", appid:Rails.configuration.weixin_appid, secret: Rails.configuration.weixin_secret}
        response = RestClient.get 'https://api.weixin.qq.com/cgi-bin/token', {params: params}
        errcode = (JSON.parse response)["errcode"]
        @access_token = (JSON.parse response)["access_token"]
        Rails.cache.write("access_token", @access_token, expires_in: 5.minutes)
      else
        @access_token = Rails.cache.read("access_token")
      end
    end
    

    未完。。。

    相关文章

      网友评论

        本文标题:ruby微信开发介绍

        本文链接:https://www.haomeiwen.com/subject/cccjtttx.html