Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

[CONTRIBUTION] Authorize Net AIM module


Vger

Recommended Posts

I havent installed and ran it but

// Calculate the next expected order id

$last_order_id = tep_db_query("select * from " . TABLE_ORDERS . " order by orders_id desc limit 1");

$new_order_id = $last_order_id->fields['orders_id'];

$new_order_id = ($new_order_id + 1);

Doesnt look like osCommerce MS2-2.2 code.

If I can recall it should look something like

	  $rQuery = tep_db_query("select orders_id from " . TABLE_ORDERS . " order by orders_id desc limit 1");
  $new_order_id = $rQuery['orders_id'] + 1;

"Any fool can know. The point is to understand." -- Albert Einstein

Link to comment
Share on other sites

	$rQuery = tep_db_query("select orders_id from " . TABLE_ORDERS . " order by orders_id desc limit 1");
$aQuery = tep_db_fetch_array($rQuery);
$new_order_id = $aQuery['orders_id'] + 1;

"Any fool can know. The point is to understand." -- Albert Einstein

Link to comment
Share on other sites

So I tried out this contribution. When I process do a live transaction it goes through as successfull to authorizenet but returns an error message to the customer:

 

- Your credit card could not be authorized for this reason. Please correct any information and try again or contact us for further assistance.

 

and on the oscommerce side it does go through as a succesful order.

 

Any thoughts?

 

 

I have added some additional information to the Install file so as to provide some extra info about switching between Test and Live mode.

 

Vger

rkoechel2004

Link to comment
Share on other sites

I thought i'd add some details to this:

 

I had authorizenet work before and uninstalled that module before installing this one. I have register globals set to off. and curl is compiled

 

here is the code of the authorizenet contrib i had working previously:

 

includes/modules/payment/authorizenet2.php:

 

<?php

/*

$Id$

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2003 osCommerce

 

Released under the GNU General Public License

*/

 

class authorizenet2 {

var $code, $title, $description, $enabled, $sort_order, $order_status, $form_action_url;

var $cc_card_type, $cc_card_number, $cc_expiry_month, $cc_expiry_year;

 

// class constructor

function authorizenet2() {

global $order;

 

$this->code = 'authorizenet2';

$this->title = MODULE_PAYMENT_AUTHORIZENET2_TEXT_TITLE;

$this->description = MODULE_PAYMENT_AUTHORIZENET2_TEXT_DESCRIPTION;

$this->enabled = ((MODULE_PAYMENT_AUTHORIZENET2_STATUS == 'True') ? true : false);

$this->sort_order = MODULE_PAYMENT_AUTHORIZENET2_SORT_ORDER;

 

if ((int)MODULE_PAYMENT_AUTHORIZENET2_ORDER_STATUS_ID > 0) {

$this->order_status = MODULE_PAYMENT_AUTHORIZENET2_ORDER_STATUS_ID;

}

 

if (is_object($order)) $this->update_status();

 

if (MODULE_PAYMENT_AUTHORIZENET2_GATEWAY_METHOD == 'SIM') {

$this->form_action_url = 'https://secure.authorize.net/gateway/transact.dll';

// } else $this->process_action_url = 'https://certification.authorize.net/gateway/transact.dll';

} else $this->process_action_url = 'https://secure.authorize.net/gateway/transact.dll';

}

 

// Authorize.net utility functions

// DISCLAIMER:

// This code is distributed in the hope that it will be useful, but without any warranty;

// without even the implied warranty of merchantability or fitness for a particular purpose.

 

// Main Interfaces:

//

// function InsertFP ($loginid, $txnkey, $amount, $sequence) - Insert HTML form elements required for SIM

// function CalculateFP ($loginid, $txnkey, $amount, $sequence, $tstamp) - Returns Fingerprint.

 

// compute HMAC-MD5

// Uses PHP mhash extension. Pl sure to enable the extension

// function hmac ($key, $data) {

// return (bin2hex (mhash(MHASH_MD5, $data, $key)));

//}

 

// Thanks is lance from http://www.php.net/manual/en/function.mhash.php

//lance_rushing at hot* spamfree *mail dot com

//27-Nov-2002 09:36

//

//Want to Create a md5 HMAC, but don't have hmash installed?

//

//Use this:

 

function hmac ($key, $data)

{

// RFC 2104 HMAC implementation for php.

// Creates an md5 HMAC.

// Eliminates the need to install mhash to compute a HMAC

// Hacked by Lance Rushing

 

$b = 64; // byte length for md5

if (strlen($key) > $B) {

$key = pack("H*",md5($key));

}

$key = str_pad($key, $b, chr(0x00));

$ipad = str_pad('', $b, chr(0x36));

$opad = str_pad('', $b, chr(0x5c));

$k_ipad = $key ^ $ipad ;

$k_opad = $key ^ $opad;

 

return md5($k_opad . pack("H*",md5($k_ipad . $data)));

}

// end code from lance (resume authorize.net code)

 

// Calculate and return fingerprint

// Use when you need control on the HTML output

function CalculateFP ($loginid, $txnkey, $amount, $sequence, $tstamp, $currency = "") {

return ($this->hmac ($txnkey, $loginid . "^" . $sequence . "^" . $tstamp . "^" . $amount . "^" . $currency));

}

 

// Inserts the hidden variables in the HTML FORM required for SIM

// Invokes hmac function to calculate fingerprint.

 

function InsertFP ($loginid, $txnkey, $amount, $sequence, $currency = "") {

$tstamp = time ();

$fingerprint = $this->hmac ($txnkey, $loginid . "^" . $sequence . "^" . $tstamp . "^" . $amount . "^" . $currency);

 

$vars = array('x_fp_sequence' => $sequence,

'x_fp_timestamp' => $tstamp,

'x_fp_hash' => $fingerprint);

 

return $vars;

}

// end authorize.net code

 

// class methods

function update_status() {

global $order;

 

if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_AUTHORIZENET2_ZONE > 0) ) {

$check_flag = false;

$check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_AUTHORIZENET2_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");

while ($check = tep_db_fetch_array($check_query)) {

if ($check['zone_id'] < 1) {

$check_flag = true;

break;

} elseif ($check['zone_id'] == $order->billing['zone_id']) {

$check_flag = true;

break;

}

}

 

if ($check_flag == false) {

$this->enabled = false;

}

}

}

 

