如何在Android上将多个参数传递给IPN网址到PayPal?

Dha*_*dra 7 android paypal paypal-ipn

我在我的Android应用程序中实现了PayPal,我希望将多个参数作为查询字符串发送到PayPal,并带有IPN URL.

例如

http://www.example.com/ipn/txnId=12&cartId=12
Run Code Online (Sandbox Code Playgroud)

但问题是当我使用此URL作为IPN URL PayPal给我一个错误.

我试过URLEncoding但再没有成功付款.

如果我尝试单个参数它是有效的.

http://www.example.com/ipn/txnId=12
Run Code Online (Sandbox Code Playgroud)

我遇到过,贝宝是不能接受的问题&,所以我试图替换字符串中的字符&&和也\\&,但它并没有帮助.

我知道我可以将多个参数设置为单个变量并将其传递给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;
    }
Run Code Online (Sandbox Code Playgroud)

Mer*_*lin 4

来自开发人员指南的第 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 讨论室中讨论的对话,我们发现您正在使用适用于 Android 的 Paypal Payment API。Paypal 不支持使用 Android Payment API 的 IPN 地址中的多个参数。

一种选择是将该&字符替换为在 URL 中没有特殊含义的字符。然后,当 IPN 侦听器收到单个参数值时,解析这些值,但您还必须替换后续字符=

例如http://www.example.com/ipn/params=txnId_12-cartId_12

您声明您需要这些附加参数来进行验证,但如果要安全实施,则应按照 PayPal 的概述实施验证。

请阅读即时付款通知概述。这描述了 IPN 流程以及验证对侦听服务的 IPN 请求所需的内容。

您还可以找到在 PHP 中实现 IPN 侦听器的示例

IPN 消息正文参数的完整列表可以在订单管理集成指南中找到