def test_refund_fail_invalid_transaction_id(self): """ Checks for transaction_submitted fail because the transaction id does not match """ self.processor = AuthorizeNetProcessor(self.existing_invoice) status_before_transaction = self.existing_invoice.status # Get Settled payment start_date, end_date = (timezone.now() - timedelta(days=31)), timezone.now() batch_list = self.processor.get_settled_batch_list( start_date, end_date) transaction_list = self.processor.get_transaction_batch_list( str(batch_list[-1].batchId)) payment = Payment() payment.invoice = self.existing_invoice payment.amount = 0.01 payment.transaction = '111222333412' payment.result["raw"] = str( {'accountNumber': transaction_list[-1].accountNumber.text}) payment.save() self.processor.payment = payment self.processor.refund_payment(payment) self.assertFalse(self.processor.transaction_submitted) self.assertEquals(self.processor.invoice.status, status_before_transaction)
def test_refund_fail_invalid_account_number(self): """ Checks for transaction_submitted fail because the account number does not match the payment transaction settled. """ status_before_transaction = self.existing_invoice.status # Get Settled payment start_date, end_date = (timezone.now() - timedelta(days=31)), timezone.now() batch_list = self.processor.get_settled_batch_list( start_date, end_date) if not batch_list: print("No Transactions to refund Skipping\n") return transaction_list = self.processor.get_transaction_batch_list( str(batch_list[-1].batchId)) payment = Payment() payment.invoice = self.existing_invoice payment.amount = 0.01 payment.transaction = transaction_list[-1].transId.text payment.result["raw"] = str({'accountNumber': '6699'}) payment.save() self.processor.payment = payment self.processor.refund_payment(payment) self.assertFalse(self.processor.transaction_submitted) self.assertEquals(self.processor.invoice.status, status_before_transaction)
def test_refund_fail_invalid_amount(self): """ Checks for transaction_submitted fail because the amount exceeds the payment transaction settled. """ status_before_transaction = self.existing_invoice.status # Get Settled payment start_date, end_date = (timezone.now() - timedelta(days=31)), timezone.now() batch_list = self.processor.get_settled_batch_list( start_date, end_date) transaction_list = self.processor.get_transaction_batch_list( str(batch_list[-1].batchId)) payment = Payment() payment.invoice = self.existing_invoice payment.amount = 1000000.00 payment.transaction = transaction_list[-1].transId.text payment.result["raw"] = str( {'accountNumber': transaction_list[-1].accountNumber.text}) payment.save() self.processor.payment = payment self.processor.refund_payment(payment) self.assertFalse(self.processor.transaction_submitted) self.assertEquals(self.processor.invoice.status, status_before_transaction)
def test_refund_success(self): """ In order for this test to pass a transaction has to be settled first. The settlement process takes effect once a day. It is defined in the Sandbox in the cut-off time. The test will get a settle payment and test refund transaction. """ # Get Settled payment start_date, end_date = (timezone.now() - timedelta(days=31)), timezone.now() batch_list = self.processor.get_settled_batch_list(start_date, end_date) for batch in batch_list: transaction_list = self.processor.get_transaction_batch_list(str(batch.batchId)) successfull_transactions = [ t for t in transaction_list if t['transactionStatus'] == 'settledSuccessfully' ] if len(successfull_transactions) > 0: break if not successfull_transactions: print("No Transactions to refund Skipping\n") return payment = Payment() # payment.amount = transaction_detail.authAmount.pyval # Hard coding minimum amount so the test can run multiple times. payment.amount = 0.01 payment.invoice = self.existing_invoice payment.transaction = successfull_transactions[-1].transId.text payment.result["raw"] = str({ 'accountNumber': successfull_transactions[-1].accountNumber.text}) payment.save() self.processor.payment = payment self.processor.refund_payment(payment) # print(f'Message: {self.processor.transaction_message}\nResponse: {self.processor.transaction_response}') self.assertEquals(Invoice.InvoiceStatus.REFUNDED, self.existing_invoice.status)