【问题标题】:How to pass multiple parameters to IPN url to PayPal on Android?如何在Android上将多个参数传递给IPN url到PayPal?
【发布时间】:2011-09-28 20:51:49
【问题描述】:

我正在我的 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;
    }

【问题讨论】:

    标签: android paypal paypal-ipn


    【解决方案1】:

    来自开发者指南的第 20 页 https://cms.paypal.com/cms_content/en_US/files/developer/PP_PayflowPro_Guide.pdf

    在值中使用特殊字符

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

    NAME=Ruff &amp; Johnson

    COMMENT1=Level=5

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

    NAME[14]=Ruff &amp; Johnson

    COMMENT1[7]=Level=5

    更新

    Android Disussion Room 中讨论过我们的谈话后,我们发现您正在使用适用于 Android 的 Paypal Payment API。 Paypal 不支持使用 Android Payment API 的 IPN 地址中的多个参数。

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

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

    您说您需要这些附加参数来进行验证,但如果要安全地实施,则应按照 paypal 的规定实施验证。

    请阅读Overview of Instant Payment Notification。这描述了 IPN 流程以及验证对侦听服务的 IPN 请求所需的内容。

    您还可以找到Implementing an IPN listener in PHP 的示例

    IPN消息体参数的完整列表可以在Order Management Integration Guide中找到

    【讨论】:

    • 你知道paypal发送IPN时如何验证通知吗?什么时候有特殊字符?
    【解决方案2】:

    您可以使用“自定义”字段,但会出现同样的问题! 我将尝试使用自定义的长度标签,例如:

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

    价值观

    t=o

    一个


    是这个还是我错过了什么?

    如果一切都失败了,我将替换字符并在接收端替换它们。

    【讨论】:

      猜你喜欢
      • 2011-02-23
      • 2015-11-07
      • 2021-03-30
      • 2020-09-06
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      相关资源
      最近更新 更多