function javascript_validation() {

$js = ' if (payment_value == "' . $this->code . '") {' . "\n" .

' var cc_owner = document.checkout_payment.authorizenet2_cc_owner.value;' . "\n" .

' var cc_number = document.checkout_payment.authorizenet2_cc_number.value;' . "\n" .

' if (cc_owner == "" || cc_owner.length < ' . CC_OWNER_MIN_LENGTH . ') {' . "\n" .

' error_message = error_message + "' . MODULE_PAYMENT_AUTHORIZENET2_TEXT_JS_CC_OWNER . '";' . "\n" .

' error = 1;' . "\n" .

' }' . "\n" .

' if (cc_number == "" || cc_number.length < ' . CC_NUMBER_MIN_LENGTH . ') {' . "\n" .

' error_message = error_message + "' . MODULE_PAYMENT_AUTHORIZENET2_TEXT_JS_CC_NUMBER . '";' . "\n" .

' error = 1;' . "\n" .

' }' . "\n" .

' }' . "\n";

 

return $js;

}

 

function selection() {

global $order;

 

if (MODULE_PAYMENT_AUTHORIZENET2_METHOD == 'Credit Card') {

for ($i=1; $i<13; $i++) {

$expires_month[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%B',mktime(0,0,0,$i,1,2000)));

}

 

$today = getdate();

for ($i=$today['year']; $i < $today['year']+10; $i++) {

$expires_year[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));

}

$selection = array('id' => $this->code,

'module' => $this->title,

'fields' => array(array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_CREDIT_CARD_OWNER,

'field' => tep_draw_input_field('authorizenet2_cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_CREDIT_CARD_NUMBER,

'field' => tep_draw_input_field('authorizenet2_cc_number')),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_CREDIT_CARD_EXPIRES,

'field' => tep_draw_pull_down_menu('authorizenet2_cc_expires_month', $expires_month, $today['mon']) . ' ' . tep_draw_pull_down_menu('authorizenet2_cc_expires_year', $expires_year))));

} else { // eCheck

$acct_types = array(array('id' => 'CHECKING', 'text' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_BANK_ACCT_TYPE_CHECK),

array('id' => 'SAVINGS', 'text' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_BANK_ACCT_TYPE_SAVINGS));

$org_types = array(array('id' => 'I', 'text' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_BANK_ACCT_ORG_PERSONAL),

array('id' => 'B', 'text' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_BANK_ACCT_ORG_BUSINESS));

$fields = array(array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_BANK_ACCT_NAME,

'field' => tep_draw_input_field('authorizenet2_bank_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_BANK_ACCT_TYPE,

'field' => tep_draw_pull_down_menu('authorizenet2_bank_acct_type', $acct_types)),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_BANK_NAME,

'field' => tep_draw_input_field('authorizenet2_bank_name')),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_BANK_ABA_CODE,

'field' => tep_image('images/symbol_route.gif') . tep_draw_input_field('authorizenet2_bank_aba') . tep_image('images/symbol_route.gif')),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_BANK_ACCT_NUM,

'field' => tep_draw_input_field('authorizenet2_bank_acct'). tep_image('images/symbol_account.gif')),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_SAMPLE_CHECK_NAME, 'field' => tep_image('images/checksample.gif')));

 

 

if (MODULE_PAYMENT_AUTHORIZENET2_WELLSFARGO == 'Yes') { // Add extra fields

$fields_wf = array(array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_WF_ORG,

'field' => tep_draw_pull_down_menu('wellsfargo_org_type', $org_types)),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_WF_INTRO,

'field' => ''),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_WF_TAXID,

'field' => tep_draw_input_field('wellsfargo_taxid')),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_WF_DLNUM,

