name, 'name'); self::requireFilled($this->email, 'email'); self::requireFilled($this->document, 'document'); self::requireIn($this->type, ['individual', 'company'], 'type'); self::requireIn($this->documentType, ['CPF', 'CNPJ'], 'document_type'); self::requireFilled($this->code, 'code'); } public static function fromPayload( ?string $name, ?string $email, ?string $document, string $code, array $addressData = [], ?string $phone = null, ): self { $document = self::digits($document); return new self( name: $name ?: 'Cliente', email: (string) $email, document: $document, type: strlen($document) === 14 ? 'company' : 'individual', documentType: strlen($document) === 14 ? 'CNPJ' : 'CPF', code: $code, address: PagarmeCustomerAddressRequestData::fromPayload($addressData), phones: PagarmeCustomerPhonesRequestData::fromPhone($phone), ); } public function toArray(): array { return $this->filterFilledRecursive([ 'name' => $this->name, 'email' => $this->email, 'document' => $this->document, 'type' => $this->type, 'document_type' => $this->documentType, 'code' => $this->code, 'address' => $this->address, 'phones' => $this->phones, ]); } }