I have created an application using authorize.net CIM. When using the app in test mode everything works fine. When I switch from test mode to live mode and paste in the correct user id and transaction key, it says: The API user name is invalid or not present.
It makes no sense. I'm 100% that the api user name and transaction key are correct.
I'm using the CIM codeigniter library. Here's the code dealing with the setup and initialization of CIM...
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/*
By: Spicer Matthews <[email protected]>
Company: Cloudmanic Labs, LLC
Website: http://www.cloudmanic.com
Based On Work From:
- John Conde <[email protected]>
- http://www.communitymx.com/content/article.cfm?page=4&cid=FDB14
*/
class AuthorizeCimLib
{
private $_CI;
private $_loginname;
private $_loginkey;
private $_response;
private $_resultCode;
private $_responseCode;
private $_responseText;
private $_success;
private $_error;
private $_url;
private $_parsedresponse;
private $_xml;
private $_call;
private $_responsecall;
private $_directresponse;
private $_items = array();
private $_params = array();
private $_validationmode = 'liveMode';
private $_errormsg = '';
private $_loginhost = 'api.authorize.net';
private $_testhost = 'apitest.authorize.net';
private $_loginpath = '/xml/v1/request.api';
//
// Construct.....
//
function __construct()
{
$this->_CI =& get_instance();
$this->_set_url();
$this->_set_default_params();
// If the config is setup properly use that to initialize
$this->_CI->config->load('authorizenet');
if($this->_CI->config->item('authorizenetname') &&
$this->_CI->config->item('authorizenetkey') &&
$this->_CI->config->item('authorizenettestmode'))
{
$this->initialize($this->_CI->config->item('authorizenetname'), $this->_CI->config->item('authorizenetkey'), $this->_CI->config->item('authorizenettestmode'));
}
log_message('debug', "AuthorizeCimLib Class Initialized");
}
//
// Call this function to setup the library variables. Such as API keys.
//
public function initialize($name, $key, $testmode = FALSE)
{
// Are we in test mode??
if($testmode)
{
$this->_set_testmode();
}
// Setup login names and keys.
$this->_loginname = $name;
$this->_loginkey = $key;
}
//
// Set validation mode.
//
public function set_validationmode($mode)
{
$types = array('none', 'testMode', 'liveMode', 'oldLiveMode');
if(in_array($mode, $types))
{
$this->_validationmode = $mode;
return 1;
}
else
{
log_message('debug', "AuthorizeCimLib Not A Valid Test Mode");
return 0;
}
}
//
// Get validation mode.
//
public function get_validationmode()
{
return $this->_validationmode;
}
//
// Set Parameters to send to Authorize.net
//
public function set_data($field, $value)
{
$this->_params[$field] = $value;
}
//
// C;ear Parameters data
//
public function clear_data()
{
$this->_params = array();
$this->_set_default_params();
}
I finally figured this out after hours of pulling my hair out!
There is some errors with the if statement logic in the
__construct
of the Library Class. What happens is that when it checks for the config options, if your test mode is set toFALSE
then it won't initialize... because then you are passing aFALSE
value to the if statement (this happens around line 49 in my file). What you can do to fix it is just remove that "test mode" check from the if statement.This is what it would look like:
I know this answer is kind of late in the game, but hope it helps.