cancel
Showing results for 
Search instead for 
Did you mean: 

Production Mode does not work

Hi,

 

I am using the C# - SDK sample code with few adjust to integrate in a customer's website. Code works very well in Sandbox, using my developer credentials. Then, when I turn the environment to Production put my Customer's credentials and live customer's portal set to Test Mode, the code does not work  and returns a error message saying there was some error trying to process the transaction. Message comes without any error number.

 I spent several hours on internet trying to get an answer but unfortunatly I did not find answer.  
Also I called Authorize.net but they could not offere me any help without a error number.

 

Code below shows where in the code I made changes to production server.

 

public static class AuthorizeNetHelper
    {
        static AuthorizeNetHelper()
        {
            ApiOperationBase<ANetApiRequest, ANetApiResponse>.RunEnvironment = Properties.Settings.Default.RunningInProductionEnvironment ? AuthorizeNet.Environment.PRODUCTION : AuthorizeNet.Environment.SANDBOX;
        }
 
        public static createTransactionResponse ChargeCreditCard(creditCardType creditCard, customerAddressType billingAddress, string description, decimal amount)
        {
            ApiOperationBase<ANetApiRequest, ANetApiResponse>.RunEnvironment = AuthorizeNet.Environment.PRODUCTION;
 
and I put this on web.config

<setting name="AuthorizeNetApiLoginId" serializeAs="String">
        <value>I put customer's LoginId here</value>
      </setting>
      <setting name="AuthorizeNetApiTransactionKey" serializeAs="String">
        <value>I put customer's TransactionKey here</value>
      </setting>
      <setting name="RunningInProductionEnvironment" serializeAs="String">
        <value>True</value>
 

 

 

I wonder if someone could help with this issue.

 

Thank you in advance.

 

JS

jsw32821
Member
12 REPLIES 12

Hi,

 

Production Gateway is still in Test Mode. and All sensitive credential are in the webconfig file.

 

I am using the GitHub Sample code for C# ( biblioteca .NET) with few changes to send a TransactioRequest this way:

 

     var request = new createTransactionRequest { transactionRequest = transactionRequest };

 

Below is the full code I am using:

 

AuthorizeNetHelper.cs 

using AuthorizeNet.Api.Contracts.V1;
using AuthorizeNet.Api.Controllers;
using AuthorizeNet.Api.Controllers.Bases;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Booking.Infrastructure.Helpers
{
    public static class AuthorizeNetHelper
    {
        static AuthorizeNetHelper()
        {
            ApiOperationBase<ANetApiRequest, ANetApiResponse>.RunEnvironment = Properties.Settings.Default.RunningInProductionEnvironment ? AuthorizeNet.Environment.PRODUCTION : AuthorizeNet.Environment.SANDBOX;
        }

        public static createTransactionResponse ChargeCreditCard(creditCardType creditCard, customerAddressType billingAddress, string description, decimal amount)
        {
            ApiOperationBase<ANetApiRequest, ANetApiResponse>.RunEnvironment = AuthorizeNet.Environment.SANDBOX;

            ApiOperationBase<ANetApiRequest, ANetApiResponse>.MerchantAuthentication = new merchantAuthenticationType
            {
                name = Properties.Settings.Default.AuthorizeNetApiLoginId,
                ItemElementName = ItemChoiceType.transactionKey,
                Item = Properties.Settings.Default.AuthorizeNetApiTransactionKey
            };

            var transactionRequest = new transactionRequestType
            {
                transactionType = transactionTypeEnum.authCaptureTransaction.ToString(),
                amount = amount,
                payment = new paymentType { Item = creditCard },
                billTo = billingAddress,
                lineItems = new lineItemType[]
                {
                    new lineItemType
                    {
                        itemId = "1",
                        name = description.Substring(0, description.Length > 31 ? 31 : description.Length),
                        quantity = 1,
                        unitPrice = amount
                    }
                }
            };

            var request = new createTransactionRequest { transactionRequest = transactionRequest };

            var controller = new createTransactionController(request);
            controller.Execute();

            var response = controller.GetApiResponse();

            return response;//.messages.resultCode == messageTypeEnum.Ok;
        }

        public static string GenerateExp(int month, int year)
        {
            return (new DateTime(year, month, 1)).ToString("MMyy");
        }
    }
}

 

 

 

Here is code  on Controller
 
case PaymentMethod.CreditCard:
                        {
                            var creditCard = new AuthorizeNet.Api.Contracts.V1.creditCardType
                            {
                                cardNumber = viewModel.CCNumber,
                                expirationDate = AuthorizeNetHelper.GenerateExp(viewModel.CCExpMonth, viewModel.CCExpYear),
                                cardCode = viewModel.CCCode
                            };

                            var billingAddress = new AuthorizeNet.Api.Contracts.V1.customerAddressType();

                            if (!string.IsNullOrEmpty(viewModel.CCFirstName))
                                billingAddress.firstName = viewModel.CCFirstName;

                            if (!string.IsNullOrEmpty(viewModel.CCLastName))
                                billingAddress.lastName = viewModel.CCLastName;

                            if (!string.IsNullOrEmpty(viewModel.CCAddress))
                                billingAddress.address = viewModel.CCAddress;

                            if (!string.IsNullOrEmpty(viewModel.CCCity))
                                billingAddress.city = viewModel.CCCity;

                            if (!string.IsNullOrEmpty(viewModel.CCState))
                                billingAddress.state = viewModel.CCState;

                            if (!string.IsNullOrEmpty(viewModel.CCZipCode))
                                billingAddress.zip = viewModel.CCZipCode;

                            if (!string.IsNullOrEmpty(viewModel.CCCountry))
                                billingAddress.country = viewModel.CCCountry;

                            var description = string.Format("Reservation {0}", reservation.ReservationNr);

                            var response = AuthorizeNetHelper.ChargeCreditCard(creditCard, billingAddress, description, paymentTotal);
 

 

In my sandbox account  everything works fine. In production with customer's real credentials does not.

 

The only change I made was replace this line

 

ApiOperationBase<ANetApiRequest, ANetApiResponse>.RunEnvironment = AuthorizeNet.Environment.SANDBOX;

 

with that

 

ApiOperationBase<ANetApiRequest, ANetApiResponse>.RunEnvironment = AuthorizeNet.Environment.PRODUCTION;

 

 

Thank you for your help,

 

 

JS

 

@jsw32821 could you please try again.  There was some fine-tuning done to our production servers today that may improve your results.

 

Richard

 

 

Tested and... worked fine in Production server.

 

Thank you very much.

 

Have a great evening.

 

 

JS