public override Transaction DoVoid(VoidTransactionRequest voidRequest) { VerifyStatus(); Payment payment = voidRequest.Payment; if (payment == null) { throw new ArgumentNullException("request.Payment"); } Transaction authorizeTransaction = voidRequest.AuthorizeTransaction; if (authorizeTransaction == null) { throw new ArgumentNullException("transactionRequest.AuthorizeTransaction"); } CreditCardRequest request = InitializeVoidRequest(payment, authorizeTransaction); CreditCardResponse response = null; //RECORD REQUEST if (this.UseDebugMode) { string reqDebug = BuildRequestDebug(request); this.RecordCommunication(this.Name, CommunicationDirection.Send, reqDebug, null); } //TODO : Test mode is not supported. if (this.UseTestMode) { response = (CreditCardResponse)TransactionClient.doTransaction(request, this.AccountToken); } else { response = (CreditCardResponse)TransactionClient.doTransaction(request, this.AccountToken); } if (response != null) { //RECORD RESPONSE if (this.UseDebugMode) { string respDebug = BuildResponseDebug(response); this.RecordCommunication(this.Name, CommunicationDirection.Receive, respDebug, null); } return(ProcessResponse(payment, response, TransactionType.Void, voidRequest.Amount)); } else { throw new Exception("Operation Failed, Response is null."); } }
public override AuthorizeRecurringTransactionResponse DoAuthorizeRecurring(AuthorizeRecurringTransactionRequest authorizeRequest) { VerifyStatus(); Payment payment = authorizeRequest.Payment; if (payment == null) { throw new ArgumentNullException("request.Payment"); } Order order = payment.Order; if (order == null) { throw new ArgumentNullException("request.Payment.Order"); } User user = order.User; if (user == null) { throw new ArgumentNullException("request.Payment.Order.User"); } AuthorizeRecurringTransactionResponse response = new AuthorizeRecurringTransactionResponse(); AuthorizeTransactionRequest authRequest; Transaction tr1, tr2, errTrans; //VALIDATE THE PAYMENT PERIOD int payPeriod = GetPayPeriod(authorizeRequest); if (payPeriod == int.MinValue) { errTrans = Transaction.CreateErrorTransaction(this.PaymentGatewayId, authorizeRequest, "E", "The specified payment interval is not valid for this processor."); return(new AuthorizeRecurringTransactionResponse(errTrans)); } if (authorizeRequest.RecurringChargeSpecified) { //make a sale transaction first authRequest = new AuthorizeTransactionRequest(authorizeRequest.Payment, authorizeRequest.RemoteIP); authRequest.Capture = true; authRequest.Amount = authorizeRequest.Amount; tr1 = DoAuthorize(authRequest); if (tr1.TransactionStatus != TransactionStatus.Successful) { errTrans = Transaction.CreateErrorTransaction(PaymentGatewayId, authorizeRequest, "E", "Authorization Failed."); errTrans.TransactionType = TransactionType.AuthorizeRecurring; response.AddTransaction(tr1); response.AddTransaction(errTrans); response.Status = TransactionStatus.Failed; return(response); } response.AddTransaction(tr1); } RecurringRequest request = InitializeAuthRecurringRequest(authorizeRequest, payPeriod); RecurringResponse recResponse = null; //RECORD REQUEST : TODO /*if (this.UseDebugMode) * { * string reqDebug = BuildRequestDebug(request); * this.RecordCommunication(this.Name, CommunicationDirection.Send, reqDebug); * }*/ //TODO : Test mode is not supported. if (this.UseTestMode) { recResponse = (RecurringResponse)TransactionClient.doTransaction(request, this.AccountToken); } else { recResponse = (RecurringResponse)TransactionClient.doTransaction(request, this.AccountToken); } if (recResponse != null) { //RECORD RESPONSE if (this.UseDebugMode) { string respDebug = BuildRecurringResponseDebug(recResponse); this.RecordCommunication(this.Name, CommunicationDirection.Receive, respDebug, null); } tr2 = ProcessRecurringResponse(authorizeRequest, recResponse); response.AddTransaction(tr2); response.Status = tr2.TransactionStatus; return(response); } else { throw new Exception("Operation Failed, Response is null."); } }
public PayPros Initiate(PayPros payment, string cardNumber) { #region CREATE REQUEST CreditCardRequest request = new CreditCardRequest(); try { request.setCreditCardNumber(cardNumber); if (!string.IsNullOrEmpty(payment.CCV)) { request.setCreditCardVerificationNumber(payment.CCV); } request.setExpireMonth(payment.CCExpireMonth); request.setExpireYear(payment.CCExpireYear); request.setChargeType(CreditCardRequest.SALE); request.setPurchaseOrderNumber(payment.PaymentAccount); request.setChargeTotal((double)payment.PaymentAmount); request.setPartialApprovalFlag(false); if (!string.IsNullOrEmpty(payment.RequestingOrigin)) { request.setCustomerIpAddress(payment.RequestingOrigin); } switch (_account) { case PaymentAccounts.UBO: request.setIndustry("DIRECT_MARKETING"); break; case PaymentAccounts.Judicial: break; default: break; } switch (_method) { case PaymentMethods.Web: request.setTransactionConditionCode(5); break; case PaymentMethods.Phone: request.setTransactionConditionCode(2); break; default: break; } } catch (Exception) { throw new ArgumentException("Unable to create request"); } #endregion #region PROCESS REQUEST string payprosToken = (payment.IsTest ? testTokens[_account] : accountTokens[_account]); CreditCardResponse response = (CreditCardResponse)TransactionClient.doTransaction(request, payprosToken); payment.responseCode = (payment.IsTest ? (-1 * response.getResponseCode()) : response.getResponseCode());//flip sign of response code for test payments (keeps it from being written for processing) payment.responseText = response.getResponseCodeText(); payment.retryRecommended = response.getRetryRecommended(); payment.timestamp = response.getTimeStamp(); #endregion #region RECORD RESPONSE double authorizedAmount = 0; if (double.TryParse(response.getAuthorizedAmount(), out authorizedAmount)) { payment.PaymentAmount = (decimal)authorizedAmount; } long orderID; if (long.TryParse(response.getOrderId(), out orderID)) { payment.orderID = orderID; } long batchID; if (long.TryParse(response.getBatchId(), out batchID)) { payment.batchID = batchID; } long bankApprovalCode; if (long.TryParse(response.getBankApprovalCode(), out bankApprovalCode)) { payment.bankApprovalCode = bankApprovalCode; } long bankTransactionId; if (long.TryParse(response.getBankTransactionId(), out bankTransactionId)) { payment.bankTransactionId = bankTransactionId; } int creditCardVerification; if (int.TryParse(response.getCreditCardVerificationResponse(), out creditCardVerification)) { payment.creditCardVerificationResponse = creditCardVerification; } #endregion return(payment); }