'field' => tep_draw_input_field('wellsfargo_dlnum')),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_WF_STATE,

'field' => tep_draw_input_field('wellsfargo_state')),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_WF_DOB,

'field' => tep_draw_input_field('wellsfargo_dob')));

$fields = array_merge($fields, $fields_wf);

}

$selection = array('id' => $this->code,

'module' => $this->title,

'fields' => $fields);

}

return $selection;

}

 

function pre_confirmation_check() {

global $HTTP_POST_VARS;

 

if (MODULE_PAYMENT_AUTHORIZENET2_METHOD == 'Credit Card') {

include(DIR_WS_CLASSES . 'cc_validation.php');

 

$cc_validation = new cc_validation();

$result = $cc_validation->validate($HTTP_POST_VARS['authorizenet2_cc_number'], $HTTP_POST_VARS['authorizenet2_cc_expires_month'], $HTTP_POST_VARS['authorizenet2_cc_expires_year']);

$error = '';

switch ($result) {

case -1:

$error = sprintf(TEXT_CCVAL_ERROR_UNKNOWN_CARD, substr($cc_validation->cc_number, 0, 4));

break;

case -2:

case -3:

case -4:

$error = TEXT_CCVAL_ERROR_INVALID_DATE;

break;

case false:

$error = TEXT_CCVAL_ERROR_INVALID_NUMBER;

break;

}

 

if ( ($result == false) || ($result < 1) ) {

$payment_error_return = 'payment_error=' . $this->code . '&error=' . urlencode($error) . '&authorizenet2_cc_owner=' . urlencode($HTTP_POST_VARS['authorizenet2_cc_owner']) . '&authorizenet2_cc_expires_month=' . $HTTP_POST_VARS['authorizenet2_cc_expires_month'] . '&authorizenet2_cc_expires_year=' . $HTTP_POST_VARS['authorizenet2_cc_expires_year'];

 

tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, $payment_error_return, 'SSL', true, false));

}

 

$this->cc_card_type = $cc_validation->cc_type;

$this->cc_card_number = $cc_validation->cc_number;

$this->cc_expiry_month = $cc_validation->cc_expiry_month;

$this->cc_expiry_year = $cc_validation->cc_expiry_year;

}

}

 

function confirmation() {

global $HTTP_POST_VARS;

 

if (MODULE_PAYMENT_AUTHORIZENET2_METHOD == 'Credit Card') {

$confirmation = array('title' => $this->title . ': ' . $this->cc_card_type,

'fields' => array(array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_CREDIT_CARD_OWNER,

'field' => $HTTP_POST_VARS['authorizenet2_cc_owner']),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_CREDIT_CARD_NUMBER,

'field' => substr($this->cc_card_number, 0, 4) . str_repeat('X', (strlen($this->cc_card_number) - 8)) . substr($this->cc_card_number, -4)),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_CREDIT_CARD_EXPIRES,

'field' => strftime('%B, %Y', mktime(0,0,0,$this->cc_expiry_month, 1, $this->cc_expiry_year)))));

} else { // eCheck

$fields = array(array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_BANK_ACCT_NAME,

'field' => $HTTP_POST_VARS['authorizenet2_bank_owner']),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_BANK_ACCT_TYPE,

'field' => $HTTP_POST_VARS['authorizenet2_bank_acct_type']),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_BANK_NAME,

'field' => $HTTP_POST_VARS['authorizenet2_bank_name']),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_BANK_ABA_CODE,

'field' => $HTTP_POST_VARS['authorizenet2_bank_aba']),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_BANK_ACCT_NUM,

'field' => $HTTP_POST_VARS['authorizenet2_bank_acct']));

 

if (MODULE_PAYMENT_AUTHORIZENET2_WELLSFARGO == 'Yes') { // Add extra fields

if (tep_not_null($HTTP_POST_VARS['wellsfargo_taxid'])) {

$fields_wf = array(array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_WF_TAXID,

'field' => $HTTP_POST_VARS['wellsfargo_taxid']));

} else {

$fields_wf = array(array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_WF_DLNUM,

'field' => $HTTP_POST_VARS['wellsfargo_dlnum']),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_WF_STATE,

'field' => $HTTP_POST_VARS['wellsfargo_state']),

array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_WF_DOB,

'field' => $HTTP_POST_VARS['wellsfargo_dob']));

}

$fields = array_merge($fields, $fields_wf);

}

$confirmation = array('title' => $this->title . ' : eCheck',

'fields' => $fields);

}

return $confirmation;

}

 

