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

如何在Android上将多个参数传递到IPN url到PayPal?,android,paypal,paypal-ipn,Android,Paypal,Paypal Ipn,我正在我的Android应用程序中实现PayPal,我想用IPN URL将多个参数作为查询字符串发送给PayPal 比如说 http://www.example.com/ipn/txnId=12&cartId=12 但问题是当我使用这个URL作为IPN URL时,PayPal会给我一个错误 我尝试了URLEncoding,但还是没有成功付款 如果我尝试使用单个参数,它就会工作 范例 http://www.example.com/ipn/txnId=12 我遇到了一个问题,PayPal

我正在我的Android应用程序中实现PayPal,我想用IPN URL将多个参数作为查询字符串发送给PayPal

比如说

http://www.example.com/ipn/txnId=12&cartId=12
但问题是当我使用这个URL作为IPN URL时,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;
    }
受保护的字符串addLocationToUrl(字符串url){
如果(!url.endsWith(“?”)
url+=“?”;
List params=new LinkedList();
参数添加(新的BasicNameValuePair(“txnId”,“45”);
参数添加(新的BasicNameValuePair(“cartId”,“34”);
String paramString=URLEncodedUtils.format(params,“utf-8”);
url+=paramString;
返回url;
}

摘自《开发者指南》第20页

在值中使用特殊字符

由于符号(&)和等号(=)字符在PARMLIST中具有特殊含义,因此以下示例中的名称-值对无效:

NAME=Ruff&Johnson

COMMENT1=Level=5

要在名称-值对的值中使用特殊字符,请使用长度标记。长度标记指定值中出现的字符和空格的确切数目。以下名称-值对有效:

NAME[14]=Ruff&Johnson

COMMENT1[7]=级别=5

更新

在我们的讨论之后,我们发现您正在使用Android的Paypal支付API。Paypal不支持使用Android支付API的IPN地址中的多个参数

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

e、 g.
http://www.example.com/ipn/params=txnId_12-cartId_12

您声明需要这些附加参数用于验证目的,但如果要安全地实施验证,则应按照paypal的说明实施验证

请仔细阅读。这描述了IPN过程以及验证对侦听服务的IPN请求所需的内容

你也会发现一个例子

可以在

中找到IPN消息正文参数的完整列表。您可以使用“自定义”字段,但同样的问题也会出现! 我将尝试将长度标记与自定义标记一起使用,例如:

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

th&ee

t=o

一个


是这样还是我遗漏了什么


如果所有其他操作都失败,我将替换字符并在接收端重新替换它们。

您知道如何在paypal发送IPN时验证通知吗?什么时候有特别的食物?