我从 PayPal 的技术部门得到了很好的回应。谢谢伊格纳西奥。我将与此问题的其他人分享我的发现。这是我收到的回复。
我的网站使用的是 PayPal UK Website Payments Pro Hosted Solution。当客户被引导到 PayPal 进行付款时,他们有两个选项,“使用我的 PayPal 帐户付款”或“使用我的借记卡或信用卡付款”。
Website Payments Pro Hosted Solution 有两种不同的付款方式:
- 直接使用信用卡付款,它在内部使用我们的 DoDirectPayment API 在没有 PayPal 帐户的情况下使用信用卡。
- 使用 PayPal 帐户付款,这基本上是重定向到我们的 PayPal 标准付款方式和页面。
如果客户选择使用他们的 PayPal 帐户,他们会登录并付款,然后会被带到一个 PayPal 付款确认页面,上面写着“感谢您的订单。您现在要返回...'此页面悬停约 5-10 秒,然后将客户重定向回确认订单和发送电子邮件等的网站。
当客户使用 PayPal 帐户付款并启用自动退货时,这是 PayPal Standard 中的预期行为。
Pro Hosted 解决方案中包含的“使用 PayPal 付款”选项发生这种情况的原因是,如上所述,此选项基本上是我们的 PayPal 标准付款方式,因此行为完全相同。
我的问题是一些客户没有等待被重定向,这导致订单确认错误。我的问题是如何完全跳过 PayPal 付款确认页面?
不幸的是,根本没有办法跳过此页面。不是来自您的 PayPal 帐户设置,也不是通过发送任何变量。
我有自动返回。我已经设置了一个返回 URL。付款数据传输已开启。showHostedThankyouPage = 假。而且我的想法已经不多了……我宁愿不必使用 IPN,因为这将意味着进一步的集成和编程。
我们绝对推荐 IPN 作为获取新付款通知的更可靠方式,因为即使“自动退货”立即生效,一些客户仍然可以立即关闭浏览器。
如果启用了 IPN,无论客户是否返回您的站点,PayPal 都会始终向您的通知 URL 发送 POST。
有没有解决的办法?在我们升级到 Payments Pro 之前,我们使用的是 Express Checkout,并且只需通过 SOLUTIONTYPE=Sole 和 LANDINGPAGE=Billing,我们就可以跳过确认页面步骤。我希望有一种方法可以做类似的事情,所以不需要重写。
Express Checkout 流程与 PayPal Standard 不同。当客户在 PayPal 中点击“继续/付款”时,我们不会尝试接受付款,而是立即将客户带回 RETURNURL,您自己的集成将通过以下方式完成付款发送 DoExpressCheckoutPayment API 请求。
但同样,Pro Hosted Solution 中的“Pay with PayPal”选项使用 PayPal Standard 而不是 Express Checkout。
除了使用 IPN,我可以建议的唯一选择是禁用 Pro Hosted 解决方案中的“使用 PayPal 支付”选项(这可以从我们这边完成),这样客户只能选择通过直接信用支付卡而不是 PayPal,然后为您的 PayPal 付款实施独立于 Pro Hosted 解决方案的 Express Checkout。