PayPal - 在SetExpressCheckout

时间:2015-06-04 15:16:35

标签: .net paypal

以下是与PayPal API相关的问题。我正在使用PayPal Express Checkout,我在.NET中使用它。

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

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

首先,我想知道在调用SetExpressCheckout之后是否有任何方法可以更新运费总额,运费折扣,税收总额等。我没有看到这些值传递到DoExpressCheckoutPayment,也没有看到另一种更新方法。如果这是不可能的,只需传入与通过SetExpressCheckout发送的总金额不同的付款金额,还是会导致问题?或者有没有更好的方法来做到这一点,我没想到?

1 个答案:

答案 0 :(得分:1)

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

有几点需要注意:

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

  • 如果您告诉PayPal一个送货地址,但实际上将货物运到其他地方,您可能没有资格获得卖家保护。当然,如果修改后的地址对于PayPal账户是新的,这是PayPal会在他们的风险评估中考虑的因素,那么不提供该信息将使PayPal的担保无效。