Как передать несколько параметров в IPN URL-адрес PayPal на Android? - PullRequest
7 голосов
/ 05 июля 2011

Я внедряю PayPal в своем приложении Android и хочу отправить в PayPal несколько параметров в виде строки запроса с IPN URL.

Например,

http://www.example.com/ipn/txnId=12&cartId=12

, но проблема заключается в том, что яиспользовать этот URL-адрес в качестве IPN-адреса. PayPal выдает ошибку.

Я пытался использовать URLEncoding, но снова безуспешно.

Если я пытаюсь использовать один параметр, он работает.

Пример

http://www.example.com/ipn/txnId=12

Я столкнулся с проблемой, что PayPal не принимает & символов в строке, поэтому я попытался заменить & на &, а также \\&, но это не такЭто тоже не помогает.

Я знаю, что могу установить несколько параметров в одну переменную и передать их в PayPal, но я хочу передать несколько параметров, например строку запроса.

Как я могу заставить PayPal принять мойоплата с несколькими параметрами?

РЕДАКТИРОВАТЬ

В настоящее время я использую этот код для кодирования URL, но он не работает.

protected String addLocationToUrl(String url){

        if(!url.endsWith("?"))
            url += "?";

        List<NameValuePair> params = new LinkedList<NameValuePair>();

            params.add(new BasicNameValuePair("txnId", "45"));
            params.add(new BasicNameValuePair("cartId", "34"));



        String paramString = URLEncodedUtils.format(params, "utf-8");

        url += paramString;


        return url;
    }

Ответы [ 2 ]

4 голосов
/ 29 июля 2011

На стр. 20 руководства разработчика для https://cms.paypal.com/cms_content/en_US/files/developer/PP_PayflowPro_Guide.pdf

Использование специальных символов в значениях

Поскольку символы амперсанда (&) и знака равенства (=) имеютспециальные значения в PARMLIST, пары имя-значение, как в следующих примерах, недопустимы:

NAME=Ruff & Johnson

COMMENT1=Level=5

Использование специальных символов в значениипара имя-значение, используйте тег длины.Тег длины указывает точное количество символов и пробелов, которые появляются в значении.Допустимы следующие пары имя-значение:

NAME[14]=Ruff & Johnson

COMMENT1[7]=Level=5

ОБНОВЛЕНИЕ

После нашего обсужденияв Android Disussion Room стало понятно, что вы используете Paypal Payment API для Android.Paypal не обеспечивает поддержку нескольких параметров в IPN-адресе с помощью Android Payment API.

Один из вариантов - заменить символ & на символ, который не имеет специального значения в URL.Затем проанализируйте значения из одного значения параметра при получении вашим слушателем IPN, однако вам также придется заменить следующие = символов.

например, http://www.example.com/ipn/params=txnId_12-cartId_12

Вы заявили, что выэти дополнительные параметры требуются для целей проверки, но проверка должна осуществляться, как указано в PayPal, если это необходимо выполнить безопасно.

Пожалуйста, ознакомьтесь с Обзор уведомления о мгновенных платежах .Здесь описывается процесс IPN и то, что вам нужно для проверки запросов IPN к службе прослушивания.

Вы также найдете пример для Реализация прослушивателя IPN в PHP

AПолный список параметров тела сообщения IPN можно найти в Руководстве по интеграции управления заказами

1 голос
/ 02 декабря 2011

Вы можете использовать поле «Пользовательский», но возникает та же проблема! Я постараюсь использовать теги длины с пользовательскими, например:

var1[5]=th&ee&var2[3]=t=o&var3[3]=one

Значения

й & й

т = о

один


это или я что-то упустил?

Если ничего не помогает, я заменю символы и заменим их на приемном конце.

...