Rails 做微信开发问题,生带参数二维码问题

bighuzi · 2017年03月17日 · 最后由 ccok 回复于 2017年03月20日 · 1553 次阅读

看了微信的 api 文档,它是这么写的:

用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的 URL。方便开发者给用户下发欢迎消息或者做帐号的解绑。

推送的 xml 格式如下

<xml><ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[qrscene_123123]]></EventKey>
<Ticket><![CDATA[TICKET]]></Ticket>
</xml>

下面微信绑定 url 方法

def  index

      if params[:openid].nil?
        array = ['1111111', params[:timestamp], params[:nonce]].sort
        Rails.logger.debug Digest::SHA1.hexdigest(array.join)
            if params[:signature] == Digest::SHA1.hexdigest(array.join)
                render text: params["echostr"]
            else
                render text: 'false'
            end
      else
        render text: 'true'
      end
end

然后下面是微信返回 xml 格式的方法

def create

      render xml: template
end

问题在于,当我扫码之后,微信有请求我的 create,但是没有推送 xml 到我的方法里面。 微信推送给我的参数是

Parameters: {"signature"=>"111111", "timestamp"=>"1489728998", "nonce"=>"963841539", "openid"=>"rrrrr-zd952ccLE"}

请教下各位,有没有遇到这个情况,是什么造成的。。。。。

微信绑定 url 估计就是你的 create 方法,post 到你的 create 方法里了, index 是 get 方法

dylin 回复

微信有 post 到我的 create 的方法里面,但是它那边没有返回 xml 给我。。不知道为什么?

好像传的就是你给的那些参数,是加密的,解密之后就是 xml 的, 也有可能你用了一些 gem 会把穿过来的 xml 转成 json

dylin 回复

还需要解密吗?在文档里面也没有介绍到这一块。。不知道您是怎么做的。。能说一下吗?

有加解析 xml 的 gem 嘛, 我记得你收到的那些参数是在 url 里的

dudu_zzzz 回复

没有加 gem,主要是扫带参数的二维码。扫码的时候好像没有调用我的 create 方法,,点击关注的时候调用了。但是没有推送 xml 给我。。

dudu_zzzz 回复

非常的感谢。。找了很久。。老以为是哪里一个配置有问题。。😁

bighuzi 关闭了讨论。 03月17日 17:47
bighuzi 重新开启了讨论。 03月17日 17:47
bighuzi 回复

不客气哈, 我也是前段时间刚搞过这个,踩过坑了😅

我们刚发布的一个微信开发的 gem(对,又一个): wechat-gate https://github.com/eggmantv/wechat_gate

这里有视频使用介绍 https://eggman.tv/c/s-wechat-development-using-ruby-on-rails

bighuzi 关闭了讨论。 04月14日 11:19
需要 登录 后方可回复, 如果你还没有账号请 注册新账号