cancel
Showing results for 
Search instead for 
Did you mean: 

E00007 User Authentication Failed. Posting to wrong URI

I know that the error is popping up because I have input the Sandbox API and transacation key on the Authorize.NET CIM page on the woocommerce plugin for testing, but I don't know where to change the URI from https://api2.authorize.net/xml/v1/request.api to the Sandbox URI: https://test.authorize.net/gateway/transact.dll 

 

Can someone please step me through the process! Thanks!

 

Here's a portion of the error message:

 

Code: E00007, Message: User authentication failed due to invalid authentication values.
An error occurred, please try again or try an alternate form of payment.

Request
method: POST
  

uri: https://api2.authorize.net/xml/v1/request.api
user-agent: WooCommerce-Authorize.Net-CIM-Gateway/2.6.2 (WooCommerce/3.0.5; WordPress/4.7.5)
headers: Array
(
[content-type] => application/xml
[accept] => application/xml
)
body:


************
****************

50755

authCaptureTransaction
25.00
USD


4********0027
12-18
***

cnenemy
Member
7 REPLIES 7

Hello @cnenemy

 

According to the WooCommerce CIM module (assuming this is correct), you can set the environment to Test or Production.

 

https://docs.woocommerce.com/document/authorize-net-cim/

 

Richard

RichardH
Administrator Administrator
Administrator

Thank you for your quick response.

Are you saying that I don't need to test the transactions using the Sandbox method?

 

From what I've read (Sandbox vs Live):

"Always make sure that if you are posting to the sandbox (https://test.authorize.net/gateway/transact.dll) that you are using your sandbox account’s API Login ID and Transaction Key. If you are posting to the production server (https://secure.authorize.net/gateway/transact.dll)then you must use your production account’s credentials.

 

Transactions that are run in the production environment in Test Mode are not stored anywhere and will return a transaction ID of zero. There will be no history of them. However, transactions run in the sandbox is available in the transaction history, which is another reason why a sandbox  is the recommended method of testing"

 

Yes, I bought the Woocommerce Authorize.net CIM Module. I have signed up for a Sandbox account and am using the API and transaction keys from that. When testing, I get the E00007 error.

 

The woocommerce CIM doc says:

 

"Authorize.Net production credentials cannot be used in test mode. To test the plugin, merchants sometimes put their production accounts into the “Test modes” from their Authorize.Net accounts, which returns dummy data for live transactions. However, this will not work with the plugin’s test mode either, as these are still production credentials.

 

To use the plugin in test mode, you should get a set of dedicated test credentials from Authorize.Net. These work with the test mode in the plugin. Your production Authorize.Net credentials should always be live, and never set to test mode."

 

However, the dedicated test credentials link sends me to the Authorize.Net Sandbox login page. 

 

According to the E00007 error code response:

"This error indicates that invalid credentials, the API Login ID or Transaction Key, are being submitted. If you have confirmed that your API login ID and Transaction Key are accurate, you may need to confirm that you are submitting to the correct URL. If you are using a test account, please make sure to post to the sandbox URL. If you’re using a live account, make sure to post to the production URL."

 

So it seems as simple as ensuring it posts to the Sandbox URL rather than the Live production URL, but I don't know where to change that. I need a log of test transactions to make sure I get the correct card responses, before we go live.

 

Thank you.

@cnenemy

 

Our sandbox and production systems are completely separate and you cannot use credentials from one system with the other.  

 

If you wish to test in the sandbox, you must use credentials obtained from the sandbox at https://sandbox.authorize.net and configure your application to point to our sandbox/test environment.

 

Using Test Mode in production for testing is not recommended as it only checks credentials.  It does not actually perform test transactions, nothing is recorded at the gateway, and no transaction ids are generated.

 

The instructions on the WooCommerce site appear to be out of date, you may wish to contact them to ensure you have the latest information for testing their application in our sandbox.

 

Richard

