2016-08-02 5 views
0

Я пытаюсь создать модуль для обеспечения частичной оплаты во время процесса оформления заказа.Magento - Ошибка при создании частичного платежа с использованием Paypal Express

Возьмем тележку с 2 продуктами, первый товар = 1000 € и второй товар = 500 €.

Пользователь должен заплатить 1500 €, но я разрешаю разделить платежи в два этапа, первый пользователь заплатит 1000 евро, а затем ему придется заплатить 500 евро.

При попытке использовать компенсацию Paypal Экспресс для этого, я всегда получаю эту ошибку:

PayPal gateway has rejected request. 
Item total is invalid (#10426: Invalid Data). 
The totals of the cart item amounts do not match order amounts 
(#10413: Transaction refused because of an invalid argument. 
See additional error messages for details). 

В принципе, то, что я делаю изменения app/code/local/Mage/Paypal/Model/Express перезапись значение Amount:

$transaction_amount = $this->_quote->getBaseGrandTotal(); 
if ($this->_quote->getPartialpayment_price() > 0) { 
    $transaction_amount = $this->_quote->getPartialpayment_price(); 
} 

$this->_api->setAmount($transaction_amount) 
     ->setCurrencyCode($this->_quote->getBaseCurrencyCode()) 
     ->setInvNum($this->_quote->getReservedOrderId()) 
     ->setReturnUrl($returnUrl) 
     ->setCancelUrl($cancelUrl) 
     ->setSolutionType($solutionType) 
     ->setPaymentAction($this->_config->paymentAction); 

Как можно избежать того, что Paypal внутренне проверяет, чтобы сравнить окончательную сумму с суммой товаров?

ответ

0

Чтобы не отправлять отдельные элементы в запрос API Paypal, есть опция в бэкенде по имени Transfer Cart Line Items. Если в нем установлено значение «НЕТ», мы не добавим каждый элемент корзины в этот запрос.

Paypal Request

Смежные вопросы