diff --git a/generate_openapi_models.sh b/generate_openapi_models.sh index 691cf72..313bfc2 100755 --- a/generate_openapi_models.sh +++ b/generate_openapi_models.sh @@ -19,6 +19,7 @@ echo "Adding custom Model classes from backup..." cp ./lib/ModelBackup/TokenSuccessResponseType.php ./lib/Model cp ./lib/ModelBackup/QRStatus.php ./lib/Model cp ./lib/ModelBackup/PaymentMethodRules.php ./lib/Model +cp ./lib/ModelBackup/PaymentIntentStatusResponse.php ./lib/Model echo "********************************" echo "Verify new Model files by running tests -> phpunit --bootstrap vendor/autoload.php tests/tests.php" diff --git a/lib/Model/PaymentIntentStatusResponse.php b/lib/Model/PaymentIntentStatusResponse.php index a8c3811..9fed2c3 100644 --- a/lib/Model/PaymentIntentStatusResponse.php +++ b/lib/Model/PaymentIntentStatusResponse.php @@ -60,7 +60,7 @@ class PaymentIntentStatusResponse implements ModelInterface, ArrayAccess, \JsonS protected static $openAPITypes = [ 'selected_payment_method' => '\Tatrapayplus\TatrapayplusApiClient\Model\PaymentMethod', 'authorization_status' => 'string', - 'status' => '\Tatrapayplus\TatrapayplusApiClient\Model\PaymentIntentStatusResponseStatus' + 'status' => 'mixed' ]; /** @@ -427,7 +427,15 @@ public function setStatus($status) if (is_null($status)) { throw new \InvalidArgumentException('non-nullable status cannot be null'); } - $this->container['status'] = $status; + if ($this->getSelectedPaymentMethod() == PaymentMethod::CARD_PAY) { + $type = '\Tatrapayplus\TatrapayplusApiClient\Model\CardPayStatusStructure'; + $value = ObjectSerializer::deserialize($status, $type, null); + } elseif (is_string($status)) { + $value = $status; + } else { + throw new \InvalidArgumentException('invalid status value: ' . $status); + } + $this->container['status'] = $value; return $this; } diff --git a/tests/tests.php b/tests/tests.php index dd5581b..29b2625 100644 --- a/tests/tests.php +++ b/tests/tests.php @@ -5,14 +5,18 @@ use Tatrapayplus\TatrapayplusApiClient\HttpResponse; use Tatrapayplus\TatrapayplusApiClient\Model\AppearanceLogoRequest; use Tatrapayplus\TatrapayplusApiClient\Model\AppearanceRequest; +use Tatrapayplus\TatrapayplusApiClient\Model\BankTransferStatus; +use Tatrapayplus\TatrapayplusApiClient\Model\CardPayStatus; use Tatrapayplus\TatrapayplusApiClient\Model\CardPayUpdateInstruction; use Tatrapayplus\TatrapayplusApiClient\Model\ColorAttribute; use Tatrapayplus\TatrapayplusApiClient\Model\DirectTransactionIPSPData; use Tatrapayplus\TatrapayplusApiClient\Model\DirectTransactionTDSData; use Tatrapayplus\TatrapayplusApiClient\Model\InitiateDirectTransactionRequest; use Tatrapayplus\TatrapayplusApiClient\Model\InitiatePaymentRequest; +use Tatrapayplus\TatrapayplusApiClient\Model\PayLaterStatus; use Tatrapayplus\TatrapayplusApiClient\Model\PaymentIntentStatusResponse; use Tatrapayplus\TatrapayplusApiClient\Model\AmountRangeRule; +use Tatrapayplus\TatrapayplusApiClient\Model\PaymentMethod; use Tatrapayplus\TatrapayplusApiClient\Model\PaymentMethodRules; use Tatrapayplus\TatrapayplusApiClient\Model\PaymentMethodsListResponse; use Tatrapayplus\TatrapayplusApiClient\Model\BasePayment; @@ -30,6 +34,7 @@ use Tatrapayplus\TatrapayplusApiClient\Model\ItemDetail; use Tatrapayplus\TatrapayplusApiClient\Model\ItemDetailLangUnit; use Tatrapayplus\TatrapayplusApiClient\CurlClient; +use Tatrapayplus\TatrapayplusApiClient\ObjectSerializer; use Tatrapayplus\TatrapayplusApiClient\TatraPayPlusLogger; use Tatrapayplus\TatrapayplusApiClient\TatraPayPlusService; use Tatrapayplus\TatrapayplusApiClient\Api\TatraPayPlusAPIApi; @@ -555,6 +560,42 @@ public function testInitiateDirectTransactionMocked(): void $this->assertSame("123456789", $response["object"]->getPaymentId()); $this->assertSame("custom HTML", $response["object"]->getRedirectFormHtml()); } + + public function testMapSimpleStatus() + { + $test_cases = [ + // payment_method, status, expected_result + [PaymentMethod::BANK_TRANSFER, BankTransferStatus::RJCT, TatraPayPlusService::SIMPLE_STATUS_REJECTED], + [PaymentMethod::BANK_TRANSFER, BankTransferStatus::ACSC, TatraPayPlusService::SIMPLE_STATUS_CAPTURE], + [PaymentMethod::BANK_TRANSFER, BankTransferStatus::RCVD, TatraPayPlusService::SIMPLE_STATUS_PENDING], + [PaymentMethod::PAY_LATER, PayLaterStatus::_NEW, TatraPayPlusService::SIMPLE_STATUS_PENDING], + [PaymentMethod::PAY_LATER, PayLaterStatus::CANCELED, TatraPayPlusService::SIMPLE_STATUS_REJECTED], + [PaymentMethod::PAY_LATER, PayLaterStatus::LOAN_APPLICATION_FINISHED, TatraPayPlusService::SIMPLE_STATUS_CAPTURE], + [PaymentMethod::CARD_PAY, CardPayStatus::OK, TatraPayPlusService::SIMPLE_STATUS_CAPTURE], + [PaymentMethod::CARD_PAY, CardPayStatus::FAIL, TatraPayPlusService::SIMPLE_STATUS_REJECTED], + ]; + + foreach ($test_cases as [$payment_method, $status, $expected_result]) { + $content = [ + 'selectedPaymentMethod' => $payment_method, + 'authorizationStatus' => 'AUTH_DONE', + 'status' => $status, + ]; + if ($payment_method === PaymentMethod::CARD_PAY) { + $content['status'] = [ + 'status' => $status, + 'currency' => 'EUR', + ]; + } + $status_response['object'] =ObjectSerializer::deserialize( + $content, '\Tatrapayplus\TatrapayplusApiClient\Model\PaymentIntentStatusResponse', [] + ); + + $simple_status = TatraPayPlusService::map_simple_status($status_response); + + $this->assertSame($simple_status, $expected_result); + } + } } function mock_addAuthHeader($headers)