Crap! At least I'm not the only one...
I've been banging my head against the wall ALL DAY trying to figure this one out. Spoke to Authorize.net and they said I might have the wrong Terminal ID so I got in touch with Global and they gave me the right one. Now, when I click confirm order or whatever, the order is posting to my Authorize.net account fine - the credit card works great and the order shows up as confirmed/awaiting fulfillment or whatever in the Authorize.net unsettled transactions page. But the OSCommerce app is kicking me to my checkout_payment page - with https://secure.authorize.net/gateway/transact.dll in the URL field. I'm super confused but looking at the code in the authorize.net module (includes > modules > payment > authorizenet.php) I found this:
function before_process() {
global $HTTP_POST_VARS;
if ($HTTP_POST_VARS['x_response_code'] == '1') return;
if ($HTTP_POST_VARS['x_response_code'] == '2') {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_AUTHORIZENET_TEXT_DECLINED_MESSAGE), 'SSL', true, false));
}
// Code 3 is an error - but anything else is an error too (IMHO)
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_AUTHORIZENET_TEXT_ERROR_MESSAGE), 'SSL', true, false));
}
Which looks like if the response code from Authorize.net is anything but 1 then it is considered an error and is sending user to checkout_payment.php instead of checkout_success.php which is what you want it to do.
Sucks. Anyone got ANY ideas? <_<