贝宝不发送交易信息

时间:2019-11-22 23:40:04

标签: paypal

我正在尝试实施贝宝付款,但无论到目前为止我发现了什么选择或答案,它仍然不会将交易信息发送回成功回调网址(tx,st,amt和cc)< / p>

我将自动返回设置为on,将pdt设置为on,试图将rm设置为所有可能的值(0、1和2),但仍然没有运气

令人困惑的部分是,贝宝(Paypal)文档明确提到在所有情况下我都应该得到它们,除非我使用的是rm 1并包含返回网址,但我只是不这样做

  

返回URL行为。如果设置为“ 1”并且“返回”值为   提交后,付款完成后,买家将被发送   使用GET方法返回返回网址,无需进行任何交易   变量将被提交。如果设置为“ 2”并且“返回”值为   提交后,买方将使用   POST方法,所有可用的事务变量将使用该方法   也被张贴。如果省略或设置为“ 0”,则将使用GET方法   所有订阅交易和立即购买,捐赠或   未启用IPN的PayPal购物车交易。   其余将使用带有变量的POST方法

它确实返回到成功页面,但是不包括交易信息(顺便说一句,即使将rm设置为2并具有适当的返回URL,它仍然会执行get而不是post,这就是为什么我'怀疑文档已过期或沙箱环境有漏洞)

关于它的价值,这是我相关的表单字段

<input type="hidden" name="business" value="sb-h7plu24373@business.example.com" />
<input type="hidden" name="return" value="@(Url.Action("Success", "Paypal", null, "https", (string) ViewBag.host))">
<input type="hidden" name="cancel_return" value="@(Url.Action("Failed", "Paypal", null, "https", (string) ViewBag.host))">
<input type="hidden" name="rm" value="2" />

image from the sample controller i'm using to test

Image from that business dummy account with it's settings done properly

知道我想念什么吗?我一直在考虑完全放弃pdt并依靠ipn webhook,但我想我会先问

p.s。我已经使用实际的主机名进行了测试,实时调试,但是仍然发生了同样的情况,它返回了返回URL,但是没有事务信息,我什至检查了浏览器的“网络”标签以检查请求以确保它没有任何问题在我的网站上发送请求,而没有交易信息

1 个答案:

答案 0 :(得分:1)

在沙盒环境中进行测试可能与您使用PDT遇到的问题有关;可能只能在Live中使用。但是,使用PDT进行设计和使用时,一个更容易被忽略的问题是实际上无法保证收益。根据买方的地区和情况(例如客人结帐),PayPal可能有义务向买方出示收据,在这种情况下,除非买方单击按钮进行退货,否则退货将不会自动进行。或者,买家的浏览器可能会崩溃,或者在交易完成后但在退货之前,其网络连接会中断。因此,实际上,PDT绝对不可靠,并且仅用于提供信息(例如向客户显示感谢消息)。 没有您的业务逻辑(是的,没有)应该依赖于实际工作的PDT。

相反,您可以围绕IPN或Webhook构建设计,尽管它们也可以是异步的和延迟的。


最可靠的解决方案是服务器端设计,该捕获使用对PayPal的API调用进行捕获,因此将基于该服务器端API调用的响应立即通知成功/失败。这是一个骨骼演示:https://developer.paypal.com/demo/checkout/#/pattern/server

请注意,直到fetch( XHR到服务器端点之前,任何PayPal事务都不会发生,服务器端点必须对PayPal进行自己的捕获API调用。