Paypal NVP API Refund买家总金额,包括通过RefundTransaction

时间:2017-05-20 20:30:57

标签: php paypal paypal-sandbox paypal-nvp

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

在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

2 个答案:

答案 0 :(得分:0)

您必须从系统中提取小计以获得退款,而不是总额。但是,简单的修复。如果您要全额退款,请将AMT和REFUNDTYPE参数保留在请求之外。这将默认为全额退款。只有在您进行部分退款时才需要这些。

答案 1 :(得分:0)

我修复此问题,原来购买错误。当客户下订单时,我将以下内容发送给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