<?php
/**
* The payer object.
*
* @package WooCommerce\PayPalCommerce\ApiClient\Entity
*/
declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\ApiClient\Entity;
/**
* Class Payer
* The customer who sends the money.
*/
class Payer {
/**
* The name.
*
* @var PayerName|null
*/
private $name;
/**
* The email address.
*
* @var string
*/
private $email_address;
/**
* The payer id.
*
* @var string
*/
private $payer_id;
/**
* The birth date.
*
* @var \DateTime|null
*/
private $birthdate;
/**
* The address.
*
* @var Address|null
*/
private $address;
/**
* The phone.
*
* @var PhoneWithType|null
*/
private $phone;
/**
* The tax info.
*
* @var PayerTaxInfo|null
*/
private $tax_info;
/**
* Payer constructor.
*
* @param PayerName|null $name The name.
* @param string $email_address The email.
* @param string $payer_id The payer id.
* @param Address|null $address The address.
* @param \DateTime|null $birthdate The birth date.
* @param PhoneWithType|null $phone The phone.
* @param PayerTaxInfo|null $tax_info The tax info.
*/
public function __construct(
?PayerName $name,
string $email_address,
string $payer_id,
Address $address = null,
\DateTime $birthdate = null,
PhoneWithType $phone = null,
PayerTaxInfo $tax_info = null
) {
$this->name = $name;
$this->email_address = $email_address;
$this->payer_id = $payer_id;
$this->birthdate = $birthdate;
$this->address = $address;
$this->phone = $phone;
$this->tax_info = $tax_info;
}
/**
* Returns the name.
*
* @return PayerName|null
*/
public function name(): ?PayerName {
return $this->name;
}
/**
* Sets the name.
*
* @param PayerName|null $name The value.
*/
public function set_name( ?PayerName $name ): void {
$this->name = $name;
}
/**
* Returns the email address.
*
* @return string
*/
public function email_address(): string {
return $this->email_address;
}
/**
* Returns the payer id.
*
* @return string
*/
public function payer_id(): string {
return $this->payer_id;
}
/**
* Returns the birth date.
*
* @return \DateTime|null
*/
public function birthdate() {
return $this->birthdate;
}
/**
* Returns the address.
*
* @return Address|null
*/
public function address() {
return $this->address;
}
/**
* Sets the address.
*
* @param Address|null $address The value.
*/
public function set_address( ?Address $address ): void {
$this->address = $address;
}
/**
* Returns the phone.
*
* @return PhoneWithType|null
*/
public function phone() {
return $this->phone;
}
/**
* Returns the tax info.
*
* @return PayerTaxInfo|null
*/
public function tax_info() {
return $this->tax_info;
}
/**
* Returns the object as array.
*
* @return array
*/
public function to_array() {
$payer = array(
'email_address' => $this->email_address(),
);
if ( $this->name ) {
$payer['name'] = $this->name->to_array();
}
if ( $this->address && 2 === strlen( $this->address->country_code() ) ) {
$payer['address'] = $this->address->to_array();
}
if ( $this->payer_id ) {
$payer['payer_id'] = $this->payer_id;
}
if ( $this->phone ) {
$payer['phone'] = $this->phone->to_array();
}
if ( $this->tax_info ) {
$payer['tax_info'] = $this->tax_info->to_array();
}
if ( $this->birthdate ) {
$payer['birth_date'] = $this->birthdate->format( 'Y-m-d' );
}
return $payer;
}
}