【问题标题】:Paypal NVP API Refund buyers total amount including shipping via RefundTransactionPaypal NVP API 退款买家总金额,包括通过 RefundTransaction 进行的运费
【发布时间】:2017-10-20 19:02:21
【问题描述】:

在我的商店中,我需要能够取消客户的订单并将他们支付的总金额退还给他们。

在 PayPal 结账时,客户会看到他们的商品成本和运费,然后是总成本。当我尝试通过 NVP API 发出全额退款时,它只会退还商品的金额,不包括他们支付的运费。

有没有办法确定是否退还绝对总金额?

最初我只通过了 PayPal 交易 ID,因为它默认自动全额退款,

    'TRANSACTIONID' => $paypalTransactionId

但我在从 API 传回的数据中收到以下内容。

    ["TOTALREFUNDEDAMOUNT"]=> string(5) "64.40"

总金额应该是 69.40。 (产品为 64.00,运费为 5.00)。

我自己尝试过通过总金额 (AMT),但 API 抱怨退款需要小于或等于产品的成本。

    'TRANSACTIONID' => $paypalTransactionId,
    'AMT' => $totalPrice,
    'REFUNDTYPE' => 'Full'

并且还尝试过传递运费

    'TRANSACTIONID' => $paypalTransactionId,
    'SHIPPINGAMT' => $shipping_price,
    'REFUNDTYPE' => 'Full'

两者都不做。

解决此问题的一种可能方法是在客户结账时不通过 Paypal 转嫁任何运费,而只是将其混入产品成本中。但这不会是最佳的客户体验,而且感觉有点老套。

PayPal RefundTransaction docs

【问题讨论】:

    标签: php paypal paypal-sandbox paypal-nvp


    【解决方案1】:

    我解决了这个问题,结果发现错误出在原始购买中。当客户下订单时,我向 PayPal 发送了以下信息:

    [AMT] => 60.00 // this amount should contain total including shipping
    [ITEMAMT] => 60.00 
    [SHIPPINGAMT] => 4.99
    

    但仍向客户收取正确的 64.99。

    将运费添加到 [AMT] 后仍会向客户收取 64.99 美元(而不是像我想象的那样是 69.98 美元)。

    [AMT] => 64.99
    [ITEMAMT] => 60.00
    [SHIPPINGAMT] => 4.99
    

    【讨论】:

      【解决方案2】:

      对于退款,您必须从系统中提取小计而不是总计。不过,简单的修复。如果您要全额退款,只需在请求中保留 AMT 和 REFUNDTYPE 参数即可。这将默认为全额退款。仅当您进行部分退款时才需要这些。

      【讨论】:

      • 我最初做了安德鲁,因为默认是全额退款,但仍然没有添加运费。此外,我尝试不发送金额,并且在其他任何地方都没有将任何值传递给退款。更新了我的问题以反映这一点,干杯。
      • 您的原始帖子仍然没有显示我所说的内容。摆脱所有退款类型的东西。只需将其排除在外,让它默认即可。它将全额退还。如果您说不是,那么我需要查看原始请求/响应的示例。
      猜你喜欢
      • 2015-12-03
      • 2013-11-11
      • 2019-06-10
      • 1970-01-01
      • 2014-03-05
      • 1970-01-01
      • 2017-12-22
      • 2021-01-11
      • 2013-08-07
      相关资源
      最近更新 更多