<?php
/**
* The Authorization object
*
* @package WooCommerce\PayPalCommerce\ApiClient\Entity
*/
declare (strict_types=1);
namespace WooCommerce\PayPalCommerce\ApiClient\Entity;
/**
* Class Authorization
*/
class Authorization
{
/**
* The Id.
*
* @var string
*/
private $id;
/**
* The status.
*
* @var AuthorizationStatus
*/
private $authorization_status;
/**
* The fraud processor response (AVS, CVV ...).
*
* @var FraudProcessorResponse|null
*/
protected $fraud_processor_response;
/**
* Authorization constructor.
*
* @param string $id The id.
* @param AuthorizationStatus $authorization_status The status.
* @param FraudProcessorResponse|null $fraud_processor_response The fraud processor response (AVS, CVV ...).
*/
public function __construct(string $id, \WooCommerce\PayPalCommerce\ApiClient\Entity\AuthorizationStatus $authorization_status, ?\WooCommerce\PayPalCommerce\ApiClient\Entity\FraudProcessorResponse $fraud_processor_response)
{
$this->id = $id;
$this->authorization_status = $authorization_status;
$this->fraud_processor_response = $fraud_processor_response;
}
/**
* Returns the Id.
*
* @return string
*/
public function id(): string
{
return $this->id;
}
/**
* Returns the status.
*
* @return AuthorizationStatus
*/
public function status(): \WooCommerce\PayPalCommerce\ApiClient\Entity\AuthorizationStatus
{
return $this->authorization_status;
}
/**
* Checks whether the authorization can be voided.
*
* @return bool
*/
public function is_voidable(): bool
{
return $this->authorization_status->is(\WooCommerce\PayPalCommerce\ApiClient\Entity\AuthorizationStatus::CREATED) || $this->authorization_status->is(\WooCommerce\PayPalCommerce\ApiClient\Entity\AuthorizationStatus::PENDING);
}
/**
* Returns the fraud processor response (AVS, CVV ...).
*
* @return FraudProcessorResponse|null
*/
public function fraud_processor_response(): ?\WooCommerce\PayPalCommerce\ApiClient\Entity\FraudProcessorResponse
{
return $this->fraud_processor_response;
}
/**
* Returns the object as array.
*
* @return array
*/
public function to_array(): array
{
$data = array('id' => $this->id, 'status' => $this->authorization_status->name());
if ($this->fraud_processor_response) {
$data['fraud_processor_response'] = $this->fraud_processor_response->to_array();
}
return $data;
}
}