Кодировка переопределения IP-адреса Paypal
У меня проблема с этим IP-адресом PayPal. Я видел, как это делали многие люди.
Я пытаюсь заплатить как пользователь: ÁrvíztűRő Tükörfúrógép В этом имени есть все специальные символы, которые есть в венгерской азбуке.
Я венгерский разработчик 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";
}
}
И вот что самое интересное. Я получаю обратно полностью сформированное имя пользователя. Поэтому я сбрасываю его по частям.
Первое имя будет: СИМВОЛЫ: 193, 114, 118, 237, 122, 116, 26, 114, 26
Отстой. Я сделал все возможное, чтобы получить свое настоящее имя utf-8 Кодирование mb_detect_encoding для него равно UTF-8.
Я пытался использовать iconv, mb_convert_encoding, utf8_encode и декодировать. Безрезультатно. Попытался не кодировать имя URL, снова безуспешно.
Может ли кто-нибудь сказать мне, почему это так и как я могу вернуть настоящее имя utf8?
URL-адрес, который я
2 answers
Вам следует изменить свои настройки в Paypal.
- перейдите в свой профиль Paypal
- нажмите Мои инструменты продаж на боковой панели
- прокрутите страницу вниз и нажмите Кодировка языка кнопки PayPal
- нажмите Дополнительные параметры и установите кодировку UTF-8
Ответ Ленарта отличный и очень полезный, но я подумал, что добавлю несколько вещей, которые не поместятся в комментарии.
- Для уточнения: установки
charset
на вашем сайте в форме заказа (например, с помощью скрытого ввода) НЕДОСТАТОЧНО, вам также необходимо установить кодировку по умолчанию – как объяснено в ответе Ленарта.- Это связано с тем, что этот параметр применяется только к вашим собственным данным, в то время как настройка по умолчанию применяется к данным, отправленным PayPal на ваш IP-адрес-обработка сценарий.
- например: возможно, у вас есть
UTF-8
в качестве скрытого ввода в форме заказа, но IP-адреса PayPal все еще находятся вwindows-1252
. Вы можете исправить это, только изменив настройки по умолчанию в своей учетной записи PayPal.
- В целях тестирования вы также захотите установить эту опцию кодирования для своего торгового аккаунта в песочнице! (Просто войдите в систему https://sandbox.paypal.com с вашими данными продавца в песочнице.)
- После установки кодировки по умолчанию, если вы вернетесь к чтобы снова проверить значение параметра, он покажет значение по умолчанию вместо заданного вами значения. Это ошибка (и иллюстрирует качество работы PayPal), и значение, которое вы установили ранее, на самом деле все еще установлено.
- Поэтому, если вы хотите убедиться, какова кодировка на самом деле, сделайте это в своем сценарии обработки IPN, проверив значение
charset
в сообщении POST.
- Поэтому, если вы хотите убедиться, какова кодировка на самом деле, сделайте это в своем сценарии обработки IPN, проверив значение
- Кодировка по умолчанию, используемая PayPal, не работает должным образом.
- например:
Western European Languages (including English)
приведет к тому, что символы с французским акцентом не будут работать. - Вам лучше везде использовать UTF8 (будет отображаться как
UTF-8
в IPN.)
- например:
§
РЕДАКТИРОВАТЬ. И последнее, но не менее важное:
Если вы хотите протестировать свой сценарий обработки IPN со специальными или акцентированными символами, у вас есть (теоретически) несколько различных вариантов, но большинство из них не работают на практике.
Вот краткое изложение:
- Используя Симулятор IPN не будет работать, так как он не может подтвердить запрос (он выдает поддельные запросы, а не реальные.)
-
Создание учетной записи клиента PayPal в песочнице со специальными символами внутри имени или фамилии, к сожалению, невозможно.
- Пользовательский интерфейс не поддерживает его и попросит вас
Only enter letters
(sic). - Функция массовой загрузки учетной записи не лучше, в результате чего
Something went wrong. One or more sandbox accounts could not be uploaded. Try again.
- Пользовательский интерфейс не поддерживает его и попросит вас
- Единственный вариант, который работает: тест ваш сайт с изолированным сервером PayPal и выберите оплату без учетной записи PayPal.
- Таким образом, вы сможете вводить акцентированные/специальные символы для имени и фамилии.
- (Вы получите номер кредитной карты, тип и дату истечения срока действия из "Учетных записей разработчиков/песочницы " ваш счет клиента" Профиль" Финансирование – для значения CVV подойдет любое число.)
Я сообщил об этой проблеме PayPal несколько месяцев назад, но ничего не изменилось.
§
Работа с PayPal - это не весело и большая трата времени. Я надеюсь, что это поможет вам сэкономить немного времени. Займитесь своим бизнесом в другом месте, если сможете.