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