def get_transaction_details(transId): merchantAuth = apicontractsv1.merchantAuthenticationType() merchantAuth.name = constants.apiLoginId merchantAuth.transactionKey = constants.transactionKey transactionDetailsRequest = apicontractsv1.getTransactionDetailsRequest() transactionDetailsRequest.merchantAuthentication = merchantAuth transactionDetailsRequest.transId = "40000276420" transactionDetailsController = getTransactionDetailsController(transactionDetailsRequest) transactionDetailsController.execute() transactionDetailsResponse = transactionDetailsController.getresponse() if transactionDetailsResponse is not None: if transactionDetailsResponse.messages.resultCode == apicontractsv1.messageTypeEnum.Ok: print('Successfully got transaction details!') print('Transaction Id : %s' % transactionDetailsResponse.transaction.transId) print('Transaction Type : %s' % transactionDetailsResponse.transaction.transactionType) print('Transaction Status : %s' % transactionDetailsResponse.transaction.transactionStatus) print('Auth Amount : %s' % transactionDetailsResponse.transaction.authAmount) print('Settle Amount : %s' % transactionDetailsResponse.transaction.settleAmount) if hasattr(transactionDetailsResponse.transaction, 'tax') == True: print('Tax : %s' % transactionDetailsResponse.transaction.tax.amount) if transactionDetailsResponse.messages: print('Message Code : %s' % transactionDetailsResponse.messages.message[0]['code'].text) print('Message Text : %s' % transactionDetailsResponse.messages.message[0]['text'].text) else: if transactionDetailsResponse.messages: print('Failed to get transaction details.\nCode:%s \nText:%s' % (transactionDetailsResponse.messages.message[0]['code'].text,transactionDetailsResponse.messages.message[0]['text'].text)) return transactionDetailsResponse
def testGetTransactionDetails(self): gettransactiondetailsrequest = apicontractsv1.getTransactionDetailsRequest() gettransactiondetailsrequest.merchantAuthentication = self.merchantAuthentication gettransactiondetailsrequest.transId ='2252271173' #update valid transaction id gettransactiondetailscontroller = getTransactionDetailsController(gettransactiondetailsrequest) gettransactiondetailscontroller.execute() response = gettransactiondetailscontroller.getresponse() self.assertEquals('Ok', response.messages.resultCode)
def get_transaction_details(transId): merchantAuth = apicontractsv1.merchantAuthenticationType() merchantAuth.name = constants.apiLoginId merchantAuth.transactionKey = constants.transactionKey transactionDetailsRequest = apicontractsv1.getTransactionDetailsRequest() transactionDetailsRequest.merchantAuthentication = merchantAuth transactionDetailsRequest.transId = "40000276420" transactionDetailsController = getTransactionDetailsController( transactionDetailsRequest) transactionDetailsController.execute() transactionDetailsResponse = transactionDetailsController.getresponse() if transactionDetailsResponse is not None: if transactionDetailsResponse.messages.resultCode == apicontractsv1.messageTypeEnum.Ok: print('Successfully got transaction details!') print('Transaction Id : %s' % transactionDetailsResponse.transaction.transId) print('Transaction Type : %s' % transactionDetailsResponse.transaction.transactionType) print('Transaction Status : %s' % transactionDetailsResponse.transaction.transactionStatus) print('Auth Amount : %s' % transactionDetailsResponse.transaction.authAmount) print('Settle Amount : %s' % transactionDetailsResponse.transaction.settleAmount) if hasattr(transactionDetailsResponse.transaction, 'tax') == True: print('Tax : %s' % transactionDetailsResponse.transaction.tax.amount) if hasattr(transactionDetailsResponse.transaction, 'profile'): print('Customer Profile Id : %s' % transactionDetailsResponse. transaction.profile.customerProfileId) if transactionDetailsResponse.messages is not None: print( 'Message Code : %s' % transactionDetailsResponse.messages.message[0]['code'].text ) print( 'Message Text : %s' % transactionDetailsResponse.messages.message[0]['text'].text ) else: if transactionDetailsResponse.messages is not None: print('Failed to get transaction details.\nCode:%s \nText:%s' % (transactionDetailsResponse.messages.message[0]['code']. text, transactionDetailsResponse.messages.message[0] ['text'].text)) return transactionDetailsResponse
def testgetTransactionDetails(self): gettransactiondetailsrequest = apicontractsv1.getTransactionDetailsRequest() gettransactiondetailsrequest.merchantAuthentication = self.merchantAuthentication transactionID = self.testchargeCreditCard() gettransactiondetailsrequest.transId = transactionID #update valid transaction id gettransactiondetailscontroller = getTransactionDetailsController(gettransactiondetailsrequest) gettransactiondetailscontroller.execute() response = gettransactiondetailscontroller.getresponse() if hasattr(response, 'messages') == True: if hasattr(response.messages, 'resultCode') == True: self.assertEquals('Ok', response.messages.resultCode)
def testgetTransactionDetails(self): gettransactiondetailsrequest = apicontractsv1.getTransactionDetailsRequest() gettransactiondetailsrequest.merchantAuthentication = self.merchantAuthentication transactionID = self.testchargeCreditCard() gettransactiondetailsrequest.transId = transactionID #update valid transaction id gettransactiondetailscontroller = GetTransactionDetailsController(gettransactiondetailsrequest) gettransactiondetailscontroller.execute() response = gettransactiondetailscontroller.getresponse() if hasattr(response, 'messages') == True: if hasattr(response.messages, 'resultCode') == True: self.assertEquals('Ok', response.messages.resultCode)
def get_transaction_detail(self, transaction_id): self.transaction = apicontractsv1.getTransactionDetailsRequest() self.transaction.merchantAuthentication = self.merchant_auth self.transaction.transId = transaction_id self.controller = getTransactionDetailsController(self.transaction) self.controller.execute() response = self.controller.getresponse() if response.messages.resultCode == apicontractsv1.messageTypeEnum.Ok: return response.transaction
def retrieve(self, trans_id): merchantAuth = apicontractsv1.merchantAuthenticationType() merchantAuth.name = self.merchant_id merchantAuth.transactionKey = self.merchant_key transactionDetailsRequest = apicontractsv1.getTransactionDetailsRequest() transactionDetailsRequest.merchantAuthentication = merchantAuth transactionDetailsRequest.transId = trans_id transactionDetailsController = getTransactionDetailsController(transactionDetailsRequest) transactionDetailsController.execute() transactionDetailsResponse = transactionDetailsController.getresponse() if transactionDetailsResponse is not None: if transactionDetailsResponse.messages.resultCode == apicontractsv1.messageTypeEnum.Ok: print('Successfully got transaction details!') print('Transaction Id : %s' % transactionDetailsResponse.transaction.transId) print('Transaction Type : %s' % transactionDetailsResponse.transaction.transactionType) print('Transaction Status : %s' % transactionDetailsResponse.transaction.transactionStatus) print('Auth Amount : %.2f' % transactionDetailsResponse.transaction.authAmount) print('Settle Amount : %.2f' % transactionDetailsResponse.transaction.settleAmount) if hasattr(transactionDetailsResponse.transaction, 'tax') == True: print('Tax : %s' % transactionDetailsResponse.transaction.tax.amount) if hasattr(transactionDetailsResponse.transaction, 'profile'): print('Customer Profile Id : %s' % transactionDetailsResponse.transaction.profile.customerProfileId) if transactionDetailsResponse.messages is not None: print('Message Code : %s' % transactionDetailsResponse.messages.message[0]['code'].text) print('Message Text : %s' % transactionDetailsResponse.messages.message[0]['text'].text) else: if transactionDetailsResponse.messages is not None: print('Failed to get transaction details.\nCode:%s \nText:%s' % (transactionDetailsResponse.messages.message[0]['code'].text,transactionDetailsResponse.messages.message[0]['text'].text)) try: return { 'id': transactionDetailsResponse.transaction.transId, 'amount': transactionDetailsResponse.transaction.authAmount, 'status': transactionDetailsResponse.transaction.transactionStatus } except BaseException: return { 'error': 'Could not find details: {}'.format(transactionDetailsResponse.messages.message[0]['code']) }
def get_transaction_detail(self, transaction_id): """ Return complete transaction details using AuthorizeNet transaction id. For more information visit https://developer.authorize.net/api/reference/#transaction-reporting-get-transaction-details Arguments: transaction_id: transaction id received from AuthorizeNet Notification. Returns: Complete transaction detail """ merchant_auth = apicontractsv1.merchantAuthenticationType() merchant_auth.name = self.merchant_auth_name merchant_auth.transactionKey = self.transaction_key transaction_details_request = apicontractsv1.getTransactionDetailsRequest() transaction_details_request.merchantAuthentication = merchant_auth transaction_details_request.transId = transaction_id transaction_details_controller = getTransactionDetailsController(transaction_details_request) transaction_details_controller.execute() transaction_details_response = transaction_details_controller.getresponse() if transaction_details_response is not None: if transaction_details_response.messages.resultCode == apicontractsv1.messageTypeEnum.Ok: logger.info('Successfully got Authorizenet transaction details') if transaction_details_response.messages is not None: logger.info('Message Code : %s', transaction_details_response.messages.message[0]['code'].text) logger.info('Message Text : %s', transaction_details_response.messages.message[0]['text'].text) else: logger.error( 'Unable to get Authorizenet transaction detail using transaction_id [%s].', transaction_id) if transaction_details_response.messages is not None: logger.error( 'Failed to get transaction details.\nCode:%s \nText:%s', transaction_details_response.messages.message[0]['code'].text, transaction_details_response.messages.message[0]['text'].text ) raise MissingTransactionDetailError return transaction_details_response
def fetch_transaction_status(self, transaction): """ Query payment processor for a transaction, and update the status of the silver transaction accordingly. :param transaction: A Silver transaction with a AuthorizeNet payment method, in Pending state. :return: True if the transaction status was updated, False otherwise. """ logger.info("transaction data: %s", transaction.data) payment_processor = get_instance(transaction.payment_processor) if not payment_processor == self: return False if transaction.state != transaction.States.Pending: return False tx_id = transaction.data.get('authorizenet_id') logger.info('tx id %s', {'tx_id': tx_id}) if not self.test_transaction_id_valid(tx_id): logger.warning( 'Transaction id %s is invalid. API does not support recovering lost transactions, will need to be manually entered.', { 'authorizenet_id': tx_id, }) return False req = apicontractsv1.getTransactionDetailsRequest() req.merchantAuthentication = self.merchantAuth req.transId = str(transaction.data.get('authorizenet_id')) status = transaction.data.get('status') transaction_controller = getTransactionDetailsController(req) try: transaction_controller.execute() except Exception as e: logger.warning('Error in request create transaction %s', {'exception': str(e)}) response = transaction_controller.getresponse() have_resp = response is not None resp_okay = response.messages.resultCode == apicontractsv1.messageTypeEnum.Ok if have_resp: t_resp = response.transaction t_resp_msgs = hasattr(t_resp, 'messages') is True if resp_okay: status = str(t_resp.responseCode) else: if t_resp_msgs: status = response.messages.message[0]['code'].text transaction.data.update({ 'status': status, }) transaction.save() return self._transition_silver_transaction_state( transaction, response, status)
def get_transaction_details(ds, **kwargs): t_obj = kwargs['ti'].xcom_pull(task_ids='get_transaction_list') t_list = t_obj['transaction_ids'] t_u_list = t_obj['transaction_unsettled_ids'] transaction_details_list = [] transaction_unsettled_details_list = [] print("Length of transactions >>>>>> ", len(t_list)) print("Length of unsettled transactions >>>>>> ", len(t_u_list)) for t in t_list: transactionDetailsRequest = apicontractsv1.getTransactionDetailsRequest() transactionDetailsRequest.merchantAuthentication = merchantAuth transactionDetailsRequest.transId = str(t) transactionDetailsController = getTransactionDetailsController(transactionDetailsRequest) transactionDetailsController.setenvironment(ENV) transactionDetailsController.execute() transactionDetailsResponse = transactionDetailsController.getresponse() if transactionDetailsResponse is not None: if transactionDetailsResponse.messages.resultCode == apicontractsv1.messageTypeEnum.Ok: print('Successfully got transaction details!') t = { "transaction_id": str(transactionDetailsResponse.transaction.transId), "transaction_type": str(transactionDetailsResponse.transaction.transactionType), "transaction_status": str(transactionDetailsResponse.transaction.transactionStatus), "auth_amount": float(transactionDetailsResponse.transaction.authAmount), "settlement_amount": float(transactionDetailsResponse.transaction.settleAmount), "date": str(transactionDetailsResponse.transaction.submitTimeUTC) } if hasattr(transactionDetailsResponse.transaction, 'tax'): t['tax'] = float(transactionDetailsResponse.transaction.tax.amount) if hasattr(transactionDetailsResponse.transaction, 'profile'): t['customer_profile_id'] = str(transactionDetailsResponse.transaction.profile.customerProfileId) transaction_details_list.append(t) if transactionDetailsResponse.messages is not None: print('Message Code : %s' % transactionDetailsResponse.messages.message[0].code) print('Message Text : %s' % transactionDetailsResponse.messages.message[0].text) else: if transactionDetailsResponse.messages is not None: print('Failed to get transaction details.\nCode:%s \nText:%s' % ( transactionDetailsResponse.messages.message[0].code, transactionDetailsResponse.messages.message[0].text)) for t in t_u_list: transactionDetailsRequest = apicontractsv1.getTransactionDetailsRequest() transactionDetailsRequest.merchantAuthentication = merchantAuth transactionDetailsRequest.transId = str(t) transactionDetailsController = getTransactionDetailsController(transactionDetailsRequest) transactionDetailsController.setenvironment(ENV) transactionDetailsController.execute() transactionDetailsResponse = transactionDetailsController.getresponse() if transactionDetailsResponse is not None: if transactionDetailsResponse.messages.resultCode == apicontractsv1.messageTypeEnum.Ok: print('Successfully got transaction details for unsettled!') t = { "transaction_id": str(transactionDetailsResponse.transaction.transId), "transaction_type": str(transactionDetailsResponse.transaction.transactionType), "transaction_status": str(transactionDetailsResponse.transaction.transactionStatus), "auth_amount": float(transactionDetailsResponse.transaction.authAmount), "settlement_amount": float(transactionDetailsResponse.transaction.settleAmount), "date": str(transactionDetailsResponse.transaction.submitTimeUTC) } if hasattr(transactionDetailsResponse.transaction, 'tax'): t['tax'] = float(transactionDetailsResponse.transaction.tax.amount) if hasattr(transactionDetailsResponse.transaction, 'profile'): t['customer_profile_id'] = str(transactionDetailsResponse.transaction.profile.customerProfileId) transaction_unsettled_details_list.append(t) if transactionDetailsResponse.messages is not None: print('Message Code : %s' % transactionDetailsResponse.messages.message[0].code) print('Message Text : %s' % transactionDetailsResponse.messages.message[0].text) else: if transactionDetailsResponse.messages is not None: print('Failed to get transaction details.\nCode:%s \nText:%s' % ( transactionDetailsResponse.messages.message[0].code, transactionDetailsResponse.messages.message[0].text)) return {'transaction_details': transaction_details_list, 'transaction_unsettled_details': transaction_unsettled_details_list}
from authorizenet import apicontractsv1 from authorizenet.apicontrollers import * from decimal import * merchantAuth = apicontractsv1.merchantAuthenticationType() merchantAuth.name = '5KP3u95bQpv' merchantAuth.transactionKey = '4Ktq966gC55GAX7S' transactionDetailsRequest = apicontractsv1.getTransactionDetailsRequest() transactionDetailsRequest.merchantAuthentication = merchantAuth transactionDetailsRequest.transId = "2239287784" transactionDetailsController = getTransactionDetailsController(transactionDetailsRequest) transactionDetailsController.execute() transactionDetailsResponse = transactionDetailsController.getresponse() if transactionDetailsResponse is not None: if transactionDetailsResponse.messages.resultCode == apicontractsv1.messageTypeEnum.Ok: print('Successfully got transaction details!') print('Transaction Id : %s' % transactionDetailsResponse.transaction.transId) print('Transaction Type : %s' % transactionDetailsResponse.transaction.transactionType) print('Transaction Status : %s' % transactionDetailsResponse.transaction.transactionStatus) print('Auth Amount : %s' % transactionDetailsResponse.transaction.authAmount) print('Settle Amount : %s' % transactionDetailsResponse.transaction.settleAmount) if transactionDetailsResponse.messages: print('Message Code : %s' % transactionDetailsResponse.messages.message[0].code) print('Message Text : %s' % transactionDetailsResponse.messages.message[0].text)