<?php
/**
* The capture entity.
*
* @link https://developer.paypal.com/docs/api/orders/v2/#definition-capture
*
* @package WooCommerce\PayPalCommerce\ApiClient\Entity
*/
declare (strict_types=1);
namespace WooCommerce\PayPalCommerce\ApiClient\Entity;
/**
* Class Capture
*/
class Capture
{
/**
* The ID.
*
* @var string
*/
private $id;
/**
* The status.
*
* @var CaptureStatus
*/
private $status;
/**
* The amount.
*
* @var Amount
*/
private $amount;
/**
* Whether this is the final capture or not.
*
* @var bool
*/
private $final_capture;
/**
* The seller protection.
*
* @var string
*/
private $seller_protection;
/**
* The detailed breakdown of the capture activity (fees, ...).
*
* @var SellerReceivableBreakdown|null
*/
private $seller_receivable_breakdown;
/**
* The fraud processor response (AVS, CVV ...).
*
* @var FraudProcessorResponse|null
*/
protected $fraud_processor_response;
/**
* The invoice id.
*
* @var string
*/
private $invoice_id;
/**
* The custom id.
*
* @var string
*/
private $custom_id;
/**
* Capture constructor.
*
* @param string $id The ID.
* @param CaptureStatus $status The status.
* @param Amount $amount The amount.
* @param bool $final_capture The final capture.
* @param string $seller_protection The seller protection.
* @param string $invoice_id The invoice id.
* @param string $custom_id The custom id.
* @param SellerReceivableBreakdown|null $seller_receivable_breakdown The detailed breakdown of the capture activity (fees, ...).
* @param FraudProcessorResponse|null $fraud_processor_response The fraud processor response (AVS, CVV ...).
*/
public function __construct(string $id, \WooCommerce\PayPalCommerce\ApiClient\Entity\CaptureStatus $status, \WooCommerce\PayPalCommerce\ApiClient\Entity\Amount $amount, bool $final_capture, string $seller_protection, string $invoice_id, string $custom_id, ?\WooCommerce\PayPalCommerce\ApiClient\Entity\SellerReceivableBreakdown $seller_receivable_breakdown, ?\WooCommerce\PayPalCommerce\ApiClient\Entity\FraudProcessorResponse $fraud_processor_response)
{
$this->id = $id;
$this->status = $status;
$this->amount = $amount;
$this->final_capture = $final_capture;
$this->seller_protection = $seller_protection;
$this->invoice_id = $invoice_id;
$this->custom_id = $custom_id;
$this->seller_receivable_breakdown = $seller_receivable_breakdown;
$this->fraud_processor_response = $fraud_processor_response;
}
/**
* Returns the ID.
*
* @return string
*/
public function id(): string
{
return $this->id;
}
/**
* Returns the status.
*
* @return CaptureStatus
*/
public function status(): \WooCommerce\PayPalCommerce\ApiClient\Entity\CaptureStatus
{
return $this->status;
}
/**
* Returns the amount.
*
* @return Amount
*/
public function amount(): \WooCommerce\PayPalCommerce\ApiClient\Entity\Amount
{
return $this->amount;
}
/**
* Returns whether this is the final capture or not.
*
* @return bool
*/
public function final_capture(): bool
{
return $this->final_capture;
}
/**
* Returns the seller protection object.
*
* @return object
*/
public function seller_protection()
{
return (object) array('status' => $this->seller_protection);
}
/**
* Returns the invoice id.
*
* @return string
*/
public function invoice_id(): string
{
return $this->invoice_id;
}
/**
* Returns the custom id.
*
* @return string
*/
public function custom_id(): string
{
return $this->custom_id;
}
/**
* Returns the detailed breakdown of the capture activity (fees, ...).
*
* @return SellerReceivableBreakdown|null
*/
public function seller_receivable_breakdown(): ?\WooCommerce\PayPalCommerce\ApiClient\Entity\SellerReceivableBreakdown
{
return $this->seller_receivable_breakdown;
}
/**
* 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 entity as array.
*
* @return array
*/
public function to_array(): array
{
$data = array('id' => $this->id(), 'status' => $this->status()->name(), 'amount' => $this->amount()->to_array(), 'final_capture' => $this->final_capture(), 'seller_protection' => (array) $this->seller_protection(), 'invoice_id' => $this->invoice_id(), 'custom_id' => $this->custom_id());
$details = $this->status()->details();
if ($details) {
$data['status_details'] = array('reason' => $details->reason());
}
if ($this->seller_receivable_breakdown) {
$data['seller_receivable_breakdown'] = $this->seller_receivable_breakdown->to_array();
}
if ($this->fraud_processor_response) {
$data['fraud_processor_response'] = $this->fraud_processor_response->to_array();
}
return $data;
}
}