function make_gateway_vars() {

global $HTTP_SERVER_VARS, $order, $customer_id;

 

if (MODULE_PAYMENT_AUTHORIZENET2_METHOD == 'Credit Card') {

$gw_pay_type = array('x_Card_Num' => $this->cc_card_number,

'x_Exp_Date' => $this->cc_expiry_month . substr($this->cc_expiry_year, -2),

'x_Type' => MODULE_PAYMENT_AUTHORIZENET2_CREDIT_CAPTURE,

'x_Method' => 'CC');

}

if (MODULE_PAYMENT_AUTHORIZENET2_METHOD == 'eCheck') {

$gw_pay_type = array('x_bank_acct_name' => $this->ec_bank_owner,

'x_bank_acct_type' => $this->ec_bank_acct_type,

'x_bank_name' => $this->ec_bank_name,

'x_bank_aba_code' => $this->ec_bank_aba,

'x_bank_acct_num' => $this->ec_bank_acct,

'x_Type' => 'AUTH_CAPTURE',

'x_echeck_type' => 'WEB',

'x_Method' => 'ECHECK');

 

if (MODULE_PAYMENT_AUTHORIZENET2_WELLSFARGO == 'Yes') { // Add extra fields

if (tep_not_null($this->wf_taxid)) {

$gw_pay_type2 = array('x_customer_tax_id' => $this->wf_taxid,

'x_customer_organization_type' => $this->wf_org_type);

} else {

$gw_pay_type2 = array('x_drivers_license_number' => $this->wf_dlnum,

'x_drivers_license_state' => $this->wf_state,

'x_drivers_license_dob' => $this->wf_dob,

'x_customer_organization_type' => $this->wf_org_type);

}

$gw_pay_type = array_merge($gw_pay_type, $gw_pay_type2);

}

}

$gw_common= array('x_Login' => MODULE_PAYMENT_AUTHORIZENET2_LOGIN,

'x_tran_key' => MODULE_PAYMENT_AUTHORIZENET2_TXNKEY,

'x_Amount' => number_format($order->info['total'], 2),

'x_Version' => '3.0',

'x_Cust_ID' => $customer_id,

'x_Email_Customer' => ((MODULE_PAYMENT_AUTHORIZENET2_EMAIL_CUSTOMER == 'True') ? 'TRUE': 'FALSE'),

'x_first_name' => $order->billing['firstname'],

'x_last_name' => $order->billing['lastname'],

'x_company' => $order->billing['company'],

'x_address' => $order->billing['street_address'],

'x_city' => $order->billing['city'],

'x_state' => $order->billing['state'],

'x_zip' => $order->billing['postcode'],

'x_country' => $order->billing['country']['title'],

'x_phone' => $order->customer['telephone'],

'x_email' => $order->customer['email_address'],

'x_ship_to_first_name' => $order->delivery['firstname'],

'x_ship_to_last_name' => $order->delivery['lastname'],

'x_ship_to_address' => $order->delivery['street_address'],

'x_ship_to_city' => $order->delivery['city'],

'x_ship_to_state' => $order->delivery['state'],

'x_ship_to_zip' => $order->delivery['postcode'],

'x_ship_to_country' => $order->delivery['country']['title'],

'x_Customer_IP' => $HTTP_SERVER_VARS['REMOTE_ADDR']);

 

$gw_vars = array_merge($gw_common, $gw_pay_type);

return $gw_vars;

}

 

function process_button() {

 

$process_button_string = '';

 

if (MODULE_PAYMENT_AUTHORIZENET2_GATEWAY_METHOD == 'SIM') {

$gw_vars = $this->make_gateway_vars();

$sequence = rand(1, 1000);

$gw_vars = array_merge($gw_vars, $this->InsertFP(MODULE_PAYMENT_AUTHORIZENET2_LOGIN, MODULE_PAYMENT_AUTHORIZENET2_TXNKEY, $gw_vars['X_Amount'], $sequence));

$gw_vars['x_Relay_URL'] = tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL', false);

$gw_vars['x_Relay_Response'] = 'TRUE';

$gw_vars['x_delim_data'] = 'TRUE';

$gw_vars['x_delim_char'] = '|';

if (MODULE_PAYMENT_AUTHORIZENET2_TESTMODE == 'Test') $gw_vars['x_Test_Request'] = 'TRUE';

$gw_vars[tep_session_name()] = tep_session_id();

reset($gw_vars);

while (list($key, $value) = each($gw_vars)) {

$process_button_string .= tep_draw_hidden_field($key, $value) . "\n";

}

} else {

if (MODULE_PAYMENT_AUTHORIZENET2_METHOD == 'Credit Card') {

$process_button_string .= tep_draw_hidden_field('authorizenet2_cc_number', $this->cc_card_number) . "\n";

$process_button_string .= tep_draw_hidden_field('authorizenet2_cc_expiry_month', $this->cc_expiry_month) . "\n";

$process_button_string .= tep_draw_hidden_field('authorizenet2_cc_expiry_year', $this->cc_expiry_year) . "\n";

} else { // eCheck

$process_button_string .= tep_draw_hidden_field('authorizenet2_bank_owner', $HTTP_POST_VARS['authorizenet2_bank_owner']) . "\n";

$process_button_string .= tep_draw_hidden_field('authorizenet2_bank_acct_type', $HTTP_POST_VARS['authorizenet2_bank_acct_type']) . "\n";

$process_button_string .= tep_draw_hidden_field('authorizenet2_bank_name', $HTTP_POST_VARS['authorizenet2_bank_name']) . "\n";

$process_button_string .= tep_draw_hidden_field('authorizenet2_bank_aba', $HTTP_POST_VARS['authorizenet2_bank_aba']) . "\n";

$process_button_string .= tep_draw_hidden_field('authorizenet2_bank_acct', $HTTP_POST_VARS['authorizenet2_bank_acct']) . "\n";

if (MODULE_PAYMENT_AUTHORIZENET2_WELLSFARGO == 'Yes') { // Add extra fields

$process_button_string .= tep_draw_hidden_field('wellsfargo_taxid', $HTTP_POST_VARS['wellsfargo_taxid']) . "\n";

$process_button_string .= tep_draw_hidden_field('wellsfargo_dlnum', $HTTP_POST_VARS['wellsfargo_dlnum']) . "\n";

$process_button_string .= tep_draw_hidden_field('wellsfargo_state', $HTTP_POST_VARS['wellsfargo_state']) . "\n";

$process_button_string .= tep_draw_hidden_field('wellsfargo_dob', $HTTP_POST_VARS['wellsfargo_dob']) . "\n";

$process_button_string .= tep_draw_hidden_field('wellsfargo_org_type', $HTTP_POST_VARS['wellsfargo_org_type']) . "\n";

}

}

}

return $process_button_string;

}

 

