Как получить POST-параметры (используя Rails) в исходном порядке, в котором они пришли? - PullRequest
2 голосов
/ 24 декабря 2010

Привет!Я интегрирую систему IPN Paypal, и их процесс аутентификации требует, чтобы мой сервер отвечал на запрос Paypal с помощью POST для Paypal с параметрами, точно такими же, как Paypal отправил мне (хотя и с добавленной строкой).Итак, я превратил хэш params в строку (соответствующим образом отформатированный) и отправил ее обратно, но похоже, что результирующая строка не в том же порядке, что и исходные параметры POST (в результате не происходит аутентификация).

Кто-нибудь знает, как я могу получить доступ к самим фактическим параметрам POST (в отличие от хэша params), чтобы я мог скопировать его и отправить обратно в Paypal?Суть в том, что порядок параметров, которые я отправляю в Paypal, должен быть точно таким же, как и запрос, поступающий на мой сервер.

Имеет ли это смысл?Какие-нибудь мысли?Заранее спасибо!

- Джаред

Ответы [ 2 ]

3 голосов
/ 24 декабря 2010

IPN Paypal может быть немного привередливым, если я правильно помню (вы действительно должны дать им точно , что они отправили с приложенным вашим сообщением, или ничего не работает).

Вам, вероятно, следует захватить необработанные данные поста в вашем контроллере, добавить к нему строку и создать своего рода HTTP-запрос с вашими необработанными данными поста, прежде чем отправлять его обратно. Я помню, как делал это в последний раз, когда я использовал IPN PayPal, и он работал относительно хорошо.

Я бы использовал ActionController # raw_post и просто изменил бы его перед отправкой запроса обратно в PayPal. Также имейте в виду, что есть время ожидания для ответов IPN (я думаю), и PayPal может отправить вам несколько уведомлений с точно такими же данными, если они не вернут то, что они ожидают, поэтому вы, вероятно, захотите отправить им запрос непосредственно перед ваш код делает что-нибудь еще.

0 голосов
/ 24 декабря 2010

Вы не можете использовать хэш params, порядок упущен.Используйте исходные строки запроса, например request.request_uri или request.query_string.

...