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; } }