function before_process() {

global $HTTP_POST_VARS;

 

if (MODULE_PAYMENT_AUTHORIZENET2_GATEWAY_METHOD == 'AIM') {

if (MODULE_PAYMENT_AUTHORIZENET2_METHOD == 'Credit Card') {

$this->cc_card_number = $HTTP_POST_VARS['authorizenet2_cc_number'];

$this->cc_expiry_month = $HTTP_POST_VARS['authorizenet2_cc_expiry_month'];

$this->cc_expiry_year = $HTTP_POST_VARS['authorizenet2_cc_expiry_year'];

} else { // eCheck

$this->ec_bank_owner = $HTTP_POST_VARS['authorizenet2_bank_owner'];

$this->ec_bank_acct_type = $HTTP_POST_VARS['authorizenet2_bank_acct_type'];

$this->ec_bank_name = $HTTP_POST_VARS['authorizenet2_bank_name'];

$this->ec_bank_aba = $HTTP_POST_VARS['authorizenet2_bank_aba'];

$this->ec_bank_acct = $HTTP_POST_VARS['authorizenet2_bank_acct'];

if (MODULE_PAYMENT_AUTHORIZENET2_WELLSFARGO == 'Yes') { // Add extra fields

$this->wf_taxid = $HTTP_POST_VARS['wellsfargo_taxid'];

$this->wf_dlnum = $HTTP_POST_VARS['wellsfargo_dlnum'];

$this->wf_state = $HTTP_POST_VARS['wellsfargo_state'];

$this->wf_dob = $HTTP_POST_VARS['wellsfargo_dob'];

$this->wf_org_type = $HTTP_POST_VARS['wellsfargo_org_type'];

}

}

$gw_vars = $this->make_gateway_vars();

$sequence = rand(1, 1000);

// $gw_vars = array_merge($gw_vars, $this->InsertFP(MODULE_PAYMENT_AUTHORIZENET2_LOGIN, MODULE_PAYMENT_AUTHORIZENET2_TXNKEY, $gw_vars['X_Amount'], $sequence));

if (MODULE_PAYMENT_AUTHORIZENET2_TESTMODE == 'Test') $gw_vars['x_Test_Request'] = 'TRUE';

$gw_vars[tep_session_name()] = tep_session_id();

$gw_vars['x_delim_data'] = 'TRUE';

$gw_vars['x_delim_char'] = '|';

$gw_vars['x_relay_response'] = 'FALSE';

reset($gw_vars);

$curl_opts = $this->process_action_url;

while (list($key, $value) = each($gw_vars)) {

$curl_opts .= " -d " . $key . "=" . urlencode($value);

}

$handle = popen("/usr/bin/curl " . $curl_opts, "r");

$str = '';

while (!feof($handle)) {

$str .= fread($handle, 2048);

}

pclose($handle);

$result = explode("|", urldecode($str));

$x_response_code = $result[1];

$x_response_reason_text = $result[4];

} else {

$x_response_code = $HTTP_POST_VARS['x_response_code'];

$x_response_reason_text = $HTTP_POST_VARS['x_response_reason_text'];

}

 

if ($x_response_code == '1') return;

if ($x_response_code == '2') {

tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_AUTHORIZENET2_TEXT_DECLINED_MESSAGE.$x_response_reason_text), '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_AUTHORIZENET2_TEXT_ERROR_MESSAGE.$x_response_reason_text) . '&error=' . urlencode($x_response_reason_text), 'SSL', true, false));

}

 

function after_process() {

return false;

}

 

function get_error() {

global $HTTP_GET_VARS;

 

$error = array('title' => MODULE_PAYMENT_AUTHORIZENET2_TEXT_ERROR,

'error' => stripslashes(urldecode($HTTP_GET_VARS['error'])));

 

return $error;

}

 

