lanrion / weixin_rails_middleware

微信集成 ruby weixin_rails_middleware for integration weixin.
MIT License
408 stars 107 forks source link

版本 1.3.2,初始配置校验,报MissTemplate错误 #54

Open hatch-win opened 7 years ago

hatch-win commented 7 years ago

WeixinRailsMiddleware::WeixinController里面的check_weixin_legality 方法

检查后发现 check_result={ :plain => "xxxx", :status => "yyy"} render check_result # 这个会返回 missTemplate 的错误

当我把 check_result 的 "plain" key_name 改为 "text" 时 即 check_result => { :text => "xxx", :status => "yyy"} 才能正常执行

咨询:请问这是rails版本的原因吗? 我的rails版本 4.0.0

lanrion commented 7 years ago

把具体错误贴出来。

hatch-win commented 7 years ago

/Users/xxx/.rvm/gems/ruby-2.1.4/gems/weixin_rails_middleware-1.3.2/lib/weixin_rails_middleware/adapter/weixin_adapter.rb:59: Weixin signature NotMatch Completed 500 Internal Server Error in 22ms

ActionView::MissingTemplate (Missing template weixin_rails_middleware/weixin/index with {:locale=>[:"zh-CN"], :formats=>[:html, :text, :js, :css, :ics, :csv, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder, :haml]}. Searched in:

lanrion commented 7 years ago

weixin_rails_middleware/adapter/weixin_adapter.rb:59: Weixin signature NotMatch

这个才是你要关注的错误信息。

你的签名不匹配。

hatch-win commented 7 years ago

应该不是。 我原本是在 V 1.2.6 的时候配置、微信校验可以的了。 然后升级到 V 1.3.2 的时候, 就报错了。

lanrion commented 7 years ago

出1.2.6,当时微信还没有签名加密这一块,1.3.2是添加了签名这一块的。 具体查看:https://github.com/lanrion/weixin_rails_middleware/wiki/msg-encryption-decipher

hatch-win commented 7 years ago

在1.3.2, WeixinRailsMiddleware::WeixinController里面的check_weixin_legality ,render check_result 返回的是check_result={ :plain => "xxxx", :status => "200"} 但在1.2.6是 check_result = { :text => "xxxx", :status => "200"}

为什么在1.3.2就返回:plain => "xxxx"而不是text => "xxxx"呢? 我这边就出现了MissTemplate的错误了。只有把plain改成text才不会报错。


按照加密配置 weixin_rails_middleware.rb , config.encoding_aes_key = "xxx" config.app_id = "xxx" 但是校验返回:

INFO -- : Parameters: {"signature"=>"xxxxxxxxxxxxx", "echostr"=>"xxxxxxxxxxxx", "timestamp"=>"1487566558", "nonce"=>"1306893847", "weixin_secret_key"=>"xxxxxxxxxxx"} INFO -- : Completed 500 Internal Server Error in 1ms FATAL -- : ActionView::MissingTemplate (Missing template weixin_rails_middleware/weixin/index with {:locale=>[:"zh-CN", :zh], :formats=>[:html, :text, :js, :css, :ics, :csv, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder, :haml]}

lanrion commented 7 years ago

晚点我试试,我使用没有遇到过这。有可能跟Rails的版本有关 :https://github.com/lanrion/weixin_rails_middleware/commit/d6b7270e4edb2285091c4dce7648857c4d16d6d9

你贴一下的的Rails版本。

hatch-win commented 7 years ago

rails -v 4.0.0

lanrion commented 7 years ago

你升级到 1.3.1 版本试试。

hatch-win commented 7 years ago

1.3.1 版本 ok的