HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/brameda/brameda.nl/app/Komma/Shop/Payment/Clients/MultiSafepay/Models/Order.php
<?php


namespace App\Komma\Shop\Payment\Clients\MultiSafepay\Models;

/**
 * Class Order
 *
 * @see https://docs.multisafepay.com/api/#orders
 * @sidenote Created by Komma
 *
 * MultiSafepay calls their transactions / payments orders.
 *
 * @package App\Komma\Shop\Payment\Clients\MultiSafepay\Models
 */
class Order
{
    /** @var string */
    private $transaction_id;

    /** @var string */
    private $order_id;

    /** @var string */
    private $created;

    /** @var string */
    private $currency;

    /** @var int */
    private $amount;

    /** @var string */
    private $description;

    /** @var string */
    private $var1;

    /** @var string */
    private $var2;

    /** @var string */
    private $var3;

    /** @var string */
    private $items;

    /** @var int */
    private $amount_refunded;

    /** @var string */
    private $status;

    /** @var string */
    private $financial_status;

    /** @var string */
    private $reason;

    /** @var string */
    private $reason_code;

    /** @var string */
    private $fastcheckout;

    /** @var string */
    private $modified;

    /** @var PaymentDetails */
    private $payment_details;

    /** @var Customer */
    private $customer;

    /** @var PaymentMethod[] */
    private $payment_methods = [];

    /** @var Cost[] */
    private $costs = [];

    /** @var string */
    private $payment_url;

    /** @var string Example: NL87ABNA0000000001*/
    private $account_iban;

    /** @var string Example: INGBNL2A*/
    private $account_bic;

    /** Prevent constructing a new instance with the new keyword */
    private function __construct() {}

    /**
     * Create an instance from a json string
     *
     * @param string $jsonString
     * @return Order
     * @throws \Exception
     */
    public static function FromJsonString(string $jsonString): Order {
        $instance = new self;

        $data = json_decode($jsonString, true);
        if($data == null) throw new \Exception('MultiSafepay Order: The order data is invalid. It does not seem to be a json string.');

        $instance->transaction_id = (!empty($data['transaction_id'])) ? $data['transaction_id'] : '';
        $instance->order_id = (!empty($data['order_id'])) ? $data['order_id'] : '';
        $instance->created = (!empty($data['created'])) ? $data['created'] : '';
        $instance->currency = (!empty($data['currency'])) ? $data['currency'] : '';
        $instance->amount = (!empty($data['amount'])) ? $data['amount'] : 0;
        $instance->description = (!empty($data['description'])) ? $data['description'] : '';
        $instance->var1 = (!empty($data['var1'])) ? $data['var1'] : null;
        $instance->var2 = (!empty($data['var2'])) ? $data['var2'] : null;
        $instance->var3 = (!empty($data['var3'])) ? $data['var3'] : null;
        $instance->items = (!empty($data['items'])) ? $data['items'] : '';
        $instance->amount_refunded = (!empty($data['amount_refunded'])) ? $data['amount_refunded'] : 0;
        $instance->status = (!empty($data['status'])) ? $data['status'] : '';
        $instance->financial_status = (!empty($data['financial_status'])) ? $data['financial_status'] : '';
        $instance->reason = (!empty($data['reason'])) ? $data['reason'] : '';
        $instance->reason_code = (!empty($data['reason_code'])) ? $data['reason_code'] : '';
        $instance->fastcheckout = (!empty($data['fastcheckout'])) ? $data['fastcheckout'] : '';
        $instance->modified = (!empty($data['modified'])) ? $data['modified'] : '';

        if(!empty($data['customer'])) {
            $instance->customer = Customer::FromJsonString(json_encode($data['customer']));
        } else {
            $instance->customer = Customer::FromJsonString('{}');
        }

        if(!empty($data['payment_details'])) {
            $instance->payment_details = PaymentDetails::FromJsonString(json_encode($data['payment_details']));
        } else {
            $instance->payment_details = PaymentDetails::FromJsonString('{}');
        }

        if(!empty($data['payment_methods'])) {
            if(is_array($data['payment_methods'])) {
                foreach ($data['payment_methods'] as $paymentMethod) {
                    $instance->payment_methods[] = PaymentMethod::FromJsonString(json_encode($paymentMethod));
                }
            }
        }

        if(!empty($data['costs'])) {
            if(is_array($data['costs'])) {
                foreach ($data['costs'] as $paymentMethod) {
                    $instance->costs[] = Cost::FromJsonString(json_encode($paymentMethod));
                }
            }
        }

        $instance->payment_url = (!empty($data['payment_url'])) ? $data['payment_url'] : '';

        return $instance;
    }

    /**
     * @return string
     */
    public function getTransactionId(): string
    {
        return $this->transaction_id;
    }

    /**
     * @return string
     */
    public function getOrderId(): string
    {
        return $this->order_id;
    }

    /**
     * @return string
     */
    public function getCreated(): string
    {
        return $this->created;
    }

    /**
     * @return string
     */
    public function getCurrency(): string
    {
        return $this->currency;
    }

    /**
     * @return int
     */
    public function getAmount(): int
    {
        return $this->amount;
    }

    /**
     * @return string
     */
    public function getDescription(): string
    {
        return $this->description;
    }

    /**
     * @return string
     */
    public function getVar1(): string
    {
        return $this->var1;
    }

    /**
     * @return string
     */
    public function getVar2(): string
    {
        return $this->var2;
    }

    /**
     * @return string
     */
    public function getVar3(): string
    {
        return $this->var3;
    }

    /**
     * @return string
     */
    public function getItems(): string
    {
        return $this->items;
    }