function check() {

if (!isset($this->_check)) {

$check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_AUTHORIZENET2_STATUS'");

$this->_check = tep_db_num_rows($check_query);

}

return $this->_check;

}

 

function install() {

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Authorize.net Module', 'MODULE_PAYMENT_AUTHORIZENET2_STATUS', 'True', 'Do you want to accept Authorize.net payments?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Login Username', 'MODULE_PAYMENT_AUTHORIZENET2_LOGIN', 'testing', 'The login username used for the Authorize.net service', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Transaction Key', 'MODULE_PAYMENT_AUTHORIZENET2_TXNKEY', 'Test', 'Transaction Key used for encrypting TP data', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Mode', 'MODULE_PAYMENT_AUTHORIZENET2_TESTMODE', 'Test', 'Transaction mode used for processing orders', '6', '0', 'tep_cfg_select_option(array(\'Test\', \'Production\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Method', 'MODULE_PAYMENT_AUTHORIZENET2_METHOD', 'Credit Card', 'Transaction method used for processing orders', '6', '0', 'tep_cfg_select_option(array(\'Credit Card\', \'eCheck\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Gateway Method', 'MODULE_PAYMENT_AUTHORIZENET2_GATEWAY_METHOD', 'AIM', 'Gateway transaction method used for processing orders', '6', '0', 'tep_cfg_select_option(array(\'AIM\', \'SIM\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Customer Notifications', 'MODULE_PAYMENT_AUTHORIZENET2_EMAIL_CUSTOMER', 'False', 'Should Authorize.Net e-mail a receipt to the customer?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_AUTHORIZENET2_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_AUTHORIZENET2_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_AUTHORIZENET2_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Credit Card Mode', 'MODULE_PAYMENT_AUTHORIZENET2_CREDIT_CAPTURE', 'AUTH_CAPTURE', 'Credit Card processing method. Authorize Only or Authorize and Capture (Collect Funds)', '6', '0', 'tep_cfg_select_option(array(\'AUTH_CAPTURE\', \'AUTH_ONLY\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Wells Fargo Secure Source Account?', 'MODULE_PAYMENT_AUTHORIZENET2_WELLSFARGO', 'No', 'Set to YES if your account is with Wells Fargo', '6', '0', 'tep_cfg_select_option(array(\'No\', \'Yes\'), ', now())");

}

 

function remove() {

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");

}

 

function keys() {

return array('MODULE_PAYMENT_AUTHORIZENET2_STATUS', 'MODULE_PAYMENT_AUTHORIZENET2_LOGIN', 'MODULE_PAYMENT_AUTHORIZENET2_TXNKEY', 'MODULE_PAYMENT_AUTHORIZENET2_GATEWAY_METHOD', 'MODULE_PAYMENT_AUTHORIZENET2_TESTMODE', 'MODULE_PAYMENT_AUTHORIZENET2_METHOD', 'MODULE_PAYMENT_AUTHORIZENET2_CREDIT_CAPTURE', 'MODULE_PAYMENT_AUTHORIZENET2_WELLSFARGO', 'MODULE_PAYMENT_AUTHORIZENET2_EMAIL_CUSTOMER', 'MODULE_PAYMENT_AUTHORIZENET2_ZONE', 'MODULE_PAYMENT_AUTHORIZENET2_ORDER_STATUS_ID', 'MODULE_PAYMENT_AUTHORIZENET2_SORT_ORDER');

}

}

?>

 

 

So I tried out this contribution. When I process do a live transaction it goes through as successfull to authorizenet but returns an error message to the customer:

 

- Your credit card could not be authorized for this reason. Please correct any information and try again or contact us for further assistance.

 

and on the oscommerce side it does go through as a succesful order.

 

Any thoughts?

rkoechel2004

Link to comment
Share on other sites

Why did you post all those hundreds of lines of code from the old module? I'm sorry, I just don't see why that was necessary. They have nothing to do with this one. The module you used previously was for Authorize Net SIM and not Authorize Net AIM (Advanced Integration Method).

 

This module was pre-tested before release and worked fine, so please make sure that your account with Authorize Net is configured to use AIM and not SIM, that your site has SSL and that cURL is compiled into PHP.

 

If you then still have problems then please repost and I will look into it.

 

Vger

Edited by Vger
Link to comment
Share on other sites

Vger,

 

Ive followed the instructions on the new Authorize.net AIM module. I installed/uploaded and setup up everything correctly. I have a valid Authorize.net account, a ssl cert working and php compiled with-curl. I installed the module and entered the information needed. When confirming order i get

 

(TESTMODE) The merchant login ID or password is invalid or the account is inactive. - Your credit card could not be authorized for this reason. Please correct any information and try again or contact us for further assistance.

 

I know my loginID/pwd are correct for I was using the default module before (is that SIM or AIM?)

The only reason I installed this AIM module is because when I clicked confirm order on the other module it would *NOT* send me to a success page...it would just send me back to the login page, but a email confirmation was sent about the test order. Maybe you could give me some insight on that...

 

