mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Symfony Serializer
This commit is contained in:
parent
78367c1e2d
commit
c0483d727f
@ -13,6 +13,7 @@
|
||||
namespace App\PaymentDrivers\CBAPowerBoard;
|
||||
|
||||
use App\Models\ClientGatewayToken;
|
||||
use App\PaymentDrivers\CBAPowerBoard\Models\Customer as ModelsCustomer;
|
||||
use App\PaymentDrivers\CBAPowerBoardPaymentDriver;
|
||||
|
||||
class Customer
|
||||
@ -31,7 +32,7 @@ class Customer
|
||||
->first();
|
||||
|
||||
if($token && $customer = $this->getCustomer($token->gateway_customer_reference)){
|
||||
return $customer->resource->data;
|
||||
return (new \App\PaymentDrivers\CBAPowerBoard\Models\Parse())->decode(ModelsCustomer::class, $customer->resource->data);
|
||||
}
|
||||
|
||||
if($customer = $this->findCustomer())
|
||||
@ -113,6 +114,7 @@ class Customer
|
||||
// 'address_postcode' => $this->powerboard->client->postal_code ?? '',
|
||||
|
||||
$payload = [
|
||||
'company_name' => $this->powerboard->client->present()->name(),
|
||||
'first_name' => $this->powerboard->client->present()->first_name(),
|
||||
'last_name' => $this->powerboard->client->present()->first_name(),
|
||||
'email' => $this->powerboard->client->present()->email(),
|
||||
|
84
app/PaymentDrivers/CBAPowerBoard/Models/Customer.php
Normal file
84
app/PaymentDrivers/CBAPowerBoard/Models/Customer.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2024. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\PaymentDrivers\CBAPowerBoard\Models;
|
||||
|
||||
|
||||
class Customer
|
||||
{
|
||||
/** @var string */
|
||||
public string $_id;
|
||||
/** @var string */
|
||||
public string $_source_ip_address;
|
||||
/** @var string */
|
||||
public string $first_name;
|
||||
/** @var string */
|
||||
public string $last_name;
|
||||
/** @var string */
|
||||
public string $email;
|
||||
/** @var string */
|
||||
public string $reference;
|
||||
/** @var string */
|
||||
public string $default_source;
|
||||
/** @var string */
|
||||
public string $status;
|
||||
/** @var bool */
|
||||
public bool $archived;
|
||||
/** @var string */
|
||||
public string $created_at;
|
||||
/** @var string */
|
||||
public string $updated_at;
|
||||
/** @var bool */
|
||||
public bool $_check_expire_date;
|
||||
/** @var PaymentSources[] */
|
||||
public array $payment_sources;
|
||||
/** @var array */
|
||||
public array $payment_destinations;
|
||||
/** @var string */
|
||||
public string $company_id;
|
||||
|
||||
/**
|
||||
* @param PaymentSources[] $payment_sources
|
||||
*/
|
||||
public function __construct(
|
||||
string $_id,
|
||||
string $_source_ip_address,
|
||||
string $first_name,
|
||||
string $last_name,
|
||||
string $email,
|
||||
string $reference,
|
||||
string $default_source,
|
||||
string $status,
|
||||
bool $archived,
|
||||
string $created_at,
|
||||
string $updated_at,
|
||||
bool $_check_expire_date,
|
||||
array $payment_sources,
|
||||
array $payment_destinations,
|
||||
string $company_id
|
||||
) {
|
||||
$this->_id = $_id;
|
||||
$this->_source_ip_address = $_source_ip_address;
|
||||
$this->first_name = $first_name;
|
||||
$this->last_name = $last_name;
|
||||
$this->email = $email;
|
||||
$this->reference = $reference;
|
||||
$this->default_source = $default_source;
|
||||
$this->status = $status;
|
||||
$this->archived = $archived;
|
||||
$this->created_at = $created_at;
|
||||
$this->updated_at = $updated_at;
|
||||
$this->_check_expire_date = $_check_expire_date;
|
||||
$this->payment_sources = $payment_sources;
|
||||
$this->payment_destinations = $payment_destinations;
|
||||
$this->company_id = $company_id;
|
||||
}
|
||||
}
|
70
app/PaymentDrivers/CBAPowerBoard/Models/Parse.php
Normal file
70
app/PaymentDrivers/CBAPowerBoard/Models/Parse.php
Normal file
@ -0,0 +1,70 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2024. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\PaymentDrivers\CBAPowerBoard\Models;
|
||||
|
||||
use Symfony\Component\Serializer\Serializer;
|
||||
use Symfony\Component\Serializer\Encoder\JsonEncoder;
|
||||
use Symfony\Component\PropertyInfo\PropertyInfoExtractor;
|
||||
use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor;
|
||||
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
|
||||
use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer;
|
||||
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
|
||||
use Symfony\Component\Serializer\Mapping\Loader\AttributeLoader;
|
||||
use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor;
|
||||
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;
|
||||
use Symfony\Component\Serializer\NameConverter\MetadataAwareNameConverter;
|
||||
|
||||
class Parse
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
public function decode($object_type, $document)
|
||||
{
|
||||
|
||||
$phpDocExtractor = new PhpDocExtractor();
|
||||
$reflectionExtractor = new ReflectionExtractor();
|
||||
|
||||
// list of PropertyTypeExtractorInterface (any iterable)
|
||||
$typeExtractors = [$reflectionExtractor,$phpDocExtractor];
|
||||
|
||||
// list of PropertyDescriptionExtractorInterface (any iterable)
|
||||
$descriptionExtractors = [$phpDocExtractor];
|
||||
|
||||
// list of PropertyInitializableExtractorInterface (any iterable)
|
||||
$propertyInitializableExtractors = [$reflectionExtractor];
|
||||
|
||||
$propertyInfo = new PropertyInfoExtractor(
|
||||
$propertyInitializableExtractors,
|
||||
$descriptionExtractors,
|
||||
$typeExtractors,
|
||||
);
|
||||
|
||||
$classMetadataFactory = new ClassMetadataFactory(new AttributeLoader());
|
||||
|
||||
$metadataAwareNameConverter = new MetadataAwareNameConverter($classMetadataFactory);
|
||||
|
||||
$normalizer = new ObjectNormalizer($classMetadataFactory, $metadataAwareNameConverter, null, $propertyInfo);
|
||||
|
||||
$normalizers = [new DateTimeNormalizer(), $normalizer, new ArrayDenormalizer()];
|
||||
|
||||
$encoders = [new JsonEncoder()];
|
||||
|
||||
$serializer = new Serializer($normalizers, $encoders);
|
||||
nlog($document);
|
||||
$data = $serializer->deserialize(json_encode($document), $object_type, 'json', [\Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer::SKIP_NULL_VALUES => true]);
|
||||
|
||||
return $data;
|
||||
|
||||
}
|
||||
}
|
92
app/PaymentDrivers/CBAPowerBoard/Models/PaymentSources.php
Normal file
92
app/PaymentDrivers/CBAPowerBoard/Models/PaymentSources.php
Normal file
@ -0,0 +1,92 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2024. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\PaymentDrivers\CBAPowerBoard\Models;
|
||||
|
||||
class PaymentSources
|
||||
{
|
||||
/** @var string */
|
||||
public string $_id;
|
||||
/** @var string */
|
||||
public string $type;
|
||||
/** @var string */
|
||||
public string $vault_token;
|
||||
/** @var string */
|
||||
public string $card_name;
|
||||
/** @var string */
|
||||
public string $card_number_bin;
|
||||
/** @var string */
|
||||
public string $card_number_last4;
|
||||
/** @var string */
|
||||
public string $card_scheme;
|
||||
/** @var string|null */
|
||||
public ?string $address_line1;
|
||||
/** @var string|null */
|
||||
public ?string $address_line2;
|
||||
/** @var string|null */
|
||||
public ?string $address_city;
|
||||
/** @var string|null */
|
||||
public ?string $address_country;
|
||||
/** @var string|null */
|
||||
public ?string $address_state;
|
||||
/** @var int */
|
||||
public int $expire_month;
|
||||
/** @var int */
|
||||
public int $expire_year;
|
||||
/** @var string */
|
||||
public string $status;
|
||||
/** @var string */
|
||||
public string $created_at;
|
||||
/** @var string */
|
||||
public string $updated_at;
|
||||
/** @var string */
|
||||
public string $vault_type;
|
||||
|
||||
public function __construct(
|
||||
string $_id,
|
||||
string $type,
|
||||
string $vault_token,
|
||||
string $card_name,
|
||||
string $card_number_bin,
|
||||
string $card_number_last4,
|
||||
string $card_scheme,
|
||||
?string $address_line1,
|
||||
?string $address_line2,
|
||||
?string $address_city,
|
||||
?string $address_country,
|
||||
?string $address_state,
|
||||
int $expire_month,
|
||||
int $expire_year,
|
||||
string $status,
|
||||
string $created_at,
|
||||
string $updated_at,
|
||||
string $vault_type
|
||||
) {
|
||||
$this->_id = $_id;
|
||||
$this->type = $type;
|
||||
$this->vault_token = $vault_token;
|
||||
$this->card_name = $card_name;
|
||||
$this->card_number_bin = $card_number_bin;
|
||||
$this->card_number_last4 = $card_number_last4;
|
||||
$this->card_scheme = $card_scheme;
|
||||
$this->address_line1 = $address_line1;
|
||||
$this->address_line2 = $address_line2;
|
||||
$this->address_city = $address_city;
|
||||
$this->address_country = $address_country;
|
||||
$this->address_state = $address_state;
|
||||
$this->expire_month = $expire_month;
|
||||
$this->expire_year = $expire_year;
|
||||
$this->status = $status;
|
||||
$this->created_at = $created_at;
|
||||
$this->updated_at = $updated_at;
|
||||
$this->vault_type = $vault_type;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user