public virtual SubmitTransactionResult SubmitTransaction(SubmitTransactionParameter parameter) { TransactionalClient transactionalClient = new TransactionalClient(); TokensClient tokenClient = new TokensClient(); SubmitTransactionResult result = new SubmitTransactionResult(); if (parameter.PaymentProfileId != null) { UseTokenRequest cardRequest = this.GetCardRequestForToken(parameter); UseTokenResponse reply1 = tokenClient.UseToken(cardRequest); result.Success = reply1.Result == 0; result.ResponseNumber = reply1.AuthorizationNumber ?? string.Empty; result.ResponseToken = parameter.PaymentProfileId + "|" + reply1.ReferenceNumber ?? string.Empty; if (!result.Success) { result.ResponseMessages.Add(string.Format("Transaction Failed: {0} Reference: {1}", reply1.Message, reply1.ReferenceNumber)); } } else { // ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;//BUSA-669 : change Protocol to TLS v1.2 in CenPos calls ProcessCreditCardResponse reply = transactionalClient.ProcessCreditCard(this.GetCardRequest(parameter)); result.Success = reply.Result == 0; result.ResponseNumber = reply.AutorizationNumber ?? string.Empty; result.ResponseToken = ((ProcessRecurringSaleResponse)reply).RecurringSaleTokenId + "|" + reply.ReferenceNumber ?? string.Empty; this.recurringToken = ((ProcessRecurringSaleResponse)reply).RecurringSaleTokenId; if (!result.Success) { result.ResponseMessages.Add(string.Format("Transaction Failed: {0} Reference: {1}", reply.Message, reply.ReferenceNumber)); } } return(result); }
//BUSA-450 Cenpos - address for New Web Customer is not being populated correctly end //protected virtual ProcessCardRequest GetCardRequestForToken(SubmitTransactionParameter parameter) //{ // customSettings.OverrideCurrentWebsite(SiteContext.Current.WebsiteDto.Id); // ProcessCardRequest processCardRequest1 = null; // if (parameter.PaymentProfileId != null) // { // ProcessCardRecurringSaleRequest recurringSaleRequest = new ProcessCardRecurringSaleRequest(); // string userId = customSettings.PaymentGateway_Cenpos_UserId; // recurringSaleRequest.UserId = userId; // string password = customSettings.PaymentGateway_Cenpos_Password; // recurringSaleRequest.Password = password; // int merchantId = customSettings.PaymentGateway_Cenpos_MerchantId; // recurringSaleRequest.MerchantId = merchantId; // Decimal amount = parameter.Amount; // recurringSaleRequest.Amount = amount; // string str1 = parameter.CreditCard.ExpirationMonth.ToString("00") + parameter.CreditCard.ExpirationYear.ToString().Substring(2); // recurringSaleRequest.CardExpirationDate = str1; // string customerNumber = parameter.CustomerNumber; // recurringSaleRequest.CustomerCode = customerNumber; // string address1 = parameter.BillToAddress.Address1; // recurringSaleRequest.CustomerBillingAddress = address1; // string email = parameter.BillToAddress.Email; // recurringSaleRequest.CustomerEmailAddress = email; // string postalCode = parameter.BillToAddress.PostalCode; // recurringSaleRequest.CustomerZipCode = postalCode; // string referenceNumber = parameter.ReferenceNumber; // recurringSaleRequest.InvoiceNumber = referenceNumber; // the invoicenumber in SpForce will be same as original transaction reference number? // string currencyCode = parameter.CurrencyCode; // recurringSaleRequest.CurrencyCode = currencyCode; // // setting SpecialForce for sale transaction type for invoice amount // //recurringSaleRequest.TransactionType = parameter.TransactionType == TransactionType.Sale ? "RecurringSale2" : "RecurringAuth"; // switch (parameter.TransactionType) // { // case TransactionType.Authorization: // recurringSaleRequest.TransactionType = "RecurringAuth"; // break; // case TransactionType.Capture: // recurringSaleRequest.TransactionType = "RecurringSale2"; //saving card through invoice // break; // case TransactionType.Sale: // recurringSaleRequest.TransactionType = "Sale"; //only payment through invoicing // break; // case TransactionType.Void: // recurringSaleRequest.TransactionType = "Void"; // break; // case TransactionType.Credit: // recurringSaleRequest.TransactionType = "Refund"; // break; // default : recurringSaleRequest.TransactionType = "RecurringAuth"; // break; // } // string str3 = parameter.PaymentProfileId + "|" + (object)merchantId; // recurringSaleRequest.RecurringSaleTokenId = str3; // processCardRequest1 = (ProcessCardRequest)recurringSaleRequest; // } // return processCardRequest1; //} protected virtual UseTokenRequest GetCardRequestForToken(SubmitTransactionParameter parameter) { customSettings.OverrideCurrentWebsite(SiteContext.Current.WebsiteDto.Id); UseTokenRequest processCardRequest1 = new UseTokenRequest(); if (parameter.PaymentProfileId != null) { string userId = customSettings.PaymentGateway_Cenpos_UserId; processCardRequest1.UserId = userId; string password = customSettings.PaymentGateway_Cenpos_Password; processCardRequest1.Password = password; int merchantId = customSettings.PaymentGateway_Cenpos_MerchantId; processCardRequest1.MerchantId = merchantId; Decimal amount = parameter.Amount; processCardRequest1.Amount = amount; string referenceNumber = parameter.ReferenceNumber; processCardRequest1.InvoiceNumber = referenceNumber; // the invoicenumber in SpForce will be same as original transaction reference number? string currencyCode = parameter.CurrencyCode; processCardRequest1.CurrencyCode = currencyCode; // setting SpecialForce for sale transaction type for invoice amount //recurringSaleRequest.TransactionType = parameter.TransactionType == TransactionType.Sale ? "RecurringSale2" : "RecurringAuth"; switch (parameter.TransactionType) { case TransactionType.Authorization: processCardRequest1.TransactionType = "Auth"; break; case TransactionType.Capture: processCardRequest1.TransactionType = "RecurringSale2"; //saving card through invoice break; case TransactionType.Sale: processCardRequest1.TransactionType = "Sale"; //only payment through invoicing break; case TransactionType.Void: processCardRequest1.TransactionType = "Void"; break; case TransactionType.Credit: processCardRequest1.TransactionType = "Refund"; break; default: processCardRequest1.TransactionType = "Auth"; break; } string str3 = parameter.PaymentProfileId + "|" + (object)merchantId; processCardRequest1.TokenId = str3; } return(processCardRequest1); }