Я создаю уведомление webhook с:NoMethodError - неопределенный метод разбиваться на # <Hash: ...:
signature, payload = Braintree::WebhookTesting.sample_notification(
Braintree::WebhookNotification::Kind::SubMerchantAccountApproved,
rand(10000)
)
А затем разбор с:
@message = Braintree::WebhookNotification.parse(signature, payload)
Подпись и Payload ответы:
{:bt_signature=>"gcsg95j47yvzpgrr|61350cd9c99cbac6a7905479a5fa061976114e51", :bt_payload=>"ICAgICAgICA8bm90aWZpY2F0aW9uPgogICAgICAgICAgPHRpbWVzdGFtcCB0
eXBlPSJkYXRldGltZSI+MjAxNS0wOS0wNFQwMjo1Nzo0NFo8L3RpbWVzdGFt
cD4KICAgICAgICAgIDxraW5kPnN1Yl9tZXJjaGFudF9hY2NvdW50X2FwcHJv
dmVkPC9raW5kPgogICAgICAgICAgPHN1YmplY3Q+CiAgICAgICAgICAgICAg
ICAgICAgPG1lcmNoYW50X2FjY291bnQ+CiAgICAgICAgICA8aWQ+MzEzNDwv
aWQ+CiAgICAgICAgICA8bWFzdGVyX21lcmNoYW50X2FjY291bnQ+CiAgICAg
ICAgICAgIDxpZD5tYXN0ZXJfbWFfZm9yXzMxMzQ8L2lkPgogICAgICAgICAg
ICA8c3RhdHVzPmFjdGl2ZTwvc3RhdHVzPgogICAgICAgICAgPC9tYXN0ZXJf
bWVyY2hhbnRfYWNjb3VudD4KICAgICAgICAgIDxzdGF0dXM+YWN0aXZlPC9z
dGF0dXM+CiAgICAgICAgPC9tZXJjaGFudF9hY2NvdW50PgoKICAgICAgICAg
IDwvc3ViamVjdD4KICAgICAgICA8L25vdGlmaWNhdGlvbj4K
"}
я получаю ошибку:
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.
Убедитесь, что вы получите правильные данные в '' signature' и payload', прежде чем отправить их в 'parse' методу. Просто напечатайте их, как: 'puts signature.inspect' и посмотрите, правильно ли они получают правильные данные в правильном формате. –
Я добавлю, что ответ дал мне. – whatAboutJohn
Я вижу, что возвращаемый объект является хешем. В какой-то момент он пытается вызвать метод «split» на хэш-объекте и получает указанную вами ошибку. Метод 'split' работает со строковыми объектами. –