2013-01-18 3 views
1

Я борюсь с внедрением мгновенных уведомлений PayPal. Я получаю запрос IPN от PayPal, но у него просто нет полей, которые PayPal говорит. Например, нет «mc_gross», «payment_gross» или «txn_id». Как я должен проверять IPN со всеми этими полями?PayPal IPN недостающие поля

Использование симулятора мгновенных платежей (IPN) на веб-сайте Sandbox PayPal дает совершенно другой IPN (который, конечно же, имеет все значения, упомянутые в документах API).

Я использую API «Adaptive Payments», и я настроил его на выполнение очень простой операции PAY (что отлично работает в противном случае). Я читаю посты на SO и в интернете весь день, но я просто не могу понять, что случилось.

Вот дамп массива Request.Params моего обработчика IPN (несвязанные вары опущен):

payment_request_date => Fri Jan 18 05:50:04 PST 2013 
return_url => http://MYHOST/ReturnUrl 
fees_payer => EACHRECEIVER 
ipn_notification_url => http://MYHOST/PayPal.aspx 
sender_email => [email protected] 
verify_sign => AoIh-cQwnxZ7nSmfalIL7L182SDTA2JKiIrVnwt.uetdGX.Jw0bG2C1f 
test_ipn => 1 
transaction[0].id_for_sender_txn => 66X080248E331472D 
transaction[0].receiver => [email protected] 
cancel_url => http://MYHOST/CancelUrl 
transaction[0].is_primary_receiver => false 
pay_key => AP-28U75135KE1302901 
action_type => PAY 
transaction[0].id => 96E03111D3558372G 
memo => This is a sandbox test payment 
transaction[0].status => Completed 
transaction[0].paymentType => SERVICE 
transaction[0].status_for_sender_txn => Completed 
transaction[0].pending_reason => NONE 
transaction_type => Adaptive Payment PAY 
transaction[0].amount => EUR 30.25 
status => COMPLETED 
log_default_shipping_address_in_transaction => false 
charset => windows-1252 
notify_version => UNVERSIONED 
reverse_all_parallel_payments_on_error => false 
ALL_HTTP => HTTP_CONTENT_LENGTH:1102 
HTTP_CONTENT_TYPE:application/x-www-form-urlencoded 
HTTP_HOST:92.231.161.192 

Любые идеи?

ответ

2

Адаптивные платежи IPN немного отличаются от вашего типичного IPN.

С адаптивными платежами ваше приложение имеет свой собственный опознаватель IPN отдельно от учетных записей получателя. Ваше приложение просто получает уведомление о том, что транзакция имела место и не дает вам подробных сведений о товарах, ценах и т. Д., Как вы обнаружили.

У учетной записи получателя будет отдельный IPN (если он настроен), который будет содержать поля, которые вы ожидаете увидеть.

В вашем случае вам нужно сохранить данные транзакции в вашу базу данных как «ожидающие» или что бы вы ни назвали, а затем привязать данные IPN, которые поступают на основе идентификатора транзакции.