| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- namespace App\Data\Pagarme\Request\PagarmeOrderRequestData\PagarmeOrderPaymentData;
- use App\Data\Pagarme\PagarmeData;
- final readonly class PagarmeOrderPaymentData extends PagarmeData
- {
- /**
- * @param PagarmeOrderSplitData[]|null $split
- */
- public function __construct(
- public string $paymentMethod,
- public ?PagarmeOrderCreditCardData $creditCard = null,
- public ?PagarmeOrderPixData $pix = null,
- public ?array $split = null,
- ) {
- self::requireIn($this->paymentMethod, ['credit_card', 'pix'], 'payments.payment_method');
- if ($this->paymentMethod === 'credit_card' && ! $this->creditCard) {
- throw new \InvalidArgumentException('payments.credit_card e obrigatorio para credit_card.');
- }
- if ($this->paymentMethod === 'pix' && ! $this->pix) {
- throw new \InvalidArgumentException('payments.pix e obrigatorio para pix.');
- }
- }
- /**
- * @param PagarmeOrderSplitData[]|null $split
- */
- public static function creditCard(PagarmeOrderCreditCardData $creditCard, ?array $split = null): self
- {
- return new self(
- paymentMethod: 'credit_card',
- creditCard: $creditCard,
- split: $split,
- );
- }
- /**
- * @param PagarmeOrderSplitData[]|null $split
- */
- public static function pix(PagarmeOrderPixData $pix, ?array $split = null): self
- {
- return new self(
- paymentMethod: 'pix',
- pix: $pix,
- split: $split,
- );
- }
- //
- public function toArray(): array
- {
- $payload = $this->filterFilledRecursive([
- 'payment_method' => $this->paymentMethod,
- 'split' => $this->split,
- ]);
- if ($this->creditCard) {
- $payload['credit_card'] = $this->creditCard->toArray();
- }
- if ($this->pix) {
- $payload['pix'] = $this->pix->toArray();
- }
- return $payload;
- }
- }
|