Хобрук: Ваш путь к мастерству в программировании

Проверка уведомления IPN PayPal с помощью Java. Как кодировать параметр item_name со специальным символом

Я создаю прослушиватель IPN для проверки уведомлений PayPal. Все уведомления проверяются хорошо, за исключением случаев, когда параметр item_name имеет специальный символ. Пример названия предмета: "Um mês"

Я пробовал кодировать URL-адрес в некоторых кодировках, но никто не работал. Если я удаляю специальный символ из item_name, проверка IPN возвращает VALID, но когда я помещаю только простой специальный символ, я всегда получаю INVALID в качестве возврата.

Какую правильную кодировку я должен использовать, прежде чем выполнять запрос?

Вот мой код: `public void verificaIPN(FacesContext fc) выдает FalseINPException, IOException {ExternalContext externalContext = fc.getExternalContext(); Итератор requestParameterNames = externalContext .getRequestParameterNames();

 String requestUrl = Messages.getString("PayPalUtil.paypalURL"); //$NON-NLS-1$
 while (requestParameterNames.hasNext()) {
    String chave = requestParameterNames.next();
    String valor = externalContext.getRequestParameterMap().get(chave);

    //is this below right?
    requestUrl += "&" + chave + "=" + URLEncoder.encode(valor, "UTF-8");
 }

 URL urlConPayPal = new URL(requestUrl);
 URLConnection yc = urlConPayPal.openConnection();
 yc.setDoOutput(true);
 yc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

 BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
 String inputLine;

 while ((inputLine = in.readLine()) != null) {
    if (inputLine.equals("VERIFIED")) {
    } else {
       throw new FalseINPException("O paypal não confirma esta transação: "
           + inputLine);
    }
 }
 in.close();

}



Ответы:


1

Вы пытались изменить кодировку своей учетной записи и просто выполнить кодировку URL в своем приложении?

Поэтому PayPal скрыл эту ссылку (не знаю почему). Вы буквально не можете добраться до него через навигацию в своей учетной записи в любом месте (что я нашел). Итак, войдите в свою учетную запись и нажмите здесь:

https://www.paypal.com/us/cgi-bin/webscr?cmd=_profile-language-encoding

Нажмите Дополнительные параметры

И измените кодировку на ту, которая нужна для вашего языка.

Это должно помочь вам.

13.02.2013
  • Я вынужден завершить проект с помощью PayPal SDK из-за этой проблемы. Но ваш ответ должен работать. Я проверю это в следующий раз, когда столкнусь с этой проблемой. Спасибо @Sugitime 15.02.2013

  • 2

    Проблема заключалась в том, что вы забыли один параметр в нашем вызове. Кажется, вы пытаетесь послать португальское слово, как и я. :) Вам необходимо иметь:

     <INPUT TYPE="hidden" name="charset" value="utf-8">
    

    (utf-8 или что вы хотите, в соответствии с вашей кодировкой). И тогда вы можете назвать его, например, «Doação» и т. Д....

    См.: https://developer.paypal.com/docs/classic/paypal-payments-standard /integration-guide/formbasics/#id08A6F0RK0PN

    18.11.2016
    Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..