PayPal PDT. 返回URL中缺少交易ID。

3
我发现PayPal有一种非常奇怪的行为。当我使用localhost在URL中进行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已激活。

这是我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”中包含以下参数列表的加密字符串:

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返回交易变量到非包含localhost的URL吗?

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

更新2: 问题已得到解决。问题是由于防火墙限制导致PayPal无法返回到我们的应用程序。一旦这些限制被取消,应用程序就开始正常运行。

1个回答

0
问题是由于防火墙限制导致PayPal无法返回我们的应用程序而引起的。一旦这些限制被移除,应用程序就开始正常运行了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接