private TransactionResponse ProcessCreditRequest(TransactionRequest transactionRequest, TransactionData transData, ITokenizedPayment payment, decimal amount) { var transactionDetail = GetTransactionDetails(transData, transactionRequest); if (transactionDetail.transactionStatus != AuthorizeTokenExGateway.SettledStatus) { throw new PaymentException(PaymentException.ErrorType.StatusError, "", "Refund payment requires transaction status to be settled."); } // clone the Refund method in order to set InvoiceNumber var request = new AuthorizeNet.APICore.createCustomerProfileTransactionRequest { transaction = new AuthorizeNet.APICore.profileTransactionType { Item = new AuthorizeNet.APICore.profileTransRefundType { amount = amount, customerProfileId = payment.Properties[AuthorizeTokenExGateway.ProviderProfileIdPropertyName] as string, transId = transData.transId, order = new AuthorizeNet.APICore.orderExType { purchaseOrderNumber = transData.purchaseOrderNum, invoiceNumber = transData.invoiceNum } } } }; return(new TransactionResponse(_authorizeTokenExService.SendRequest(request), false)); }
private TransactionResponse ProcessCaptureOnlyRequest(TransactionRequest transactionRequest, TransactionData transData, ITokenizedPayment payment, decimal amount) { if (IsTransactionCapturedOrSettled(transData, transactionRequest)) { return(new TransactionResponse(null, true)); } // clone the capture method in order to set InvoiceNumber var request = new AuthorizeNet.APICore.createCustomerProfileTransactionRequest { transaction = new AuthorizeNet.APICore.profileTransactionType { Item = new AuthorizeNet.APICore.profileTransCaptureOnlyType { approvalCode = transData.AuthorizationCode, customerProfileId = payment.Properties[AuthorizeTokenExGateway.ProviderProfileIdPropertyName] as string, amount = amount, order = new AuthorizeNet.APICore.orderExType { purchaseOrderNumber = transData.purchaseOrderNum, invoiceNumber = transData.invoiceNum } } } }; return(new TransactionResponse(_authorizeTokenExService.SendRequest(request), false)); }