I know that they are separate, which is what I said in the initial post and my response to your proposed solution.

 

My question was very specific: Where do I find the location of the URI so that I can change it to the sandbox URI. 

 

I've recently found the location myself, but the fact that support cannot direct people in the right direction after multiple support tickets is troubling given how simple the solution is in hindsight, especially because the issue is in one of the php files supplied by the Woocommerce Authorize.net CIM plugin I purchased from you.

 

Here's the solution for others:

 

If you need to change the Production URI to the Sandbox URI because of an E00007 error after having installed the Woocommerce Authorize.Net CIM, registering a Sandbox account, and inputting the supplied API and transaction key, follow these steps:

 

  1. login as root user on your server using any SFTP program
  2. locate 'class-wc-authorize-net-cim-api.php' in /var/www/html/wp-content/plugins/woocommerce-gateway-authorize-net-cim/includes/api
  3. go to line 39 that says: const PRODUCTION_ENDPOINT = 'https://api2.authorize.net/xml/v1/request.api'
  4. replace 'https://api2.authorize.net/xml/v1/request.api' with the Sandbox URI 'https://apitest.authorize.net/xml/v1/request.api'
  5. overwite the php file in the api folder and refresh your website
  6. If you've entered the correct Sandbox API and transaction key in the Woocommerce Checkout settings, the transaction should go through and show up in your Sandbox transaction summary

 

 

Hi @cnenemy,

 

Thanks for posting the solution so that any other WooCommerce users may be helped by it.

 

Just as a point of information, WooCommerce is something separate from us. It's not a product created by us or sold by us, so our support isn't really able to help with specific WooCommerce setup issues or issues related to specific WooCommerce plugins.

Hello there,

I just wanted to let you know that your forum post helped me solve the same issue you were having! Thank you for taking the time to post in the forum.

I also wanted to mention that I believe I found out what the issue is. I just sent a support ticket to the plugin developer (SkyVerge) to describe the issue you and I had and what I believe is the solution to the problem. This is basically my ticket to them describing my thoughts:

---------

"Authorize.net accounts can be broken up into 2 categories: *Production* accounts and *Sandbox* accounts. Within either of the 2 categories of accounts there are both *LIVE* and *TEST* environments you can set for that account. Within the plugin settings you have the option to set the the Credentials as either Production or Test, and when trying to track down the answers to anything it becomes very confusing because you are mixing the terminology."

 

I think it a necessary fix to this would be to break down this terminology in the documentation of the WooCommerce extension, as well as change the plugin's settings page verbiage to reflect it. For example, changing options within the "Environment:" dropdown to be 'Live' and 'Test' or add the distinction between "Production" and "Sandbox" accounts so that it's clear when you change a setting it will be changing the URI to which the request is POSTed to.

---------

 

I actually fixed the E00007 error without modifying any code by just using my Sandbox's Live API credentials and setting the plugin's "Environment" setting to "Test", which then POSTs to the correct Sandbox URI. But it's SUUUPER confusing because the plugin's developers basically skip over the whole distinction of the different accounts and environments in the documentation and the plugin itself and leave it up to the user to figure it out.

So hopefully they eventually update the plugin to reflect the distinction and also, I think you're safe to leave your updated plugin code alone and anytime you want to do testing for the sandbox account, change the Environment to "Test", even though you're using the Sandbox's "Live" credentials..

Let me know if this helped at all.

Thanks again for your original post, and have a good one!

Hi, thank you for your reply, it clears up a lot of confusion I have had.

A few questions remain though. First of all, is there any way to distinguish Sandbox "Live" or "Test" credentials? Aren't they the same, or do you have to regenerate the credentials after switching from Live to Test mode and vice-versa? (Is this what you are saying in the last line, that they can be used interchangeably between either live/test mode?)
Also, when you say 

"setting the plugin's "Environment" setting to "Test"", is this in the Sandbox account, or is this through this line?

        createtransactioncontroller.setenvironment(constants.SANDBOX)