我偶然发现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
要明确:
以下是我的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无法返回我们的应用程序。很快,由于这些限制已被删除,应用程序开始正常运行。
答案 0 :(得分:0)
问题是由于防火墙限制导致PayPal无法返回我们的应用程序造成的。很快,由于这些限制已被删除,应用程序开始正常运行。