From c5c44842446572aed6bfaec8654c34b0b00aa950 Mon Sep 17 00:00:00 2001 From: Emre INAL Date: Thu, 13 Aug 2026 12:34:07 +0300 Subject: [PATCH] Adds installment and loyaltyType to RetrieveLoyaltiesRequest --- craftgate/model/loyalty_data.py | 4 ++- .../request/retrieve_loyalties_request.py | 5 ++++ tests/test_payment_sample.py | 25 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/craftgate/model/loyalty_data.py b/craftgate/model/loyalty_data.py index 745de3b..569daf5 100644 --- a/craftgate/model/loyalty_data.py +++ b/craftgate/model/loyalty_data.py @@ -5,7 +5,9 @@ class LoyaltyData: def __init__( self, max_postponing_payment_count: Optional[int] = None, - unit_type: Optional[str] = None + unit_type: Optional[str] = None, + code: Optional[str] = None ) -> None: self.max_postponing_payment_count = max_postponing_payment_count self.unit_type = unit_type + self.code = code \ No newline at end of file diff --git a/craftgate/request/retrieve_loyalties_request.py b/craftgate/request/retrieve_loyalties_request.py index 8bffaa7..1d8eb22 100644 --- a/craftgate/request/retrieve_loyalties_request.py +++ b/craftgate/request/retrieve_loyalties_request.py @@ -1,5 +1,6 @@ from typing import Optional +from craftgate.model.loyalty_type import LoyaltyType from craftgate.request.common.base_request import BaseRequest from craftgate.request.dto.fraud_check_parameters import FraudCheckParameters @@ -11,6 +12,8 @@ def __init__( expire_year: Optional[str] = None, expire_month: Optional[str] = None, cvc: Optional[str] = None, + installment: Optional[int] = None, + loyalty_type: Optional[LoyaltyType] = None, card_user_key: Optional[str] = None, card_token: Optional[str] = None, client_ip: Optional[str] = None, @@ -21,6 +24,8 @@ def __init__( self.expire_year = expire_year self.expire_month = expire_month self.cvc = cvc + self.installment = installment + self.loyalty_type = loyalty_type self.card_user_key = card_user_key self.card_token = card_token self.client_ip = client_ip diff --git a/tests/test_payment_sample.py b/tests/test_payment_sample.py index 61af849..cfbad9a 100644 --- a/tests/test_payment_sample.py +++ b/tests/test_payment_sample.py @@ -1393,6 +1393,31 @@ def test_retrieve_loyalties(self): self.assertEqual(Decimal("12.35"), resp.loyalties[0].reward.card_reward_money) self.assertEqual(Decimal("5.20"), resp.loyalties[0].reward.firm_reward_money) + def test_retrieve_loyalties_by_installment(self): + req = RetrieveLoyaltiesRequest() + req.card_number = "5482370000000003" + req.expire_year = "2044" + req.expire_month = "07" + req.cvc = "000" + + req.client_ip = "127.0.0.1" + req.conversation_id = "456d1297-908e-4bd6-a13b-4be31a6e47d5" + req.fraud_params = FraudCheckParameters() + req.fraud_params.buyer_email = "buyer@email.com" + req.fraud_params.buyer_phone_number = "905555555555" + req.fraud_params.buyer_external_id = "buyerExternalId444" + req.fraud_params.custom_fraud_variable = "sessionId213123" + + resp = self.payment.retrieve_loyalties(req) + print(resp) + self.assertIsNotNone(resp) + self.assertEqual("Maximum", resp.card_brand) + self.assertIsNotNone(resp.loyalties) + self.assertGreater(len(resp.loyalties), 0) + self.assertEqual(LoyaltyType.ADDITIONAL_INSTALLMENT, resp.loyalties[0].type) + self.assertEqual("+5 taksit", resp.loyalties[0].message) + self.assertEqual("installment5", resp.loyalties[0].loyalty_data.code) + def test_refund_payment(self): req = RefundPaymentRequest() req.payment_id = 1