diff --git a/craftgate/adapter/bkm_express_payment_adapter.py b/craftgate/adapter/bkm_express_payment_adapter.py index a6ae47b..7fc5a2b 100644 --- a/craftgate/adapter/bkm_express_payment_adapter.py +++ b/craftgate/adapter/bkm_express_payment_adapter.py @@ -1,8 +1,10 @@ from craftgate.adapter.base_adapter import BaseAdapter from craftgate.net.base_http_client import BaseHttpClient from craftgate.request.complete_bkm_express_request import CompleteBkmExpressRequest +from craftgate.request.generate_bkm_express_token import BkmExpressGenerateTokenRequest from craftgate.request.init_bkm_express_request import InitBkmExpressRequest from craftgate.request_options import RequestOptions +from craftgate.response.generate_bkm_express_token_response import BkmExpressGenerateTokenResponse from craftgate.response.init_bkm_express_response import InitBkmExpressResponse from craftgate.response.payment_response import PaymentResponse @@ -44,3 +46,14 @@ def retrieve_payment_by_token(self, token: str) -> PaymentResponse: body=None, response_type=PaymentResponse ) + + def generate_token(self, request: BkmExpressGenerateTokenRequest) -> BkmExpressGenerateTokenResponse: + path = "/payment/v2/bkm-express/generate-token" + headers = self._create_headers(request, path) + return self._http_client.request( + method="POST", + url=self.request_options.base_url + path, + headers=headers, + body=request, + response_type=BkmExpressGenerateTokenResponse + ) diff --git a/craftgate/model/tokenized_card_type.py b/craftgate/model/tokenized_card_type.py index bedd1c5..486dd6d 100644 --- a/craftgate/model/tokenized_card_type.py +++ b/craftgate/model/tokenized_card_type.py @@ -3,3 +3,4 @@ class TokenizedCardType(str, Enum): APPLE_PAY = "APPLE_PAY" + BKM_EXPRESS = "BKM_EXPRESS" diff --git a/craftgate/request/generate_bkm_express_token.py b/craftgate/request/generate_bkm_express_token.py new file mode 100644 index 0000000..e742b53 --- /dev/null +++ b/craftgate/request/generate_bkm_express_token.py @@ -0,0 +1,11 @@ + +from typing import Optional + +class BkmExpressGenerateTokenRequest: + def __init__( + self, + gsm_number: Optional[str] = None, + user_id: Optional[str] = None + ) -> None: + self.gsm_number = gsm_number + self.user_id = user_id diff --git a/craftgate/request/init_checkout_payment_request.py b/craftgate/request/init_checkout_payment_request.py index b127334..8e791b0 100644 --- a/craftgate/request/init_checkout_payment_request.py +++ b/craftgate/request/init_checkout_payment_request.py @@ -29,6 +29,8 @@ def __init__( enabled_payment_methods: Optional[List[PaymentMethod]] = None, masterpass_gsm_number: Optional[str] = None, masterpass_user_id: Optional[str] = None, + bex_gsm_number: Optional[str] = None, + bex_user_id: Optional[str] = None, card_user_key: Optional[str] = None, buyer_member_id: Optional[int] = None, enabled_installments: Optional[List[int]] = None, @@ -65,6 +67,8 @@ def __init__( self.enabled_payment_methods = enabled_payment_methods self.masterpass_gsm_number = masterpass_gsm_number self.masterpass_user_id = masterpass_user_id + self.bex_gsm_number = bex_gsm_number + self.bex_user_id = bex_user_id self.card_user_key = card_user_key self.buyer_member_id = buyer_member_id self.enabled_installments = enabled_installments diff --git a/craftgate/response/generate_bkm_express_token_response.py b/craftgate/response/generate_bkm_express_token_response.py new file mode 100644 index 0000000..1783b8b --- /dev/null +++ b/craftgate/response/generate_bkm_express_token_response.py @@ -0,0 +1,12 @@ +from typing import Optional + + +def __init__( + self, + token: Optional[str] = None, +) -> None: + self.token = token + + +class BkmExpressGenerateTokenResponse: + pass diff --git a/tests/test_bkm_express_payment_sample.py b/tests/test_bkm_express_payment_sample.py index db73f00..499425e 100644 --- a/tests/test_bkm_express_payment_sample.py +++ b/tests/test_bkm_express_payment_sample.py @@ -7,6 +7,7 @@ from craftgate.model import Currency, PaymentGroup from craftgate.request import CompleteBkmExpressRequest, InitBkmExpressRequest from craftgate.request.dto import PaymentItem +from craftgate.request.generate_bkm_express_token import BkmExpressGenerateTokenRequest class BkmExpressPaymentSample(unittest.TestCase): @@ -68,6 +69,16 @@ def test_retrieve_payment_by_token(self): print(response) self.assertIsNotNone(response) + def test_generate_token(self): + request = BkmExpressGenerateTokenRequest( + gsm_number="5350000000", + user_id="1234567890" + ) + + response = self.bkm_express_payment.generate_token(request) + print(response) + self.assertIsNotNone(response) + if __name__ == "__main__": unittest.main()