PayPal IPN и ASP.NET - сообщения IPN, неправильно обработанные для продуктов, содержащих символы амперсанда или авторские права - PullRequest
2 голосов
/ 21 апреля 2011

у нас есть несколько продуктов в формате PDF.Мы создаем кнопки PayPal Buy Now для каждой и используем PayPal IPN для отправки отчетов в формате PDF по электронной почте после успешной оплаты.У нас постоянно возникают проблемы, когда некоторые заказы просто не обрабатываются нашей веб-службой IPN, которая является просто страницей ASP.NET aspx и использует стандартную обработку параметра Request ["paypal_key"].

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

Торговые службы PayPal регистрируют сообщения IPN, отправленные при совершении транзакций.Сегодня я посмотрел в журнале IPN, который мы должны были получить и обработать.Вот IPN, отредактированный для обеспечения конфиденциальности:

mc_gross = 99.00 & protection_eligibility = Недопустимый & payer_id = FZKLXR5FF6LMN & tax = 0.00 & payment_date = 08: 01: 23 апреля 20, 2011 PDT & payment_status = windows_stress =52_e_e_e = =_e_e_ = = == = тэг_счетом_2 = & тэг_счета = статус_файла_в_ = статус_счета = = 3_2 = шрифт_имя_2 = = 0¬ify_version = 3,1 и пользовательские = & payer_status = непроверенный & бизнес = электронная почта @ email.com и количество = 1 & verify_sign = AtiSwnZrh-0NXJaYKeFJ5mXp3NePA7jXOzMIt6S.rapcfeP2iL3He53H & payer_email = электронная почта @ email.com & contact_phone = 555-555-5555 & txn_id = 36P12783M6206263T & payment_type = мгновенная & btn_id = 29294177 & last_name = Plourde & receiver_email = электронная почта @ email.com & payment_fee =3.17 & shipping_discount = 0.00 & insurance_amount = 0.00 & receive__id = STR4XMP3MUHLS & txn_type = web_accept & item_name = 2010 Название продукта с & отчет о характере © & discount = 0.00 & mc_currency = USD & item_number = 85 & Residence_country = US & payment_id = кол-во вывозных сумм = 5221-09005_Sense__2 = кол-во заказов на доставку = 5221-500_Sense_2_2_2_S2 =Отчет о персонаже © & payment_gross = 99.00 & shipping = 0.00 & ipn_track_id = b9bQ70Jiv82s3HRqBqLfpw

После некоторого тестирования я смог последовательно воспроизвести, что процесс уведомления IPN завершается успешно, если кнопка PayPal создается без символов амперсанда или символа авторского права.Я также позвонил в PayPal, и они подтвердили, что они не кодируют названия продуктов, они просто отправляют их по сети как есть.

Мы просто используем стандартную обработку запросов ASP.NET для получения значений IPN:

Request["receiver_email"]
Request["item_number"]

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

Спасибо, Шан

Ответы [ 3 ]

0 голосов
/ 28 мая 2011

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

Хотелось бы, чтобы мы не делали этого, т. Е. Чтобы все названия наших продуктов, указанные с помощью кнопок PayPal, могли иметь любую кодировку.Но это решение.

0 голосов
/ 07 июня 2011

Попробуйте установить кодировку IPN, как описано здесь (шаг 5):

http://support.getdpd.com/entries/167722-paypal-account-setup-troubleshooting

0 голосов
/ 21 апреля 2011

UrlEncode ваших продуктов или чего-либо с символами амперсанда / авторского права.

...