public override Transaction DoAuthorize(AuthorizeTransactionRequest authorizeRequest) { //New orders are already authorized in GoogleCheckout //authorize should never be called from merchant admin. authorization updates take place //on google checkout call-backs. throw new NotSupportedException("Direct Credit Card Authorization Requests are not supported."); }
/// <summary> /// Submits an authorization request /// </summary> /// <param name="authorizeRequest">The authorization request</param> /// <returns>Transaction that represents the result of the authorization request</returns> public override Transaction DoAuthorize(AuthorizeTransactionRequest authorizeRequest) { Transaction transaction = new Transaction(); transaction.PaymentGatewayId = this.PaymentGatewayId; //always use authorize capture. transaction.TransactionType = TransactionType.AuthorizeCapture; string serialNumber = authorizeRequest.Payment.AccountData; GiftCertificate gc = GiftCertificateDataSource.LoadForSerialNumber(serialNumber); string errorMessage = string.Empty; if (gc == null) { errorMessage = "No gift certificate found with given serial number."; } else if (gc.IsExpired()) { errorMessage = "Gift certificate is expired."; } else if (gc.Balance < authorizeRequest.Amount) { errorMessage = "Gift certificate does not have enough balance to complete this transaction."; } else { LSDecimal newAmount = gc.Balance - authorizeRequest.Amount; gc.Balance = newAmount; GiftCertificateTransaction trans = new GiftCertificateTransaction(); trans.TransactionDate = LocaleHelper.LocalNow; trans.Amount = authorizeRequest.Amount; trans.OrderId = authorizeRequest.Payment.OrderId; trans.Description = string.Format("An amount of {0:lc} used in purchase. Remaining balance is {1:lc}.", authorizeRequest.Amount, newAmount); gc.Transactions.Add(trans); gc.Save(); } if (string.IsNullOrEmpty(errorMessage)) { transaction.TransactionStatus = TransactionStatus.Successful; transaction.ResponseCode = "0"; transaction.ResponseMessage = "SUCCESS"; transaction.Amount = authorizeRequest.Amount; } else { transaction.TransactionStatus = TransactionStatus.Failed; transaction.ResponseCode = "1"; transaction.ResponseMessage = errorMessage; transaction.Amount = authorizeRequest.Amount; } return(transaction); }
public override Transaction DoAuthorize(AuthorizeTransactionRequest 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"); } //BUILD REQUEST Dictionary <string, string> sensitiveData = new Dictionary <string, string>(); bool capture = this.UseAuthCapture || authorizeRequest.Capture; string requestData = InitializeAuthRequest(payment, order, user, sensitiveData, capture); //RECORD REQUEST if (this.UseDebugMode) { this.RecordCommunication(this.Name, CommunicationDirection.Send, requestData, sensitiveData); } //SEND REQUEST AND GET RESPONSE string responseData = SendRequestToGateway(requestData); if (responseData != null) { //RECORD RESPONSE if (this.UseDebugMode) { this.RecordCommunication(this.Name, CommunicationDirection.Receive, responseData, null); } return(ProcessResponse(payment, responseData, capture ? TransactionType.AuthorizeCapture : TransactionType.Authorize, authorizeRequest.Amount)); } else { throw new Exception("Operation Failed, Response is null."); } }
public override Transaction DoAuthorize(AuthorizeTransactionRequest authorizeRequest) { Payment payment = authorizeRequest.Payment; if (payment == null) { throw new ArgumentNullException("request.Payment"); } if (authorizeRequest.Capture || this.UseAuthCapture) { return(CreateTransaction(TransactionType.AuthorizeCapture, authorizeRequest.Amount)); } else { return(CreateTransaction(authorizeRequest.TransactionType, authorizeRequest.Amount)); } }
public async Task <ResponseViewModel> AuthorizeTransaction(SaleViewModel sale, string merchantOrderId) { var soapSendRequestMessage = new AuthorizeTransactionRequest(); soapSendRequestMessage.Version = "v1.0"; soapSendRequestMessage.RequestId = Guid.NewGuid(); soapSendRequestMessage.OrderData = new OrderDataRequest { MerchantId = new Guid(ConfigurationManager.AppSettings["merchantId"]), OrderId = merchantOrderId }; soapSendRequestMessage.CustomerData = new CustomerDataRequest { CustomerName = sale.CustomerName }; soapSendRequestMessage.PaymentDataCollection = new PaymentDataRequest[1]; var payment = new CreditCardDataRequest { CardNumber = sale.CreditCardCardNumber, Amount = sale.PaymentAmount, CardExpirationDate = sale.CreditCardExpirationDate, CardHolder = sale.CreditCardHolder, CardSecurityCode = sale.CreditCardSecurityCode, PaymentMethod = 997, Currency = "BRL", Country = "BRA", NumberOfPayments = (short)(sale.PaymentInstallments), PaymentPlan = 0, TransactionType = 1 }; soapSendRequestMessage.PaymentDataCollection[0] = payment; var soapResponse = await PagadorTransactionWrapper.AuthorizeTransactionAsync(soapSendRequestMessage); var responseObject = new ResponseViewModel { PaymentId = soapResponse.PaymentDataCollection[0].BraspagTransactionId }; return(responseObject); }
//POST PARAMETERS public AuthorizeTransactionRequest AddingAuthorizeParameters(SoapViewModel soapCreditCard) { var serviceOrderData = new OrderDataRequest { MerchantId = new Guid(soapCreditCard.MerchanId), OrderId = "0000" }; var serviceCustomer = new CustomerDataRequest { CustomerIdentity = soapCreditCard.Identity, CustomerIdentityType = soapCreditCard.CustomerIdentityType, CustomerName = soapCreditCard.CustomerName, CustomerEmail = soapCreditCard.CustomerEmail }; var servicePayment = new CreditCardDataRequest { PaymentMethod = soapCreditCard.PaymentMethod, Amount = soapCreditCard.Amount, Currency = soapCreditCard.Currency, Country = soapCreditCard.Country, NumberOfPayments = (short)soapCreditCard.NumberPayments, PaymentPlan = 0, // cash TransactionType = 1, // preauth CardHolder = soapCreditCard.CustomerName, CardNumber = soapCreditCard.CardNumber, CardSecurityCode = soapCreditCard.SecurityCode, CardExpirationDate = soapCreditCard.Expiration }; var authorizationRequest = new AuthorizeTransactionRequest { RequestId = new Guid("00000000-0000-0000-0000-000000000000"), Version = "1.0", CustomerData = serviceCustomer, OrderData = serviceOrderData, PaymentDataCollection = new PaymentDataRequest[] { servicePayment } }; return(authorizationRequest); }
public override Transaction DoAuthorize(AuthorizeTransactionRequest authorizeRequest) { VerifyGatewayConfig(); 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"); } Dictionary <string, string> sensitiveData = new Dictionary <string, string>(); String requestData = InitializeAuthRequest(payment, order, user, sensitiveData); //RECORD REQUEST if (this.UseDebugMode) { this.RecordCommunication(this.Name, CommunicationDirection.Send, requestData, sensitiveData); } //send request and get response String responseData = SendRequest(requestData); //RECORD RESPONSE if (this.UseDebugMode) { this.RecordCommunication(this.Name, CommunicationDirection.Receive, responseData, null); } return(ProcessResponse(payment, responseData, TransactionType.AuthorizeCapture)); }
public Task <AuthorizeTransactionResponse> AuthorizeTransactionAsync(AuthorizeTransactionRequest request) { return(_pagadorTransactionSoapClient.AuthorizeTransactionAsync(request)); }
/// <summary> /// Submits an authorization request /// </summary> /// <param name="authorizeRequest">The authorization request</param> /// <returns>Transaction that represents the result of the authorization request</returns> public abstract Transaction DoAuthorize(AuthorizeTransactionRequest authorizeRequest);
private CreditCardRequest InitializeAuthRequest(AuthorizeTransactionRequest authorizeRequest) { Payment payment = authorizeRequest.Payment; Order order = payment.Order; User user = order.User; VerifyPaymentInstrument(payment); CreditCardRequest request = new CreditCardRequest(); AccountDataDictionary accountData = new AccountDataDictionary(payment.AccountData); //set user info if (accountData.ContainsKey("AccountName") && !string.IsNullOrEmpty(accountData["AccountName"])) { string[] names = accountData["AccountName"].Split(" ".ToCharArray()); request.setBillFirstName(names[0]); if (names.Length > 1) { request.setBillLastName(string.Join(" ", names, 1, names.Length - 1)); } else { //no last name. what to do? send empty string? TODO : check the API request.setBillLastName(string.Empty); } } else { request.setBillFirstName(order.BillToFirstName); request.setBillLastName(order.BillToLastName); } request.setBillEmail(order.BillToEmail); request.setBillCompany(order.BillToCompany); request.setBillAddressOne(order.BillToAddress1); request.setBillAddressTwo(order.BillToAddress2); request.setBillCity(order.BillToCity); request.setBillStateOrProvince(order.BillToProvince); request.setBillPostalCode(order.BillToPostalCode); request.setBillCountryCode(order.BillToCountryCode); request.setBillPhone(order.BillToPhone); request.setBillFax(order.BillToFax); request.setOrderUserId(user.UserId.ToString()); SetCreditCardData(request, payment, accountData); // set charge details if (this.UseAuthCapture) { request.setChargeType(CreditCardRequest.SALE); } else { request.setChargeType(CreditCardRequest.AUTH); } request.setChargeTotal((double)authorizeRequest.Amount); //TODO set tax and shipping //request.setTaxAmount(); //request.setShippingCharge(); if (!string.IsNullOrEmpty(payment.CurrencyCode)) { request.setCurrency(payment.CurrencyCode); } request.setOrderId(order.OrderId.ToString()); request.setInvoiceNumber(order.OrderNumber.ToString()); //TODO add description if present //if(!string.IsNullOrEmpty(order.Notes)) { // request.setOrderDescription(order.Notes); //} HttpContext context = HttpContext.Current; if (context != null) { request.setCustomerIpAddress(context.Request.ServerVariables["REMOTE_HOST"]); } return(request); }
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 override Transaction DoAuthorize(AuthorizeTransactionRequest 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"); } CreditCardRequest request = InitializeAuthRequest(authorizeRequest); 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); } if (this.UseAuthCapture) { return(ProcessResponse(payment, response, TransactionType.AuthorizeCapture, authorizeRequest.Amount)); } else { return(ProcessResponse(payment, response, TransactionType.Authorize, authorizeRequest.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; 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); } Dictionary <string, string> sensitiveData = new Dictionary <string, string>(); string requestData = InitializeAuthRecurringRequest(authorizeRequest, sensitiveData); //RECORD REQUEST if (this.UseDebugMode) { this.RecordCommunication(this.Name, CommunicationDirection.Send, requestData, sensitiveData); } string responseData = SendRequestToGateway(requestData); if (responseData != null) { //RECORD RESPONSE if (this.UseDebugMode) { this.RecordCommunication(this.Name, CommunicationDirection.Receive, responseData, null); } tr2 = ProcessRecurringResponse(authorizeRequest, responseData); response.AddTransaction(tr2); response.Status = tr2.TransactionStatus; return(response); } else { throw new Exception("Operation Failed, Response is null."); } }