В моем магазине я должен иметь возможность отменить заказ клиента и вернуть ему общую сумму, которую он заплатил.
На кассе PayPal клиенту указывается стоимость его товаров и стоимость доставки, а затем общая стоимость. Когда я пытаюсь оформить полный возврат через API NVP, он только возмещает сумму за товары и не включает стоимость доставки, которую они заплатили.
Есть ли способ удостовериться в том, что возмещается абсолютная общая сумма?
Первоначально я прошел только через идентификатор транзакции PayPal, так как по умолчанию автоматически возвращается полный возврат средств,
'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 при оформлении заказа покупателем и просто смешивать ее со стоимостью продуктов. Но это не будет оптимальным опытом для клиентов и выглядит как-то странно.
Вы должны вытащить промежуточный итог из вашей системы для возврата вместо общей суммы. Простое решение, хотя. Если вы делаете полный возврат средств, просто оставьте параметры AMT и REFUNDTYPE вне запроса. Это будет по умолчанию полный возврат средств. Это требуется только в том случае, если вы делаете частичное возмещение.
Я исправил это, оказывается, ошибка была в оригинальной покупке. Когда клиент делает заказ, я отправил в 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