Paypal IPN переопределяет кодировку

У меня проблема с этим paypal IPN. Я видел много людей.

Я стараюсь платить как пользователь: Árvíztűrő Tükörfúrógép В этом названии есть все специальные символы, что в венгерской ABC.

Я - венгерский PHP-разработчик.

Хорошо, я пытался много искать в Google. Первое, что нужно было проверить настройки языка PayPal: http://jlchereau.blogspot.hu/2006/10/paypal-ipn-with-utf8.html

Каждое значение - UTF-8.

Когда paypal назвал мой urify, я (предыдущий разработчик) построит URL-адрес запроса. Когда я зарегистрировал этот URL-адрес, я увидел, что кодировка не была UTF-8, поэтому я принудительно использовал script.

$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
   if ($key == 'charset') {
      $req .= "&charset=utf-8";
   } else {
      $value = urlencode(stripslashes($value));
      $req .= "&$key=$value";
   }

}

И вот интересная вещь. Я возвращаю полностью измененное имя пользователя. Поэтому я дам char char.

Первое имя будет: CHARS: 193, 114, 118, 237, 122, 116, 26, 114, 26

Suck. Я пробовал все, чтобы получить свое настоящее имя utf-8 Для этого mb_detect_encoding является UTF-8.

Я попытался использовать iconv, mb_convert_encoding, utf8_encode и декодировать. Нет успеха. Пытался не указывать имя, не добиваться успеха.

Может кто-нибудь сказать мне, почему это так, и как я могу вернуть реальное имя utf8?

URL, который я отправил: CMD = _notify-Validate & mc_gross = 10,00 & protection_eligibility = Приемлемые & address_status = подтверждены & payer_id = JA3YMCJFKSCNJ & налог = 0.00 & address_street = 1 + Главная + St & PAYMENT_DATE = 07% 3A41% 3A40 + сентября + 05% 2C + 2012 + ФДТ & payment_status = Завершенный * & кодировка = UTF-8 * & address_zip = 95131 & first_name =% C1rv% EDzt% 1AR% 1A & mc_fee = 0,59 & address_country_code = US & address_name =% C1rv% EDzt% 1AR % 1A + T% FCK% F6rf% FAr% F3G% E9p & notify_version = 3,6 & пользовательские = lolka_bolka% 3Bfalse% 3B% 3B% 3B% 3BHungary% 3B% 3B% 3B% 3B% 3B% 3B & payer_status = проверено & бизнес = vaso_1346830963_biz% 40mydomain.hu & address_country = United + States & address_city = San + Jose & количество = 1 & verify_sign = AVVJjJNeVwHbYcMDVfj2N1DqWwUdAtNQIpb9KIP99gZ2PY-LPoOYzSCc & payer_email = test_1346830232_per% 40mydomain.hu & txn_id = 4J747779YW528551F & payment_type = мгновенная & last_name = T% FCK% F6rf% FAr% F3G% E9p & address_state = СА & receiver_email = vaso_1346830963_biz% 40mydomain.hu & payment_fee = 0,59 & receiver_id = TGEHBCM G336WE & txn_type = web_accept & item_name = 510 + шелк & mc_currency = USD & ITEM_NUMBER = & residence_country = US & test_ipn = 1 & handling_amount = 0,00 & transaction_subject = lolka_bolka% 3Bfalse% 3B% 3B% 3B% 3BHungary% 3B% 3B % 3B% 3B% 3B% 3B & payment_gross = 10,00 & доставка = 0,00 & ipn_track_id = 6fe12a7a34b74

Ответы

Ответ 1

Вы должны изменить свои настройки в Paypal.

  • перейдите в профиль Paypal
  • нажмите Мои инструменты для продажи на боковой панели
  • прокрутите страницу до конца и нажмите кодировка языка кнопки PayPal
  • нажмите Дополнительные параметры и установите кодировку в UTF-8

End page

Ответ 2

Ответ Lenart велик и очень полезен, но я подумал, что добавлю несколько вещей, которые не вписывались бы в комментарий.

  • Чтобы уточнить: установка charset на вашем сайте, в вашей форме заказа (например: через скрытый ввод), недостаточно, вам также необходимо установить кодировку по умолчанию - как объяснено в ответ Ленарта.
    • Это потому, что эта опция применяется только к вашим собственным данным, в то время как параметр по умолчанию применяется к данным, отправленным PayPal для вашей обработки IPN script.
    • Например: возможно, у вас есть UTF-8 как скрытый ввод в вашей форме заказа, но IPN PayPal все еще находятся в windows-1252. Вы можете исправить это, изменив настройку по умолчанию в своей учетной записи PayPal.
  • Для целей тестирования вы хотите, чтобы установил эту опцию кодирования для вашей учетной записи продавца Sandbox! (Просто войдите в https://sandbox.paypal.com с подробными сведениями о продавце Sandbox.)
  • После установки кодировки по умолчанию, если вы снова вернетесь к настройке, чтобы проверить его значение, оно покажет значение по умолчанию вместо установленного вами значения. Это ошибка (и иллюстрирует качество работы PayPal), и значение, которое вы установили ранее, на самом деле все еще установлено.
    • Итак, если вы хотите убедиться в том, что такое кодировка, сделайте это внутри своей IPN-обработки script, проверив значение charset в сообщении POST.
  • Кодировка по умолчанию, используемая PayPal, не работает должным образом.
    • Например: Western European Languages (including English) приведет к тому, что символы с французским акцентом не будут работать.
    • Вам лучше использовать UTF8 везде (показывается как UTF-8 в IPN.)

п

ИЗМЕНИТЬ. И последнее, но не менее важное:

Если вы хотите протестировать свою IPN-обработку script со специальными или подчеркнутыми символами, у вас есть (теоретически) несколько разных вариантов, но большинство из них не работают на практике.

Здесь recap:

  • Использование IPN Simulator не будет работать, поскольку он не может подтвердить запрос (он производит поддельные запросы, а не реальные).
  • Создание учетной записи клиента Sandbox PayPal со специальными символами внутри имени или фамилии, к сожалению, невозможно.
    • Пользовательский интерфейс не поддерживает его и попросит вас Only enter letters (sic).
    • Функция массовой загрузки аккаунта не лучше, в результате Something went wrong. One or more sandbox accounts could not be uploaded. Try again.
  • Один из вариантов, который работает: протестируйте свой сайт с помощью Sandbox сервера PayPal и выберите оплатить без учетной записи PayPal.
    • Таким образом, вы сможете вводить специальные или специальные символы для имени и фамилии.
    • (Вы получите номер кредитной карты, тип и срок действия от Учетные записи разработчика /Sandbox > ваш аккаунт клиентa > Профиль > Финансирование - любое количество будет делать для значения CVV.)

Я сообщил об этой проблеме PayPal несколько месяцев назад, но ничего не изменилось.

п

Работа с PayPal - не забава и большая трата времени. Надеюсь, это поможет вам сэкономить время. Возьмите свой бизнес в другом месте, если сможете.