(13) The merchant login ID or password is invalid or the account is inactive

☆樱花仙子☆ 提交于 2019-12-18 07:21:22

问题


I want to implement Authorize .net payment gateway in my website using asp.net. I am a beginner in this. Can someone give me a sample code from where I can be redirected to the Authorize.net page to complete payment process. I have created a sandbox account. Redirection URL - https://test.authorize.net/gateway/transact.dll but I get an error

(13) The merchant login ID or password is invalid or the account is inactive.

My account is active and in test mode.

My Code:

protected void Button_pay_Click(object sender, EventArgs e)
    {
        string value = TextBox_amt.Text;
        decimal d = decimal.Parse(value);
        Run("abc", "abcq234", d);
     }
 public static ANetApiResponse Run(String ApiLoginID, String ApiTransactionKey, decimal amount)
    {
        Console.WriteLine("Create an Accept Payment Transaction Sample");

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

        // define the merchant information (authentication / transaction id)
        ApiOperationBase<ANetApiRequest, ANetApiResponse>.MerchantAuthentication = new merchantAuthenticationType()
        {
            name = ApiLoginID,
            ItemElementName = ItemChoiceType.transactionKey,
            Item = ApiTransactionKey,
        };

        var opaqueData = new opaqueDataType
        {
            dataDescriptor = "COMMON.ACCEPT.INAPP.PAYMENT",
            dataValue = "119eyJjb2RlIjoiNTBfMl8wNjAwMDUyN0JEODE4RjQxOUEyRjhGQkIxMkY0MzdGQjAxQUIwRTY2NjhFNEFCN0VENzE4NTUwMjlGRUU0M0JFMENERUIwQzM2M0ExOUEwMDAzNzlGRDNFMjBCODJEMDFCQjkyNEJDIiwidG9rZW4iOiI5NDkwMjMyMTAyOTQwOTk5NDA0NjAzIiwidiI6IjEuMSJ9"

        };

        var billingAddress = new customerAddressType
        {
            firstName = "John",
            lastName = "Doe",
            address = "123 My St",
            city = "OurTown",
            zip = "98004"
        };

        //standard api call to retrieve response
        var paymentType = new paymentType { Item = opaqueData };

        // Add line Items
        var lineItems = new lineItemType[2];
        lineItems[0] = new lineItemType { itemId = "1", name = "t-shirt", quantity = 2, unitPrice = new Decimal(15.00) };
        lineItems[1] = new lineItemType { itemId = "2", name = "snowboard", quantity = 1, unitPrice = new Decimal(450.00) };

        var transactionRequest = new transactionRequestType
        {
            transactionType = transactionTypeEnum.authCaptureTransaction.ToString(),    // charge the card

            amount = amount,
            payment = paymentType,
            billTo = billingAddress,
            lineItems = lineItems
        };

        var request = new createTransactionRequest { transactionRequest = transactionRequest };

        // instantiate the contoller that will call the service
        var controller = new createTransactionController(request);
        controller.Execute();

        // get the response from the service (errors contained if any)
        var response = controller.GetApiResponse();

        //validate
        if (response != null)
        {
            if (response.messages.resultCode == messageTypeEnum.Ok)
            {
                if (response.transactionResponse.messages != null)
                {
                    Console.WriteLine("Successfully created transaction with Transaction ID: " + response.transactionResponse.transId);
                    Console.WriteLine("Response Code: " + response.transactionResponse.responseCode);
                    Console.WriteLine("Message Code: " + response.transactionResponse.messages[0].code);
                    Console.WriteLine("Description: " + response.transactionResponse.messages[0].description);
                    Console.WriteLine("Success, Auth Code : " + response.transactionResponse.authCode);
                }
                else
                {
                    Console.WriteLine("Failed Transaction.");
                    if (response.transactionResponse.errors != null)
                    {
                        Console.WriteLine("Error Code: " + response.transactionResponse.errors[0].errorCode);
                        Console.WriteLine("Error message: " + response.transactionResponse.errors[0].errorText);
                    }
                }
            }
            else
            {
                Console.WriteLine("Failed Transaction.");
                if (response.transactionResponse != null && response.transactionResponse.errors != null)
                {
                    Console.WriteLine("Error Code: " + response.transactionResponse.errors[0].errorCode);
                    Console.WriteLine("Error message: " + response.transactionResponse.errors[0].errorText);
                }
                else
                {
                    Console.WriteLine("Error Code: " + response.messages.message[0].code);
                    Console.WriteLine("Error message: " + response.messages.message[0].text);
                }
            }
        }
        else
        {
            Console.WriteLine("Null Response.");
        }

        return response;
    }

回答1:


Aparajita you must check with the API credentials for sandbox in Authorize.Net account




回答2:


This comes up often and the reasons are always the same:

  1. You are using your production credentials but hitting the sandbox endpoints
  2. You are using your sandbox credentials but are hitting the production endpoints
  3. The credentials you are using are incorrect

Verifying which endpoint you are actually hitting.

If you are testing against the production environment, verify that the URL you have in your code is the actual production URL (or if you are using a framework, the configuration is set to production).

The correct URL for production is https://api2.authorize.net/xml/v1/request.api.

The correct URL for testing is https://apitest.authorize.net/xml/v1/request.api

Verify your credentials

If you are sure that you are hitting the correct endpoint you then need to verify that you are using the correct credentials for that environment.

  • Make sure you are using the API login and transaction key and not the console login and password. They are not the same thing. Only the API login and transaction key will work when accessing the APIs. You can get these after logging in to the console.
  • Double check that the API login is correct in the console.
  • If the API login is correct, from within the customer console generate a new transaction key to verify that you have the correct one.
  • Make sure that the credentials are not accidentally entered incorrectly in your code. Make sure all of the characters are there. Also, the credentials are case sensitive. Make sure you did not capitalize or lowercase those values.
  • If you need to verify your login credentials work set up a MVCE that hits the endpoint you are trying to reach with your API credentials. It should be a simple script that makes a basic API call. This will make it easy to debug why you are getting this error.

Test mode is not the sandbox

It is common to confuse test mode with the sandbox environment. Test mode in production uses the production environment and production credentials. Using the sandbox credentials or URLs will not work.




回答3:


I used this sample project to solve my problem. This is in TEST Mode.

https://github.com/AuthorizeNet/sdk-dotnet/tree/master/CoffeeShopWebApp



来源:https://stackoverflow.com/questions/46948603/13-the-merchant-login-id-or-password-is-invalid-or-the-account-is-inactive

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!