PayPal PDT。返回URL中缺少事务ID

时间:2012-01-20 17:37:10

标签: transactions paypal return eclipse-pdt

我偶然发现PayPal非常特殊的行为。当我在URL中使用localhost测试paypal集成与paypal沙箱时,我正在获取事务ID,但是当我将localhost替换为实际站点名称时,事务变量不存在。在这两种情况下,PayPal都会返回我的网站,但是当我不使用localhost时,它不会返回交易信息,这会让我们的测试人员的工作变得徒劳无功。

示例:

http://localhost/paymentinfo.aspx?Product=DC - working
http://test1/paymentinfo.aspx?Product=DC     - is not working

要明确:

  1. 我的沙箱帐户上的PDT已激活。
  2. 我的沙箱帐户上的IPN已激活。
  3. 以下是我的BuyNow PayPal按钮的代码:

    <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_s-xclick"/>
    <input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----DFGHJ8yuFFTY-----END PKCS7-----"/>
    <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHosted"/>
    <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
    <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
    </form>
    

    其中=“encrypted”包含以下参数列表的encripted字符串:

    cmd=_xclick
    business=paypal_business_acc@companyname.com
    cert_id=123456
    charset=UTF-8
    item_name=product name
    item_number=123456
    amount=11.97
    currency_code=USD
    return=http://localhost/Success.aspx
    cancel_return=http://localhost/AppDownPay.aspx?Cancel=true
    notify_url=http://ipnlstnr/PayPalIPNListenerInternal.ashx
    custom=2bcad9cb-9429-4e99-8984-5d0532bfb718
    no_shipping=1
    on0=CustomItem1
    on1=CustomItem2
    os0=VM
    os1=DC
    

    有没有人知道如何将PayPal返回转换变量转换为包含非本地主机的URL?

    更新: 看来,PayPal沙箱一直在向IPN监听器发送消息,而不是返回我们的网站。那是非常意外的。因为自动返回已启用。我试图启用或禁用PDT,这没有任何区别。此外,我已尝试从按钮代码中删除notify_url,仍然消息已重定向到我们的IPN侦听器,而不是我们的站点。我试图将“rm”变量添加到值为2的按钮代码中,并且没有说服沙箱重定向到我们的站点。请你帮我理解我错过了什么?

    UPDATE2: 问题已经解决。问题是由于防火墙限制而导致PayPal无法返回我们的应用程序。很快,由于这些限制已被删除,应用程序开始正常运行。

1 个答案:

答案 0 :(得分:0)

问题是由于防火墙限制导致PayPal无法返回我们的应用程序造成的。很快,由于这些限制已被删除,应用程序开始正常运行。