@@ -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,99 @@ 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_trans_status (self , trans_status = None ):
256+ """
257+ Add transStatus from decrypted token's data
258+
259+ Args:
260+ trans_status (str): token transStatus
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_TRANS_STATUS : trans_status }
269+ )
270+
271+ def add_external_token_ds_trans_id (self , ds_trans_id = None ):
272+ """
273+ Add dsTransId from decrypted token's data
274+
275+ Args:
276+ ds_trans_id (str): token dsTransId
277+ """
278+
279+ self .__setup_external_token_data ()
280+ self .__data_structure_util .add_to_dict (
281+ source_dict = self .__payment_data_structure [self .__PAYMENT_METHOD_DATA_KEY ],
282+ working_dict = self .__external_token_data_structure ,
283+ new_key = self .__EXTERNAL_TOKEN_DATA_KEY ,
284+ new_dict = {self .__data_sets .PAYMENT_METHOD_DATA_EXTERNAL_TOKEN_DS_TRANS_ID : ds_trans_id }
285+ )
286+
287+ def add_external_token_acs_trans_id (self , acs_trans_id = None ):
288+ """
289+ Add acsTransId from decrypted token's data
290+
291+ Args:
292+ acs_trans_id (str): token acsTransId
293+ """
294+
295+ self .__setup_external_token_data ()
296+ self .__data_structure_util .add_to_dict (
297+ source_dict = self .__payment_data_structure [self .__PAYMENT_METHOD_DATA_KEY ],
298+ working_dict = self .__external_token_data_structure ,
299+ new_key = self .__EXTERNAL_TOKEN_DATA_KEY ,
300+ new_dict = {self .__data_sets .PAYMENT_METHOD_DATA_EXTERNAL_TOKEN_ACS_TRANS_ID : acs_trans_id }
301+ )
302+
303+ def add_external_token_cardholder_authenticated (self , cardholder_authenticated = None ):
304+ """
305+ Add cardHolderAuthenticated from decrypted Google Pay token's data
306+
307+ Args:
308+ cardholder_authenticated (bool): value of paymentMethodDetails.assuranceDetails.cardHolderAuthenticated from Google Pay token
309+ """
310+
311+ self .__setup_external_token_data ()
312+ self .__data_structure_util .add_to_dict (
313+ source_dict = self .__payment_data_structure [self .__PAYMENT_METHOD_DATA_KEY ],
314+ working_dict = self .__external_token_data_structure ,
315+ new_key = self .__EXTERNAL_TOKEN_DATA_KEY ,
316+ new_dict = {self .__data_sets .PAYMENT_METHOD_DATA_EXTERNAL_TOKEN_AUTHENTICATED : cardholder_authenticated }
317+ )
0 commit comments