Кодировка переопределения 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.
- перейти к вашей профиль Paypal
- клик мои инструменты продаж в меню
- прокрутите вниз и нажмите на кнопку кодировка языка кнопки PayPal
- клик Дополнительные параметры и установите кодировку в UTF-8
ответ Ленарта отличный и очень полезный, но я подумал, что добавлю несколько вещей, которые не вписываются в комментарий.
- для уточнения: установка
charset
на вашем сайте в форме заказа (например: через скрытый вход), недостаточно, вам также нужно установить кодировку по умолчанию - как объяснено в ответе Ленарта.- это потому, что этот параметр применяется только к вашим собственным данным, в то время как параметр по умолчанию применяется к данным, отправленным PayPal IPN-скрипт обработки.
- например: может быть, у вас есть
UTF-8
в качестве скрытого ввода в форму заказа, но IPNs PayPal по-прежнему находятся вwindows-1252
. Вы можете исправить это, только изменив настройки по умолчанию в своей учетной записи PayPal.
- для целей тестирования, вы хотите, чтобы установите эту опцию кодирования для вашей учетной записи продавца Sandbox тоже! (Просто войдите вhttps://sandbox.paypal.com с вашим продавцом песочницы подробности.)
- после установки кодировки по умолчанию, если вы вернетесь к настройке снова, чтобы проверить его значение, он покажет значение по умолчанию вместо значения, которое вы установили. Это ошибка (и иллюстрирует качество работы PayPal) и значение, которое вы установили ранее, на самом деле все еще установлено.
- поэтому, если вы хотите убедиться, что кодировка действительно есть, сделайте это внутри вашего сценария обработки IPN, проверив значение
charset
в сообщении сообщение.
- поэтому, если вы хотите убедиться, что кодировка действительно есть, сделайте это внутри вашего сценария обработки IPN, проверив значение
- кодировка по умолчанию, используемая 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-это не весело и большая трата времени. Надеюсь, это поможет вам сэкономить время. Займитесь своим делом в другом месте, если сможете.