osCommerce Community Support Forums: [CONTRIBUTION] Authorize Net AIM module - osCommerce Community Support Forums

Jump to content

Corporate Sponsor


  • (49 Pages)
  • +
  • 1
  • 2
  • 3
  • Last »
  • You cannot start a new topic
  • You cannot reply to this topic

[CONTRIBUTION] Authorize Net AIM module Advanced Integration Method module (GPL) Rate Topic: ***** 3 Votes

#1 User is offline   Vger Icon

  • Find Posts
  • Group: Community Member
  • Posts: 16,978
  • Joined: 22-December 03
  • Real Name:Miss Rhea Anthony
  • Location:Norfolk, United Kingdom

Posted 13 March 2006 - 05:48 PM

This is a new support thread created for a new and updated version of the AuthorizeNet AIM (Advanced Integration Method) module, released under GPL.

The module is located here:

http://www.oscommerc...y/contributions,4091

Vger

This post has been edited by Vger: 13 March 2006 - 05:58 PM

0

#2 User is offline   devosc Icon

  • Find Posts
  • Group: Community Member
  • Posts: 1,250
  • Joined: 01-July 03
  • Real Name:devosc

Posted 13 March 2006 - 09:13 PM

I havent installed and ran it but

Quote

// 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
0

#3 User is offline   devosc Icon

  • Find Posts
  • Group: Community Member
  • Posts: 1,250
  • Joined: 01-July 03
  • Real Name:devosc

Posted 13 March 2006 - 09:19 PM

	$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
0

#4 User is offline   Vger Icon

  • Find Posts
  • Group: Community Member
  • Posts: 16,978
  • Joined: 22-December 03
  • Real Name:Miss Rhea Anthony
  • Location:Norfolk, United Kingdom

Posted 14 March 2006 - 01:37 AM

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
1

#5 User is offline   rkoechel2004 Icon

  • Find Posts
  • Group: Community Member
  • Posts: 126
  • Joined: 22-May 04
  • Real Name:Ryan
  • Gender:Male
  • Location:Madison, WI

Posted 14 March 2006 - 07:47 PM

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?


View PostVger, on Mar 14 2006, 01:37 AM, said:

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
0

#6 User is offline   rkoechel2004 Icon

  • Find Posts
  • Group: Community Member
  • Posts: 126
  • Joined: 22-May 04
  • Real Name:Ryan
  • Gender:Male
  • Location:Madison, WI

Posted 14 March 2006 - 08:21 PM

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/m...ction.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']) . '&nbsp;' . 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');
}
}
?>


View Postrkoechel2004, on Mar 14 2006, 07:47 PM, said:

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
0

#7 User is offline   Vger Icon

  • Find Posts
  • Group: Community Member
  • Posts: 16,978
  • Joined: 22-December 03
  • Real Name:Miss Rhea Anthony
  • Location:Norfolk, United Kingdom

Posted 14 March 2006 - 11:50 PM

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

This post has been edited by Vger: 14 March 2006 - 11:51 PM

0

#8 User is offline   Vger Icon

  • Find Posts
  • Group: Community Member
  • Posts: 16,978
  • Joined: 22-December 03
  • Real Name:Miss Rhea Anthony
  • Location:Norfolk, United Kingdom

Posted 15 March 2006 - 01:08 PM

Just to update you. I have tried to replicate the problem you describe, but have been unable to do so.

Vger
0

#9 User is offline   ekbjewelry Icon

  • Find Posts
  • Group: Community Member
  • Posts: 7
  • Joined: 14-March 06
  • Real Name:EKB Jewelry

Post icon  Posted 15 March 2006 - 07:31 PM

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
0

#10 User is offline   inbox Icon

  • Find Posts
  • Group: Community Member
  • Posts: 31
  • Joined: 15-July 05
  • Real Name:Joe
  • Location:iowa

Posted 15 March 2006 - 07:40 PM

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
0

#11 User is offline   rkoechel2004 Icon

  • Find Posts
  • Group: Community Member
  • Posts: 126
  • Joined: 22-May 04
  • Real Name:Ryan
  • Gender:Male
  • Location:Madison, WI

Posted 15 March 2006 - 08:44 PM

Rhea-

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

Thanks
Ryan


View Postinbox, on Mar 15 2006, 07:40 PM, said:

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
0

#12 User is offline   rkoechel2004 Icon

  • Find Posts
  • Group: Community Member
  • Posts: 126
  • Joined: 22-May 04
  • Real Name:Ryan
  • Gender:Male
  • Location:Madison, WI

Posted 15 March 2006 - 09:01 PM

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


View Postrkoechel2004, on Mar 15 2006, 08:44 PM, said:

Rhea-

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

Thanks
Ryan

rkoechel2004
0

#13 User is offline   inbox Icon

  • Find Posts
  • Group: Community Member
  • Posts: 31
  • Joined: 15-July 05
  • Real Name:Joe
  • Location:iowa

Posted 15 March 2006 - 09:53 PM

View Postrkoechel2004, on Mar 15 2006, 04:01 PM, said:

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
0

#14 User is offline   rkoechel2004 Icon

  • Find Posts
  • Group: Community Member
  • Posts: 126
  • Joined: 22-May 04
  • Real Name:Ryan
  • Gender:Male
  • Location:Madison, WI

Posted 15 March 2006 - 10:05 PM

what do you have set as your field encapsulation character?

-Ryan

View Postinbox, on Mar 15 2006, 09:53 PM, said:

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
0

#15 User is offline   inbox Icon

  • Find Posts
  • Group: Community Member
  • Posts: 31
  • Joined: 15-July 05
  • Real Name:Joe
  • Location:iowa

Posted 15 March 2006 - 10:39 PM

View Postrkoechel2004, on Mar 15 2006, 05:05 PM, said:

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
0

#16 User is offline   kidd6801 Icon

  • Find Posts
  • Group: Community Member
  • Posts: 7
  • Joined: 30-December 05
  • Real Name:Corey H

Posted 15 March 2006 - 11:10 PM

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
0

#17 User is offline   ekbjewelry Icon

  • Find Posts
  • Group: Community Member
  • Posts: 7
  • Joined: 14-March 06
  • Real Name:EKB Jewelry

Post icon  Posted 15 March 2006 - 11:37 PM

View Postekbjewelry, on Mar 15 2006, 07:31 PM, said:

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://certificatio...ay/transact.dll
0

#18 User is offline   ekbjewelry Icon

  • Find Posts
  • Group: Community Member
  • Posts: 7
  • Joined: 14-March 06
  • Real Name:EKB Jewelry

Posted 15 March 2006 - 11:42 PM

View Postkidd6801, on Mar 15 2006, 11:10 PM, said:

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/bla...out_process.php

DOUBLE check your LOGIN/PWD

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

#19 User is offline   Vger Icon

  • Find Posts
  • Group: Community Member
  • Posts: 16,978
  • Joined: 22-December 03
  • Real Name:Miss Rhea Anthony
  • Location:Norfolk, United Kingdom

Posted 16 March 2006 - 12:52 PM

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
0

#20 User is offline   inbox Icon

  • Find Posts
  • Group: Community Member
  • Posts: 31
  • Joined: 15-July 05
  • Real Name:Joe
  • Location:iowa

Posted 16 March 2006 - 03:14 PM

View PostVger, on Mar 16 2006, 07:52 AM, said:

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
0

  • (49 Pages)
  • +
  • 1
  • 2
  • 3
  • Last »
  • You cannot start a new topic
  • You cannot reply to this topic