HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/be.naniguide.com/app/Library/AutoBillingData.php
<?php

namespace Acelle\Library;

use Exception;
use Acelle\Library\Contracts\PaymentGatewayInterface;
use Acelle\Library\Facades\Billing;

class AutoBillingData
{
    protected $gateway;
    protected $data;

    public function __construct(PaymentGatewayInterface $gateway, $data = [])
    {
        $this->gateway = $gateway;
        $this->data = $data;
    }

    public function toJson()
    {
        return json_encode([
            'type' => $this->gateway->getType(),
            'data' => $this->data,
        ]);
    }

    public function getGateway()
    {
        return $this->gateway;
    }

    public function getData()
    {
        return $this->data['data'];
    }

    public static function fromJson($json)
    {
        $data = json_decode($json, true);

        if (!isset($data['type'])) {
            throw new Exception('Missing type from auto billing data json');
        }

        // service is not registered -> no valid AutoBillingData -> return null
        if (!Billing::isGatewayRegistered($data['type'])) {
            return null;
        }

        $gateway = Billing::getGateway($data['type']);

        unset($data['type']);

        return new self($gateway, $data);
    }
}