@@ -34,6 +34,8 @@ class PaymentDataBuilder(object):
3434 __PAYMENT_METHOD_DATA_KEY = 'payment-method-data'
3535 # Nested layer of external 3-D Secure data set
3636 __EXTERNAL_MPI_DATA_KEY = 'external-mpi-data'
37+ # Nested layer of decrypted token's data set
38+ __EXTERNAL_TOKEN_DATA_KEY = 'external-token-data'
3739
3840 def __init__ (self , __client_transaction_data_set , __client_mandatory_fields ):
3941 self .__payment_data_structure = {
@@ -44,6 +46,10 @@ def __init__(self, __client_transaction_data_set, __client_mandatory_fields):
4446 self .__EXTERNAL_MPI_DATA_KEY : None
4547 }
4648
49+ self .__external_token_data_structure = {
50+ self .__EXTERNAL_TOKEN_DATA_KEY : None
51+ }
52+
4753 self .__data_structure_util = DataStructuresUtils
4854 self .__data_sets = RequestParameters
4955 self .__data_types = RequestParametersTypes
@@ -54,6 +60,10 @@ def __setup_external_mpi_data(self):
5460 if self .__EXTERNAL_MPI_DATA_KEY not in self .__payment_data_structure :
5561 self .__payment_data_structure [self .__EXTERNAL_MPI_DATA_KEY ] = self .__external_mpi_data_structure
5662
63+ def __setup_external_token_data (self ):
64+ if self .__EXTERNAL_TOKEN_DATA_KEY not in self .__payment_data_structure :
65+ self .__payment_data_structure [self .__EXTERNAL_TOKEN_DATA_KEY ] = self .__external_token_data_structure
66+
5767 def add_pan_number (self , pan_number = None ):
5868 """
5969 Add credit card number
@@ -115,6 +125,21 @@ def add_pan_cardholder_name(self, first_last_name=None):
115125 new_dict = {self .__data_sets .PAYMENT_METHOD_DATA_CARDHOLDER_NAME : first_last_name }
116126 )
117127
128+ def add_token (self , token = None ):
129+ """
130+ Add token
131+
132+ Args:
133+ token (str): Token AS-IS
134+ """
135+
136+ self .__data_structure_util .add_to_dict (
137+ source_dict = self .__payment_data_set ,
138+ working_dict = self .__payment_data_structure ,
139+ new_key = self .__PAYMENT_METHOD_DATA_KEY ,
140+ new_dict = {self .__data_sets .PAYMENT_METHOD_DATA_TOKEN : token }
141+ )
142+
118143 def add_external_mpi_protocol_version (self , protocol_version = None ):
119144 """
120145 Add 3-D Secure protocolVersion
@@ -194,3 +219,51 @@ def add_external_mpi_trans_status(self, trans_status=None):
194219 new_key = self .__EXTERNAL_MPI_DATA_KEY ,
195220 new_dict = {self .__data_sets .PAYMENT_METHOD_DATA_EXTERNAL_MPI_TRANS_STATUS : trans_status }
196221 )
222+
223+ def add_external_token_cryptogram (self , cryptogram = None ):
224+ """
225+ Add cryptogram from decrypted token's data
226+
227+ Args:
228+ cryptogram (str): token cryptogram (TAVV etc.)
229+ """
230+
231+ self .__setup_external_token_data ()
232+ self .__data_structure_util .add_to_dict (
233+ source_dict = self .__payment_data_structure [self .__PAYMENT_METHOD_DATA_KEY ],
234+ working_dict = self .__external_token_data_structure ,
235+ new_key = self .__EXTERNAL_TOKEN_DATA_KEY ,
236+ new_dict = {self .__data_sets .PAYMENT_METHOD_DATA_EXTERNAL_TOKEN_CRYPTOGRAM : cryptogram }
237+ )
238+
239+ def add_external_token_eci (self , eci = None ):
240+ """
241+ Add ECI from decrypted token's data
242+
243+ Args:
244+ eci (str): token ECI
245+ """
246+
247+ self .__setup_external_token_data ()
248+ self .__data_structure_util .add_to_dict (
249+ source_dict = self .__payment_data_structure [self .__PAYMENT_METHOD_DATA_KEY ],
250+ working_dict = self .__external_token_data_structure ,
251+ new_key = self .__EXTERNAL_TOKEN_DATA_KEY ,
252+ new_dict = {self .__data_sets .PAYMENT_METHOD_DATA_EXTERNAL_TOKEN_ECI : eci }
253+ )
254+
255+ def add_external_token_cardholder_authenticated (self , cardholder_authenticated = None ):
256+ """
257+ Add cardHolderAuthenticated from decrypted Google Pay token's data
258+
259+ Args:
260+ cardholder_authenticated (bool): value of paymentMethodDetails.assuranceDetails.cardHolderAuthenticated from Google Pay token
261+ """
262+
263+ self .__setup_external_token_data ()
264+ self .__data_structure_util .add_to_dict (
265+ source_dict = self .__payment_data_structure [self .__PAYMENT_METHOD_DATA_KEY ],
266+ working_dict = self .__external_token_data_structure ,
267+ new_key = self .__EXTERNAL_TOKEN_DATA_KEY ,
268+ new_dict = {self .__data_sets .PAYMENT_METHOD_DATA_EXTERNAL_TOKEN_AUTHENTICATED : cardholder_authenticated }
269+ )
0 commit comments