App\Ninja\PaymentDrivers\BasePaymentDriver::refundPayment PHP Méthode

refundPayment() public méthode

public refundPayment ( $payment, $amount )
    public function refundPayment($payment, $amount = 0)
    {
        if ($amount) {
            $amount = min($amount, $payment->getCompletedAmount());
        } else {
            $amount = $payment->getCompletedAmount();
        }
        if (!$amount) {
            return false;
        }
        if ($payment->payment_type_id == PAYMENT_TYPE_CREDIT) {
            return $payment->recordRefund($amount);
        }
        $details = $this->refundDetails($payment, $amount);
        $response = $this->gateway()->refund($details)->send();
        if ($response->isSuccessful()) {
            return $payment->recordRefund($amount);
        } elseif ($this->attemptVoidPayment($response, $payment, $amount)) {
            $details = ['transactionReference' => $payment->transaction_reference];
            $response = $this->gateway->void($details)->send();
            if ($response->isSuccessful()) {
                return $payment->markVoided();
            }
        }
        return false;
    }