Кодировка переопределения IPN Paypal

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

Я пытаюсь заплатить как пользователь: Á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 вызвал мой URL-адрес уведомления, я (предыдущий разработчик) построил URL-адрес запроса. Когда я регистрировал этот url, я видел, что кодировка не была UTF-8, поэтому я заставляю скрипт использовать это.

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

}

и вот что интересно. Я вернусь совершенно mallformed имя пользователя. Поэтому я выбрасываю его char за char.

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

отстой. Я старался изо всех сил, чтобы стать настоящим. имя utf-8 Mb_detect_encoding является UTF-8 для него.

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

URL, что я

2 ответов


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

End page


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

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

§

правка. Последнее, но не менее:

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

вот резюме:

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

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

§

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