NoMethodError - неопределенный метод `split'для # <Hash:...:

Я создаю уведомление с помощью 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.

1 ответ

Решение

Метод 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]
Другие вопросы по тегам