    /**
     * @return int
     */
    public function getAmountRefunded(): int
    {
        return $this->amount_refunded;
    }

    /**
     * @return string
     */
    public function getStatus(): string
    {
        return $this->status;
    }

    /**
     * @return string
     */
    public function getFinancialStatus(): string
    {
        return $this->financial_status;
    }

    /**
     * @return string
     */
    public function getReason(): string
    {
        return $this->reason;
    }

    /**
     * @return string
     */
    public function getReasonCode(): string
    {
        return $this->reason_code;
    }

    /**
     * @return string
     */
    public function getFastcheckout(): string
    {
        return $this->fastcheckout;
    }

    /**
     * @return string
     */
    public function getModified(): string
    {
        return $this->modified;
    }

    /**
     * @return PaymentDetails
     */
    public function getPaymentDetails(): PaymentDetails
    {
        return $this->payment_details;
    }

    /**
     * @return Customer
     */
    public function getCustomer(): Customer
    {
        return $this->customer;
    }

    /**
     * @return PaymentMethod[]
     */
    public function getPaymentMethods(): array
    {
        return $this->payment_methods;
    }

    /**
     * @return Cost[]
     */
    public function getCosts(): array
    {
        return $this->costs;
    }

    /**
     * @return string
     */
    public function getPaymentUrl(): string
    {
        return $this->payment_url;
    }

    /**
     * @return string
     */
    public function getAccountIban(): string
    {
        return $this->account_iban;
    }

    /**
     * @return string
     */
    public function getAccountBic(): string
    {
        return $this->account_bic;
    }

    /**
     * @param string $transaction_id
     * @return Order
     */
    public function setTransactionId(string $transaction_id): Order
    {
        $this->transaction_id = $transaction_id;
        return $this;
    }

    /**
     * @param string $order_id
     * @return Order
     */
    public function setOrderId(string $order_id): Order
    {
        $this->order_id = $order_id;
        return $this;
    }

    /**
     * @param string $created
     * @return Order
     */
    public function setCreated(string $created): Order
    {
        $this->created = $created;
        return $this;
    }

    /**
     * @param string $currency
     * @return Order
     */
    public function setCurrency(string $currency): Order
    {
        $this->currency = $currency;
        return $this;
    }

    /**
     * @param int $amount
     * @return Order
     */
    public function setAmount(int $amount): Order
    {
        $this->amount = $amount;
        return $this;
    }

    /**
     * @param string $description
     * @return Order
     */
    public function setDescription(string $description): Order
    {
        $this->description = $description;
        return $this;
    }

    /**
     * @param string $var1
     * @return Order
     */
    public function setVar1(string $var1): Order
    {
        $this->var1 = $var1;
        return $this;
    }

    /**
     * @param string $var2
     * @return Order
     */
    public function setVar2(string $var2): Order
    {
        $this->var2 = $var2;
        return $this;
    }

    /**
     * @param string $var3
     * @return Order
     */
    public function setVar3(string $var3): Order
    {
        $this->var3 = $var3;
        return $this;
    }

    /**
     * @param string $items
     * @return Order
     */
    public function setItems(string $items): Order
    {
        $this->items = $items;
        return $this;
    }

    /**
     * @param int $amount_refunded
     * @return Order
     */
    public function setAmountRefunded(int $amount_refunded): Order
    {
        $this->amount_refunded = $amount_refunded;
        return $this;
    }

    /**
     * @param string $status
     * @return Order
     */
    public function setStatus(string $status): Order
    {
        $this->status = $status;
        return $this;
    }

    /**
     * @param string $financial_status
     * @return Order
     */
    public function setFinancialStatus(string $financial_status): Order
    {
        $this->financial_status = $financial_status;
        return $this;
    }

    /**
     * @param string $reason
     * @return Order
     */
    public function setReason(string $reason): Order
    {
        $this->reason = $reason;
        return $this;
    }

    /**
     * @param string $reason_code
     * @return Order
     */
    public function setReasonCode(string $reason_code): Order
    {
        $this->reason_code = $reason_code;
        return $this;
    }

    /**
     * @param string $fastcheckout
     * @return Order
     */
    public function setFastcheckout(string $fastcheckout): Order
    {
        $this->fastcheckout = $fastcheckout;
        return $this;
    }

    /**
     * @param string $modified
     * @return Order
     */
    public function setModified(string $modified): Order
    {
        $this->modified = $modified;
        return $this;
    }

    /**
     * @param PaymentDetails $payment_details
     * @return Order
     */
    public function setPaymentDetails(PaymentDetails $payment_details): Order
    {
        $this->payment_details = $payment_details;
        return $this;
    }

    /**
     * @param Customer $customer
     * @return Order
     */
    public function setCustomer(Customer $customer): Order
    {
        $this->customer = $customer;
        return $this;
    }

    /**
     * @param PaymentMethod[] $payment_methods
     * @return Order
     */
    public function setPaymentMethods(array $payment_methods): Order
    {
        $this->payment_methods = $payment_methods;
        return $this;
    }

    /**
     * @param Cost[] $costs
     * @return Order
     */
    public function setCosts(array $costs): Order
    {
        $this->costs = $costs;
        return $this;
    }

    /**
     * @param string $payment_url
     * @return Order
     */
    public function setPaymentUrl(string $payment_url): Order
    {
        $this->payment_url = $payment_url;
        return $this;
    }

    /**
     * @param string $account_iban
     * @return Order
     */
    public function setAccountIban(string $account_iban): Order
    {
        $this->account_iban = $account_iban;
        return $this;
    }

    /**
     * @param string $account_bic
     * @return Order
     */
    public function setAccountBic(string $account_bic): Order
    {
        $this->account_bic = $account_bic;
        return $this;
    }
}