.net - PayPal - 在 SetExpressCheckout 后更新运输信息

标签 .net paypal

以下是与 PayPal API 相关的问题。我正在使用 PayPal Express Checkout,我正在将其与 .NET 一起使用。

通过我们的软件,用户可以通过两种不同的方式使用 PayPal 结账。一个是他们从结帐页面选择它作为付款选项。如果他们以这种方式到达那里,他们将已经输入了他们的运输信息并选择了他们的运输方式,并且所有这些(运输信息、运输总计、运输折扣)都通过 SetExpressCheckout 功能传递到 PayPal。然后他们将被重定向到一个现场确认页面,在那里他们单击一个按钮以确认他们的付款(调用 DoExpressCheckoutPayment)以及支付的金额。这一切都有效,但此页面还允许用户在点击确认之前更改他们首选的送货方式。更改运输方式会改变运费总额,也可能会影响运费折扣和税金总额。在确认订单(通过 DoExpressCheckoutPayment)之前,我找不到在 PayPal 中实际更新此信息的方法。在这种情况下,我向此函数传递的金额与最初通过 SetExpressCheckout 给出的订单总额不同。

客户结帐的另一种方式是单击购物车页面上的 PayPal 结帐按钮。如果用户以这种方式结账,在到达确认页面之前他甚至不会选择运输方式,因此最初的 SetExpressCheckout 调用根本不会发送运费总额和折扣。除此之外,在这种情况下,一切都与第一种情况相同。它会更新我们软件中的送货方式和总计金额,并将最终金额发送回 PayPal。

首先,我想知道在调用 SetExpressCheckout 之后是否真的有任何方法可以更新运费总额、运费折扣、税费总额等。我没有看到这些值被传递到 DoExpressCheckoutPayment,也没有看到其他更新方法。如果这不可能,是否只需传入与通过 SetExpressCheckout 发送的总额不同的付款金额就足够了,否则会导致问题吗?还是有我没有想到的更好的方法?

最佳答案

你很好。 ExpressCheckout 旨在根据在 SetEC 时发送的大致购物车的 cargo 获得买家的批准(并评估买家的支付能力),然后将买家返回到卖家的网站并可能更改购物车(例如加急运输或追加销售)额外购买)在调用 DoEC 之前。这应该都有效。您只需在 DoEC 调用中发送不同的最终金额。

有几点需要注意:

  • 如果总数差异很大,则付款在 DoEC 时被拒绝的可能性更大。例如。买家可能会以 80 美元测试 OK,但如果您随后以 300 美元调用 DoEC,PayPal 可能会要求买家返回 PayPal 以解决他们的支付能力(例如更改或添加资金来源)。通常在 20% 以内你应该是安全的。 PayPal 有特定的返回代码,表明您应该将买家发回给他们(通过另一个重定向)以纠正问题/重新进行资金来源选择和批准。

  • 如果您向 PayPal 提供了一个送货地址,但实际上将 cargo 运送到其他地方,您可能没有资格获得卖家保护。当然,如果修改后的地址是该 PayPal 账户的新地址,PayPal 会在其风险评估中考虑这一点,因此不提供该信息将使 PayPal 的保证失效。

关于.net - PayPal - 在 SetExpressCheckout 后更新运输信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30647783/

相关文章:

PayPal Pro NVP API 错误本地化

paypal - 在不符合 PCI 的情况下保存信用卡

ios - 适用于 iOS 和 PhoneGap 的 PayPal 移动支付、登录、MPL 和 MEP 文件

java - 使用 java play 框架的 Integration Express Checkout 问题

c# - Datagrid列可以在不同的行中包含不同类型的控件吗

c# - P/Invoke、Pinning 和 KeepAlive 最佳实践

.net - Xpath 和 XmlNameSpace

jsf - 如何在 JSF 应用程序中集成 PayPal

内容页面中的 JavaScript 验证

c# - 检测屏幕键盘是否打开