NoMethodError - 未定义方法`split'用于#<hash:...:

时间:2015-09-04 19:38:31

标签: ruby-on-rails ruby braintree braintree-rails

=“”

我正在创建一个webhook通知:

signature, payload = Braintree::WebhookTesting.sample_notification(
  Braintree::WebhookNotification::Kind::SubMerchantAccountApproved,
  rand(10000)
)

然后解析:

 @message = Braintree::WebhookNotification.parse(signature, payload)

签名和有效负载回复:

{:bt_signature=&gt;&quot;gcsg95j47yvzpgrr|61350cd9c99cbac6a7905479a5fa061976114e51&quot;, :bt_payload=&gt;&quot;ICAgICAgICA8bm90aWZpY2F0aW9uPgogICAgICAgICAgPHRpbWVzdGFtcCB0
 eXBlPSJkYXRldGltZSI+MjAxNS0wOS0wNFQwMjo1Nzo0NFo8L3RpbWVzdGFt
 cD4KICAgICAgICAgIDxraW5kPnN1Yl9tZXJjaGFudF9hY2NvdW50X2FwcHJv
 dmVkPC9raW5kPgogICAgICAgICAgPHN1YmplY3Q+CiAgICAgICAgICAgICAg
 ICAgICAgPG1lcmNoYW50X2FjY291bnQ+CiAgICAgICAgICA8aWQ+MzEzNDwv
 aWQ+CiAgICAgICAgICA8bWFzdGVyX21lcmNoYW50X2FjY291bnQ+CiAgICAg
 ICAgICAgIDxpZD5tYXN0ZXJfbWFfZm9yXzMxMzQ8L2lkPgogICAgICAgICAg
 ICA8c3RhdHVzPmFjdGl2ZTwvc3RhdHVzPgogICAgICAgICAgPC9tYXN0ZXJf
 bWVyY2hhbnRfYWNjb3VudD4KICAgICAgICAgIDxzdGF0dXM+YWN0aXZlPC9z
 dGF0dXM+CiAgICAgICAgPC9tZXJjaGFudF9hY2NvdW50PgoKICAgICAgICAg
 IDwvc3ViamVjdD4KICAgICAgICA8L25vdGlmaWNhdGlvbj4K
 &quot;}

我一直收到错误:

NoMethodError - undefined method `split' for #<Hash:0x007fdb043e7b50>:

App backtrace
-------------

 -  () Users/johnmolina/Documents/Rails/Nyvur/app/controllers/webhooks_controller.rb:30:in `handle'
 -  () Users/johnmolina/Documents/Rails/Nyvur/bin/rails:8:in `<top (required)>'
 -  () Users/johnmolina/Documents/Rails/Nyvur/bin/spring:16:in `<top (required)>'

我在源代码中找不到多少,并且想知道其他人是否也遇到过这个问题?

这是Webhooks Controller

1 个答案:

答案 0 :(得分:3)

方法Braintree::WebhookTesting.sample_notification返回一个哈希,而signature, payload =语法需要一个数组。

您需要使用键来从返回的哈希中提取签名和有效负载:

sample_notification = Braintree::WebhookTesting.sample_notification(
  Braintree::WebhookNotification::Kind::SubMerchantAccountApproved,
  rand(10000)
)

signature = sample_notification[:bt_signature]
payload = sample_notification[:bt_payload]