As for the new module the only thing I can think of is that you list this as requirement #2

2. Your site must establish an https connection to Authorize Net

 

my site is ssl and shows https, but does that mean it has a https connection to auth.net or do i have to setup that up somewhere else. I would really like to get this module working because it has CVV.

 

Thanks for any help you can give

Link to comment
Share on other sites

first thanx alot for this

 

but... it seems like i can't make it work i getting this error "- Your credit card could not be authorized for this reason. Please correct any information and try again or contact us for further assistance." while I'm trying to process credit card.

 

i try it in a different ways - in test mod or in production mod

 

my authorize.net in AIM

Link to comment
Share on other sites

Rhea-

 

What do you have set for your Default field seperator and field encapsulation character in authorizenet?

 

Thanks

Ryan

 

 

first thanx alot for this

 

but... it seems like i can't make it work i getting this error "- Your credit card could not be authorized for this reason. Please correct any information and try again or contact us for further assistance." while I'm trying to process credit card.

 

i try it in a different ways - in test mod or in production mod

 

my authorize.net in AIM

rkoechel2004

Link to comment
Share on other sites

I found the solution to the problems submitted above. You need to change your default field seperator to a comma, and make sure your transaction version is 3.1

 

 

Thanks for this contribution

 

-Ryan

 

 

Rhea-

 

What do you have set for your Default field seperator and field encapsulation character in authorizenet?

 

Thanks

Ryan

rkoechel2004

Link to comment
Share on other sites

I found the solution to the problems submitted above. You need to change your default field seperator to a comma, and make sure your transaction version is 3.1

Thanks for this contribution

 

-Ryan

 

 

i did that and now i'm getting this error

 

"|This transaction has been approved.| - Your credit card could not be authorized for this reason. Please correct any information and try again or contact us for further assistance."

 

the card is valid

Link to comment
Share on other sites

what do you have set as your field encapsulation character?

 

-Ryan

 

i did that and now i'm getting this error

 

"|This transaction has been approved.| - Your credit card could not be authorized for this reason. Please correct any information and try again or contact us for further assistance."

 

the card is valid

rkoechel2004

Link to comment
Share on other sites

what do you have set as your field encapsulation character?

 

-Ryan

 

 

comma (,)

 

the things is i do see the transaction in authorize.net but in oscommerce when i try to go to checkout_success i'm getting back to checkout_payment with the error on the top

Link to comment
Share on other sites

my phpinfo file shows php was compiled:

 

Configure Command './configure' '--build=x86_64-redhat-linux' '--host=x86_64-redhat-linux' ... '--disable-rpath' '--with-db4=/usr' '--with-curl' '--with-exec-dir=/usr/bin' ...

 

I have a valid Authorize.net account

 

I have an https connection to Authorize.net

 

Authorize.net is set up for AIM.

 

When I submit a credit card using this module I get 'Credit Card Error' it never even sends it to the pre cc processing verification form.

 

The only thing that i didn't do from your instructions page was to add the java, in fact i removed the hyperlink from the cvv area on the checkout.

 

Any other ideas what i might be doing wrong?

 

Thanks in advance,

 

KiDD

Link to comment
Share on other sites

Vger,

 

Ive followed the instructions on the new Authorize.net AIM module. I installed/uploaded and setup up everything correctly. I have a valid Authorize.net account, a ssl cert working and php compiled with-curl. I installed the module and entered the information needed. When confirming order i get

 

(TESTMODE) The merchant login ID or password is invalid or the account is inactive. - Your credit card could not be authorized for this reason. Please correct any information and try again or contact us for further assistance.

 

I know my loginID/pwd are correct for I was using the default module before (is that SIM or AIM?)

The only reason I installed this AIM module is because when I clicked confirm order on the other module it would *NOT* send me to a success page...it would just send me back to the login page, but a email confirmation was sent about the test order. Maybe you could give me some insight on that...

 

As for the new module the only thing I can think of is that you list this as requirement #2

2. Your site must establish an https connection to Authorize Net

 

my site is ssl and shows https, but does that mean it has a https connection to auth.net or do i have to setup that up somewhere else. I would really like to get this module working because it has CVV.

 

Thanks for any help you can give

 

OMG I got it to work !!!!

only problem is when they click confirm order it doesnt take them to a successful order page, but back to the payment information page!!! dammit.

 

how do i make it go to the successful order page after you click confirm order!?!?!

 

ps. the new testing a.net server is

https://certification.authorize.net/gateway/transact.dll

Link to comment
Share on other sites

my phpinfo file shows php was compiled:

 

Configure Command './configure' '--build=x86_64-redhat-linux' '--host=x86_64-redhat-linux' ... '--disable-rpath' '--with-db4=/usr' '--with-curl' '--with-exec-dir=/usr/bin' ...

 

I have a valid Authorize.net account

 

I have an https connection to Authorize.net

 

Authorize.net is set up for AIM.

 

When I submit a credit card using this module I get 'Credit Card Error' it never even sends it to the pre cc processing verification form.

 

