Open hatch-win opened 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:
weixin_rails_middleware/adapter/weixin_adapter.rb:59: Weixin signature NotMatch
这个才是你要关注的错误信息。
你的签名不匹配。
应该不是。 我原本是在 V 1.2.6 的时候配置、微信校验可以的了。 然后升级到 V 1.3.2 的时候, 就报错了。
出1.2.6,当时微信还没有签名加密这一块,1.3.2是添加了签名这一块的。 具体查看:https://github.com/lanrion/weixin_rails_middleware/wiki/msg-encryption-decipher
在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]}
晚点我试试,我使用没有遇到过这。有可能跟Rails的版本有关 :https://github.com/lanrion/weixin_rails_middleware/commit/d6b7270e4edb2285091c4dce7648857c4d16d6d9
你贴一下的的Rails版本。
rails -v 4.0.0
你升级到 1.3.1 版本试试。
1.3.1 版本 ok的
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