* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * @copyright PayPal */ namespace PaypalAddons\services; use PaypalAddons\classes\AbstractMethodPaypal; use PaypalAddons\classes\Exception\RefundCalculationException; use PaypalOrder; class PaymentTotalAmount { /** * @param PaypalOrder $paypalOrder * * @return float * * @throws RefundCalculationException */ public function get(PaypalOrder $paypalOrder) { $method = AbstractMethodPaypal::load($paypalOrder->method); $total = 0; $totalRefund = 0; try { $order = $method->getInfo($paypalOrder->id_payment); $payments = $order->getData()->result->purchase_units[0]->payments; if (isset($payments->captures)) { foreach ($payments->captures as $capture) { $total += $capture->amount->value; } } if (isset($payments->refunds)) { foreach ($payments->refunds as $refund) { $totalRefund += $refund->amount->value; } } } catch (\Exception $e) { throw new RefundCalculationException($e->getMessage()); } return (float) $total - $totalRefund; } }