The only thing that i didn't do from your instructions page was to add the java, in fact i removed the hyperlink from the cvv area on the checkout.

 

Any other ideas what i might be doing wrong?

 

Thanks in advance,

 

KiDD

 

Go to your A.net settings

Make sure Direct Response has

Delimited Respone has YES

Default Field Seperator is COMMA

Field Encapsulator is Double QUOTE

 

Receipt / Relay URLs should be to https://yoursite/blah/blah/checkout_process.php

 

DOUBLE check your LOGIN/PWD

 

why did you take out CVV. it helps BIGTIME agaisnt fraud.

Link to comment
Share on other sites

Whoa, after days of virtually no response they all come at once. I may end up regretting putting this module together! I'll try to answer them as best I can.

 

1. Default field seperator = comma (as some have found out)

2. Transaction version = 3.1 (this is AIM)

3. If you previously had an account it is probably set to SIM and you need to change this.

4. "Why did you take out CVV?" I didn't - but you do have to activate it in your account at Authorize Net.

5. "the new testing a.net server is https://certification." - only if you plan to apply for certification of the module, so that osCommerce can be added to the list of shopping carts displayed by Authorize Net. I don't plan to do this.

6. As it says in the Install file - if you wish to change your Authorize Net setting to Live and change your module setting to Live but to still run transactions against the Test server then you need to edit 'secure' to 'test' in the address in includes/modules/payment/authorizenet_aim.php

7. People on Windows servers may have problems with the path to cURL. There are several possible fixes for this general problem posted elsewhere in the forums, but you need to search for them.

 

Vger

Link to comment
Share on other sites

Whoa, after days of virtually no response they all come at once. I may end up regretting putting this module together! I'll try to answer them as best I can.

 

1. Default field seperator = comma (as some have found out)

2. Transaction version = 3.1 (this is AIM)

3. If you previously had an account it is probably set to SIM and you need to change this.

4. "Why did you take out CVV?" I didn't - but you do have to activate it in your account at Authorize Net.

5. "the new testing a.net server is https://certification." - only if you plan to apply for certification of the module, so that osCommerce can be added to the list of shopping carts displayed by Authorize Net. I don't plan to do this.

6. As it says in the Install file - if you wish to change your Authorize Net setting to Live and change your module setting to Live but to still run transactions against the Test server then you need to edit 'secure' to 'test' in the address in includes/modules/payment/authorizenet_aim.php

7. People on Windows servers may have problems with the path to cURL. There are several possible fixes for this general problem posted elsewhere in the forums, but you need to search for them.

 

Vger

 

 

 

after i done all that i still have problem with this contrib.

 

in checkout_confirmation after i type already the cc I'm trying to get to the checkout_success page to finish the purchase but I'm getting back to the payment page with the message on the top that the card is approval.

 

by this case I'm getting an confirmation email and i can see the transaction in a.net

Link to comment
Share on other sites

Have you got SSL properly installed on your website, because checkout_process.php is defined as an SSL page in the module, and it is this page that sends people on to the checkout_success.php page.

 

Vger

Link to comment
Share on other sites

Have you got SSL properly installed on your website, because checkout_process.php is defined as an SSL page in the module, and it is this page that sends people on to the checkout_success.php page.

 

Vger

 

 

yes i do i have SSL via godaddy

 

the a.net module that come with OSC work fine

Link to comment
Share on other sites

/*

##Go to your A.net settings

##Make sure Direct Response has

##Delimited Respone has YES

##Default Field Seperator is COMMA

##Field Encapsulator is Double QUOTE

 

##Receipt / Relay URLs should be to ##https://yoursite/blah/blah/checkout_process.php

 

##DOUBLE check your LOGIN/PWD

*/

 

Double checked everything here .. I had to change the seperator and the R/R urls

 

 

##why did you take out CVV. it helps BIGTIME agaisnt fraud.

 

I didn't remove CVV, Just the explaination link.

 

With these settings I am still getting the message Credit Card Error! on the CC input page.

 

I know it has to be something on my end.

 

Can you think of anything else I should try?

 

KiDD

Edited by kidd6801
Link to comment
Share on other sites

On the Developer Test Account I used to set this module up I entered nothing on the "Response/Receipt URL's" page, because the Return URL is already defined in the module as checkout_process.php

 

Don't forget that with this module - people stay on your website, they don't go to an Authorize Net page at all. Many of the settings in the Authorize Net interface are there to cover other connection methods.

 

Under Direct Response Delimiter - try setting it to 'No'. I have just rechecked the settings and I initially had it set to 'Yes' with a comma delimiter and nothing for Field Encapsulation Character, but then reset it to 'No'. Sorry if my earlier post caused confusion.

 

Vger

Link to comment
Share on other sites

the a.net module that come with OSC work fine

 

Then use that module if you are happy with it. This module is for the Advanced Integration Method (AIM) and not the Simple Integration Method (SIM).

 

It's my understanding that Authorise Net will discontinue SIM in the not too distant future.

 

Vger

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...