Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Linkpoint Basic no wrapper needed.


bradb007

Recommended Posts

I modified the authorize.net module to work with Linkpoint Basic. This means you don't have to buy the $95 wrapper. I don't know if others are interested in seeing this contribution. I'm just a newbie to oscommerce and not a programmer so I wasn't going to take the time to clean my code up if no-one is interested.

 

Brad

 

if interested email me without "NOSPAM":

[email protected]

~~~~~~~~~~~~~~~

Brad Bierman

Link to comment
Share on other sites

  • 2 months later...
...but will it work with the latest snapshot?  I understand that the whole payment/checkout system was redone in late November.  Just curious.

 

Thanks.

 

Laura

 

 

I've been working on updating the module with for the new checkout code. Linkpoint basic is very easy especially with the authorizenet as a guide. A few hours of changing field names to match the basic manual and you can have it functioning. The big hurdle is passing the osCid during checkout as a post instead of the default get, as Linkpoint will not accept a connection from a dynamic page (ie anything with a ?osCid= constantly changing). I believe the switch for this is in application_top.php.

 

Hope this helps

Brad

~~~~~~~~~~~~~~~

Brad Bierman

Link to comment
Share on other sites

  • 2 months later...

I've been testing this LinkPoint Basic plugin and it seems to be working good. The only thing it seems to be missing is a "Sort order of display" like the other payment modules have. I'm sure it's an easy fix, but a little over my designer head.

 

In your LinkPoint basic setup, make sure your thankyou URL is set to http://www.yoursite.com/catalog/checkout_process.php, when I tried to use my secure https URL I had problems, and although the order processed through linkpoint, it never showed up in my orders through my oscomm site.

 

Nice module!

MrJones

Link to comment
Share on other sites

  • 2 months later...

Hi,

Thank you for the contribution but I get the following error:

 

Fatal error: Call to undefined function: tep_db_prepare_input() in /home/cosmetic/public_html/shop/includes/modules/payment/linkpointbasic.php on line 53

 

Any ideas?

Thanks,

Paul

Link to comment
Share on other sites

  • 2 weeks later...

If you have linkpoint API running you will need to contact your cardservice rep in order to add html to your account ;-) 2 weeks to finally figure that out.

 

After Installing fixing all errors and then bam

 

Form Processing Error

 

The following errors occurred while processing your request:

 

It is not possible to order from the store at this time.

 

Contact the merchant for further information (error 1002).

 

If you have linkpoint basic then you can change your reffer URL under the admin section of linkpoint central. If you were using another shop type and and the api running you will have to add basic to your account

Link to comment
Share on other sites

  • 1 month later...

I have installed this, but I am having a problem where the cc expiration date is not passing to Link Point and therefore is declining all of the credit cards. Any help would be appreciate - I'm in a real bind! :cry:

 

Here is a copy of the code:

 

catalog/includes/module/payment

 

<?php

/*

$Id: linkpointbasic.php,v 1.10 2003/01/25 18:23:14 BRAD Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2002 osCommerce

 

Released under the GNU General Public License

 

*********

Basically this is the authorizenet.php module bundled with oscommerce, which

I edited a few fields and viola it works as Linkpoint Basic. I even left many of

the declared variables as linkpointbasic because as long as it works right...

 

INSTALLATION:

1.

Make sure you change the storename to your storenumber below marked with the //CHANGE ME. Generally follow the Linkpoint

Basic guide found on their website. You must set your checkou_confirmation url up in Linkpoint as the referrer.

If you want a seemless shopping experience, set Linkpoint basic up to transfer

automatically on success to checkout_process.php

 

2.

You must edit the shopping cart so that it does not have the session osCid appended to the url.

Make this change to checkout_payment.php:

<!-- body_text //-->

<td width="100%" valign="top"><?php echo tep_draw_form('checkout_payment', tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL', false), 'post', 'onsubmit="return check_form();"'); ?><table border="0" width="100%" cellspacing="0" cellpadding="0"><!--Brad added false to tep_href_link(checkout_payment) link so Linkpoint wont see sid-->

Note: I added a third parameter to the tep_href_link function so that it would not append the session id when transferring to the checkout_confirmation page.

 

*********

HELP:

If you need help contact me via private message in the osc official forums under userid bradb007:

 

 

Thank you,

Brad Bierman

**********

*/

 

class linkpointbasic {

var $code, $title, $description, $enabled;

var $cc_number, $cc_expires_month, $cc_expires_year, $cc_type;

 

// class constructor

function linkpointbasic() {

global $HTTP_POST_VARS;

 

$this->code = 'linkpointbasic';

$this->title = MODULE_PAYMENT_LINKPOINTBASIC_TEXT_TITLE;

$this->description = MODULE_PAYMENT_LINKPOINTBASIC_TEXT_DESCRIPTION;

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

$this->cc_number = tep_db_prepare_input($HTTP_POST_VARS['linkpointbasic_cc_number']);

$this->cc_type = tep_db_prepare_input($HTTP_POST_VARS['linkpointbasic_cc_type']);

if (MODULE_PAYMENT_LINKPOINTBASIC_TESTMODE == 'Test') {

$this->form_action_url = 'https://staging.linkpt.net/cgi-bin/hlppay';

} else {

$this->form_action_url = 'https://www.linkpointcentral.com/lpc/servlet/lppay';

}

$this->cc_expires_month = tep_db_prepare_input($HTTP_POST_VARS['linkpointbasic_cc_expires_month']);

$this->cc_expires_year = tep_db_prepare_input($HTTP_POST_VARS['linkpointbasic_cc_expires_year']);

}

 

// class methods

function javascript_validation() {

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

' var cc_owner = document.checkout_payment.linkpointbasic_cc_owner.value;' . "n" .

' var cc_number = document.checkout_payment.linkpointbasic_cc_number.value;' . "n" .

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

' error_message = error_message + "' . MODULE_PAYMENT_LINKPOINTBASIC_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_LINKPOINTBASIC_TEXT_JS_CC_NUMBER . '";' . "n" .

' error = 1;' . "n" .

' }' . "n" .

' }' . "n";

 

return $js;

}

 

function selection() {

/* ORIGINGAL

global $order;

 

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_LINKPOINTBASIC_TEXT_CREDIT_CARD_OWNER,

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

array('title' => MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_NUMBER,

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

array('title' => MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_EXPIRES,

'field' => tep_draw_pull_down_menu('linkpointbasic_cc_expires_month', $expires_month) . ' ' . tep_draw_pull_down_menu('linkpointbasic_cc_expires_year', $expires_year))));

 

return $selection; EOF_ORIGINAL*/

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

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

}

 

$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))); //Y changed to y

}

 

// ADDED FOR CREDIT CARD TYPE

//$credit_types_id = array('V'=>'Visa', 'M'=>'MasterCard' , 'A'=>'American Express' , 'D'=>'Discover');

//$credit_types_name = array('Visa' , 'MasterCard' , 'American Express' , 'Discover');

 

$credit_types_name = array(array('id' => 'V', 'text' => 'Visa'),

array('id' => 'M', 'text' => 'MasterCard'),

array('id' => 'A', 'text' => 'American Express'),

array('id' => 'D', 'text' => 'Discover'));

// ($i=1; $i<5; $i++) {

// $credit_types = array('id' => sprintf(array_shift($credit_types_id), $i), 'text' => sprintf(array_shift($credit_types_name), $i));

//}

 

/*before new checkout code

$selection_string = '<table border="0" cellspacing="0" cellpadding="0" width="100%">' . "n" .

' <tr>' . "n" .

' <td class="main"> ' . MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_NUMBER . ' </td>' . "n" .

' <td class="main"> ' . tep_draw_input_field('linkpointbasic_cc_number') . ' </td>' . "n" .

' </tr>' . "n" .

' <td class="main"> ' . MODULE_PAYMENT_LINKPOINTBASIC_TEXT_TYPE . ' </td>' . "n" .

' <td class="main"> ' . tep_draw_pull_down_menu('linkpointbasic_cc_type', $credit_types_name) . ' </td>' . "n" .

' </tr>' . "n" .

' <tr>' . "n" .

' <td class="main"> ' . MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_EXPIRES . ' </td>' . "n" .

' <td class="main"> ' . tep_draw_pull_down_menu('linkpointbasic_cc_expires_month', $expires_month, date('m')) . ' / ' . tep_draw_pull_down_menu('linkpointbasic_cc_expires_year', $expires_year) . '</td>' . "n" .

' </tr>' . "n" .

'</table>' . "n";

* END BEFORE NEW CHECKOUT CODE*/

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

'module' => $this->title,

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

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

array('title' => MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_NUMBER,

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

array('title' => MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_TYPE,

'field' => tep_draw_pull_down_menu('linkpointbasic_cc_type', $credit_types_name)),

array('title' => MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_EXPIRES,

'field' => tep_draw_pull_down_menu('linkpointbasic_cc_expires_month', $expires_month) . ' ' . tep_draw_pull_down_menu('linkpointbasic_cc_expires_year', $expires_year))));

return $selection;

}

 

function pre_confirmation_check() {

global $HTTP_POST_VARS;

 

include(DIR_WS_CLASSES . 'cc_validation.php');

 

$cc_validation = new cc_validation();

$result = $cc_validation->validate($HTTP_POST_VARS['linkpointbasic_cc_number'], $HTTP_POST_VARS['linkpointbasic_cc_expires_month'], $HTTP_POST_VARS['linkpointbasic_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) . '&linkpointbasic_cc_owner=' . urlencode($HTTP_POST_VARS['linkpointbasic_cc_owner']) . '&linkpointbasic_cc_expires_month=' . $HTTP_POST_VARS['linkpointbasic_cc_expires_month'] . '&linkpointbasic_cc_expires_year=' . $HTTP_POST_VARS['linkpointbasic_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;

 

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

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

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

array('title' => MODULE_PAYMENT_LINKPOINTBASIC_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_LINKPOINTBASIC_TEXT_CREDIT_CARD_EXPIRES,

'field' => strftime('%B, %Y', mktime(0,0,0,$HTTP_POST_VARS['linkpointbasic_cc_expires_month'], 1, '20' . $HTTP_POST_VARS['linkpointbasic_cc_expires_year']))))); //changed to y from Y

 

return $confirmation;

}

 

function process_button() {

global $HTTP_SERVER_VARS, $CardNumber, $order, $customer_id;

 

$process_button_string = tep_draw_hidden_field('cardnumber', $this->cc_card_number) .

tep_draw_hidden_field('expmonth', $this->cc_expiry_month) .

tep_draw_hidden_field('expyear', $this->cc_expiry_year) .

//NEED TO GET: cctype

tep_draw_hidden_field('cctype', $this->cc_type) .

tep_draw_hidden_field('chargetotal', number_format($order->info['total'], 2)) .

// NEED TO GET : subtotal tax & shipping charges

// number_format($total_cost + $total_tax + $shipping_cost, 2)

//tep_draw_hidden_field('shipping', number_format($shipping_cost,2)) .

//tep_draw_hidden_field('tax', number_format($total_tax,2)) .

tep_draw_hidden_field('customerid', $customer_id) .

tep_draw_hidden_field('userid', $customer_id) .

tep_draw_hidden_field('x_Email_Customer', (MODULE_PAYMENT_LINKPOINTBASIC_EMAIL == '1'? 'TRUE': 'FALSE')) .

tep_draw_hidden_field('x_Email_Merchant', (MODULE_PAYMENT_LINKPOINTBASIC_EMAIL_MERCHANT == '1'? 'TRUE': 'FALSE')) .

tep_draw_hidden_field('bname', $order->billing['firstname'] . ' ' . $order->billing['lastname']) .

tep_draw_hidden_field('baddr1', $order->customer['street_address']) .

tep_draw_hidden_field('baddr2', $order->delivery['suburb']) .

tep_draw_hidden_field('bcity', $order->customer['city']) .

tep_draw_hidden_field('bstate', $order->customer['state']) .

tep_draw_hidden_field('bzip', $order->customer['postcode']) .

//tep_draw_hidden_field('x_country', $order->customer['country']['title']) .

tep_draw_hidden_field('phone', $order->customer['telephone']) .

tep_draw_hidden_field('email', $order->customer['email_address']) .

tep_draw_hidden_field('sname', $order->delivery['firstname'] .' '. $order->delivery['lastname']) .

tep_draw_hidden_field('saddr1', $order->delivery['street_address']) .

tep_draw_hidden_field('saddr2', $order->delivery['suburb']) .

tep_draw_hidden_field('scity', $order->delivery['city']) .

tep_draw_hidden_field('sstate', $order->delivery['state']) .

tep_draw_hidden_field('szip', $order->delivery['postcode']) .

tep_draw_hidden_field('x_Customer_IP', $HTTP_SERVER_VARS['REMOTE_ADDR']) .

tep_draw_hidden_field('2000', 'Submit') .

tep_draw_hidden_field('mode', 'payonly');

 

if (MODULE_PAYMENT_LINKPOINTBASIC_TESTMODE == 'Test') {

$process_button_string .= tep_draw_hidden_field('storename', '817914'); //CHANGE ME

} else {

$process_button_string .= tep_draw_hidden_field('storename', '817914'); //CHANGE ME

}

$process_button_string .= tep_draw_hidden_field(tep_session_name(), tep_session_id());

 

return $process_button_string;

}

 

function before_process() {

global $HTTP_POST_VARS;

 

//if ($HTTP_POST_VARS['status'] != 'Approved') {

// tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_LINKPOINTBASIC_TEXT_ERROR_MESSAGE), 'SSL', true, false));

//}

}

 

function after_process() {

return false;

}

 

function get_error() {

global $HTTP_GET_VARS;

 

$error = array('title' => MODULE_PAYMENT_LINKPOINTBASIC_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_LINKPOINTBASIC_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_LINKPOINTBASIC_STATUS', 'True', 'Do you want to accept Linkpoint Basic 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_LINKPOINTBASIC_LOGIN', 'testing', 'The login username used for the Linkpoint Basic service', '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_LINKPOINTBASIC_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_LINKPOINTBASIC_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 ('Customer Notifications', 'MODULE_PAYMENT_LINKPOINTBASIC_EMAIL_CUSTOMER', 'False', 'Should Linkpoint Basic 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, set_function, date_added) values ('Merchant Notifications', 'MODULE_PAYMENT_LINKPOINTBASIC_EMAIL_MERCHANT', 'True', 'Should Linkpoint Basic e-mail a receipt to the store owner?', '6', '0', 'tep_cfg_select_option(array('True', 'False'), ', now())");

}

 

function remove() {

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

}

 

function keys() {

return array('MODULE_PAYMENT_LINKPOINTBASIC_STATUS', 'MODULE_PAYMENT_LINKPOINTBASIC_LOGIN', 'MODULE_PAYMENT_LINKPOINTBASIC_TESTMODE', 'MODULE_PAYMENT_LINKPOINTBASIC_METHOD', 'MODULE_PAYMENT_LINKPOINTBASIC_EMAIL_CUSTOMER', 'MODULE_PAYMENT_LINKPOINTBASIC_EMAIL_MERCHANT');

}

}

?>

 

 

catalog/includes/lanquages/english/modules/payment

 

<?php

/*

$Id: linpointbasic.php,v 1.10 2003/01/25 22:40:24 BRAD Exp $

 

The Exchange Project - Community Made Shopping!

http://www.theexchangeproject.org

 

Copyright © 2000,2001 The Exchange Project

 

Released under the GNU General Public License

*/

 

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_TITLE', 'FSTC Credit Card Processing');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_DESCRIPTION', 'Credit Card Test Info:<br><br>CC#: 4111111111111111<br>Expiry: Any');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_TYPE', 'Type:');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_NUMBER', 'Credit Card Number:');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_OWNER', 'Credit Card Name:');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_TYPE', 'Credit Card Type:');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_EXPIRES', 'Credit Card Expiry Date:');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_JS_CC_NUMBER', '* The credit card number must be at least ' . CC_NUMBER_MIN_LENGTH . ' characters.n');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_ERROR_MESSAGE', 'There has been an error processing you credit card, please try again.');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_ERROR', 'Credit Card Error!');

?>

Link to comment
Share on other sites

I have installed this, but I am having a problem where the cc expiration date is not passing to Link Point and therefore is declining all of the credit cards. Any help would be appreciate - I'm in a real bind! :cry:

 

Here is a copy of the code:

 

catalog/includes/module/payment

 

<?php

/*

$Id: linkpointbasic.php,v 1.10 2003/01/25 18:23:14 BRAD Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2002 osCommerce

 

Released under the GNU General Public License

 

*********

Basically this is the authorizenet.php module bundled with oscommerce, which

I edited a few fields and viola it works as Linkpoint Basic. I even left many of

the declared variables as linkpointbasic because as long as it works right...

 

INSTALLATION:

1.

Make sure you change the storename to your storenumber below marked with the //CHANGE ME. Generally follow the Linkpoint

Basic guide found on their website. You must set your checkou_confirmation url up in Linkpoint as the referrer.

If you want a seemless shopping experience, set Linkpoint basic up to transfer

automatically on success to checkout_process.php

 

2.

You must edit the shopping cart so that it does not have the session osCid appended to the url.

Make this change to checkout_payment.php:

<!-- body_text //-->

<td width="100%" valign="top"><?php echo tep_draw_form('checkout_payment', tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL', false), 'post', 'onsubmit="return check_form();"'); ?><table border="0" width="100%" cellspacing="0" cellpadding="0"><!--Brad added false to tep_href_link(checkout_payment) link so Linkpoint wont see sid-->

Note: I added a third parameter to the tep_href_link function so that it would not append the session id when transferring to the checkout_confirmation page.

 

*********

HELP:

If you need help contact me via private message in the osc official forums under userid bradb007:

 

 

Thank you,

Brad Bierman

**********

*/

 

class linkpointbasic {

var $code, $title, $description, $enabled;

var $cc_number, $cc_expires_month, $cc_expires_year, $cc_type;

 

// class constructor

function linkpointbasic() {

global $HTTP_POST_VARS;

 

$this->code = 'linkpointbasic';

$this->title = MODULE_PAYMENT_LINKPOINTBASIC_TEXT_TITLE;

$this->description = MODULE_PAYMENT_LINKPOINTBASIC_TEXT_DESCRIPTION;

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

$this->cc_number = tep_db_prepare_input($HTTP_POST_VARS['linkpointbasic_cc_number']);

$this->cc_type = tep_db_prepare_input($HTTP_POST_VARS['linkpointbasic_cc_type']);

if (MODULE_PAYMENT_LINKPOINTBASIC_TESTMODE == 'Test') {

$this->form_action_url = 'https://staging.linkpt.net/cgi-bin/hlppay';

} else {

$this->form_action_url = 'https://www.linkpointcentral.com/lpc/servlet/lppay';

}

$this->cc_expires_month = tep_db_prepare_input($HTTP_POST_VARS['linkpointbasic_cc_expires_month']);

$this->cc_expires_year = tep_db_prepare_input($HTTP_POST_VARS['linkpointbasic_cc_expires_year']);

}

 

// class methods

function javascript_validation() {

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

' var cc_owner = document.checkout_payment.linkpointbasic_cc_owner.value;' . "n" .

' var cc_number = document.checkout_payment.linkpointbasic_cc_number.value;' . "n" .

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

' error_message = error_message + "' . MODULE_PAYMENT_LINKPOINTBASIC_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_LINKPOINTBASIC_TEXT_JS_CC_NUMBER . '";' . "n" .

' error = 1;' . "n" .

' }' . "n" .

' }' . "n";

 

return $js;

}

 

function selection() {

/* ORIGINGAL

global $order;

 

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_LINKPOINTBASIC_TEXT_CREDIT_CARD_OWNER,

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

array('title' => MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_NUMBER,

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

array('title' => MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_EXPIRES,

'field' => tep_draw_pull_down_menu('linkpointbasic_cc_expires_month', $expires_month) . ' ' . tep_draw_pull_down_menu('linkpointbasic_cc_expires_year', $expires_year))));

 

return $selection; EOF_ORIGINAL*/

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

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

}

 

$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))); //Y changed to y

}

 

// ADDED FOR CREDIT CARD TYPE

//$credit_types_id = array('V'=>'Visa', 'M'=>'MasterCard' , 'A'=>'American Express' , 'D'=>'Discover');

//$credit_types_name = array('Visa' , 'MasterCard' , 'American Express' , 'Discover');

 

$credit_types_name = array(array('id' => 'V', 'text' => 'Visa'),

array('id' => 'M', 'text' => 'MasterCard'),

array('id' => 'A', 'text' => 'American Express'),

array('id' => 'D', 'text' => 'Discover'));

// ($i=1; $i<5; $i++) {

// $credit_types = array('id' => sprintf(array_shift($credit_types_id), $i), 'text' => sprintf(array_shift($credit_types_name), $i));

//}

 

/*before new checkout code

$selection_string = '<table border="0" cellspacing="0" cellpadding="0" width="100%">' . "n" .

' <tr>' . "n" .

' <td class="main"> ' . MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_NUMBER . ' </td>' . "n" .

' <td class="main"> ' . tep_draw_input_field('linkpointbasic_cc_number') . ' </td>' . "n" .

' </tr>' . "n" .

' <td class="main"> ' . MODULE_PAYMENT_LINKPOINTBASIC_TEXT_TYPE . ' </td>' . "n" .

' <td class="main"> ' . tep_draw_pull_down_menu('linkpointbasic_cc_type', $credit_types_name) . ' </td>' . "n" .

' </tr>' . "n" .

' <tr>' . "n" .

' <td class="main"> ' . MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_EXPIRES . ' </td>' . "n" .

' <td class="main"> ' . tep_draw_pull_down_menu('linkpointbasic_cc_expires_month', $expires_month, date('m')) . ' / ' . tep_draw_pull_down_menu('linkpointbasic_cc_expires_year', $expires_year) . '</td>' . "n" .

' </tr>' . "n" .

'</table>' . "n";

* END BEFORE NEW CHECKOUT CODE*/

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

'module' => $this->title,

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

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

array('title' => MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_NUMBER,

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

array('title' => MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_TYPE,

'field' => tep_draw_pull_down_menu('linkpointbasic_cc_type', $credit_types_name)),

array('title' => MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_EXPIRES,

'field' => tep_draw_pull_down_menu('linkpointbasic_cc_expires_month', $expires_month) . ' ' . tep_draw_pull_down_menu('linkpointbasic_cc_expires_year', $expires_year))));

return $selection;

}

 

function pre_confirmation_check() {

global $HTTP_POST_VARS;

 

include(DIR_WS_CLASSES . 'cc_validation.php');

 

$cc_validation = new cc_validation();

$result = $cc_validation->validate($HTTP_POST_VARS['linkpointbasic_cc_number'], $HTTP_POST_VARS['linkpointbasic_cc_expires_month'], $HTTP_POST_VARS['linkpointbasic_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) . '&linkpointbasic_cc_owner=' . urlencode($HTTP_POST_VARS['linkpointbasic_cc_owner']) . '&linkpointbasic_cc_expires_month=' . $HTTP_POST_VARS['linkpointbasic_cc_expires_month'] . '&linkpointbasic_cc_expires_year=' . $HTTP_POST_VARS['linkpointbasic_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;

 

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

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

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

array('title' => MODULE_PAYMENT_LINKPOINTBASIC_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_LINKPOINTBASIC_TEXT_CREDIT_CARD_EXPIRES,

'field' => strftime('%B, %Y', mktime(0,0,0,$HTTP_POST_VARS['linkpointbasic_cc_expires_month'], 1, '20' . $HTTP_POST_VARS['linkpointbasic_cc_expires_year']))))); //changed to y from Y

 

return $confirmation;

}

 

function process_button() {

global $HTTP_SERVER_VARS, $CardNumber, $order, $customer_id;

 

$process_button_string = tep_draw_hidden_field('cardnumber', $this->cc_card_number) .

tep_draw_hidden_field('expmonth', $this->cc_expiry_month) .

tep_draw_hidden_field('expyear', $this->cc_expiry_year) .

//NEED TO GET: cctype

tep_draw_hidden_field('cctype', $this->cc_type) .

tep_draw_hidden_field('chargetotal', number_format($order->info['total'], 2)) .

// NEED TO GET : subtotal tax & shipping charges

// number_format($total_cost + $total_tax + $shipping_cost, 2)

//tep_draw_hidden_field('shipping', number_format($shipping_cost,2)) .

//tep_draw_hidden_field('tax', number_format($total_tax,2)) .

tep_draw_hidden_field('customerid', $customer_id) .

tep_draw_hidden_field('userid', $customer_id) .

tep_draw_hidden_field('x_Email_Customer', (MODULE_PAYMENT_LINKPOINTBASIC_EMAIL == '1'? 'TRUE': 'FALSE')) .

tep_draw_hidden_field('x_Email_Merchant', (MODULE_PAYMENT_LINKPOINTBASIC_EMAIL_MERCHANT == '1'? 'TRUE': 'FALSE')) .

tep_draw_hidden_field('bname', $order->billing['firstname'] . ' ' . $order->billing['lastname']) .

tep_draw_hidden_field('baddr1', $order->customer['street_address']) .

tep_draw_hidden_field('baddr2', $order->delivery['suburb']) .

tep_draw_hidden_field('bcity', $order->customer['city']) .

tep_draw_hidden_field('bstate', $order->customer['state']) .

tep_draw_hidden_field('bzip', $order->customer['postcode']) .

//tep_draw_hidden_field('x_country', $order->customer['country']['title']) .

tep_draw_hidden_field('phone', $order->customer['telephone']) .

tep_draw_hidden_field('email', $order->customer['email_address']) .

tep_draw_hidden_field('sname', $order->delivery['firstname'] .' '. $order->delivery['lastname']) .

tep_draw_hidden_field('saddr1', $order->delivery['street_address']) .

tep_draw_hidden_field('saddr2', $order->delivery['suburb']) .

tep_draw_hidden_field('scity', $order->delivery['city']) .

tep_draw_hidden_field('sstate', $order->delivery['state']) .

tep_draw_hidden_field('szip', $order->delivery['postcode']) .

tep_draw_hidden_field('x_Customer_IP', $HTTP_SERVER_VARS['REMOTE_ADDR']) .

tep_draw_hidden_field('2000', 'Submit') .

tep_draw_hidden_field('mode', 'payonly');

 

if (MODULE_PAYMENT_LINKPOINTBASIC_TESTMODE == 'Test') {

$process_button_string .= tep_draw_hidden_field('storename', '817914'); //CHANGE ME

} else {

$process_button_string .= tep_draw_hidden_field('storename', '817914'); //CHANGE ME

}

$process_button_string .= tep_draw_hidden_field(tep_session_name(), tep_session_id());

 

return $process_button_string;

}

 

function before_process() {

global $HTTP_POST_VARS;

 

//if ($HTTP_POST_VARS['status'] != 'Approved') {

// tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_LINKPOINTBASIC_TEXT_ERROR_MESSAGE), 'SSL', true, false));

//}

}

 

function after_process() {

return false;

}

 

function get_error() {

global $HTTP_GET_VARS;

 

$error = array('title' => MODULE_PAYMENT_LINKPOINTBASIC_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_LINKPOINTBASIC_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_LINKPOINTBASIC_STATUS', 'True', 'Do you want to accept Linkpoint Basic 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_LINKPOINTBASIC_LOGIN', 'testing', 'The login username used for the Linkpoint Basic service', '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_LINKPOINTBASIC_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_LINKPOINTBASIC_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 ('Customer Notifications', 'MODULE_PAYMENT_LINKPOINTBASIC_EMAIL_CUSTOMER', 'False', 'Should Linkpoint Basic 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, set_function, date_added) values ('Merchant Notifications', 'MODULE_PAYMENT_LINKPOINTBASIC_EMAIL_MERCHANT', 'True', 'Should Linkpoint Basic e-mail a receipt to the store owner?', '6', '0', 'tep_cfg_select_option(array('True', 'False'), ', now())");

}

 

function remove() {

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

}

 

function keys() {

return array('MODULE_PAYMENT_LINKPOINTBASIC_STATUS', 'MODULE_PAYMENT_LINKPOINTBASIC_LOGIN', 'MODULE_PAYMENT_LINKPOINTBASIC_TESTMODE', 'MODULE_PAYMENT_LINKPOINTBASIC_METHOD', 'MODULE_PAYMENT_LINKPOINTBASIC_EMAIL_CUSTOMER', 'MODULE_PAYMENT_LINKPOINTBASIC_EMAIL_MERCHANT');

}

}

?>

 

 

catalog/includes/lanquages/english/modules/payment

 

<?php

/*

$Id: linpointbasic.php,v 1.10 2003/01/25 22:40:24 BRAD Exp $

 

The Exchange Project - Community Made Shopping!

http://www.theexchangeproject.org

 

Copyright © 2000,2001 The Exchange Project

 

Released under the GNU General Public License

*/

 

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_TITLE', 'FSTC Credit Card Processing');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_DESCRIPTION', 'Credit Card Test Info:<br><br>CC#: 4111111111111111<br>Expiry: Any');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_TYPE', 'Type:');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_NUMBER', 'Credit Card Number:');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_OWNER', 'Credit Card Name:');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_TYPE', 'Credit Card Type:');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_EXPIRES', 'Credit Card Expiry Date:');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_JS_CC_NUMBER', '* The credit card number must be at least ' . CC_NUMBER_MIN_LENGTH . ' characters.n');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_ERROR_MESSAGE', 'There has been an error processing you credit card, please try again.');

define('MODULE_PAYMENT_LINKPOINTBASIC_TEXT_ERROR', 'Credit Card Error!');

?>

Link to comment
Share on other sites

i think if you view the source on your checkout_confirmation.php you will see that perhaps oscommerce is sending a 4 digit year instead of the required two digit year....

 

there is a function outside of linkpoint ( i think) that does this, you will have to look around--i didn't document what i did for certain--i was tweaking a lot of stuff, but something did the trick...

 

if i can track it down exactly, i will post again.

Link to comment
Share on other sites

  • 4 weeks later...

Has anyone figured out how to use the information sent back from linkpoint basic yet? I want to be able to decline a purchase if the cvv number doesn't match or if the address verification doesn't match. Fraud prevention is a big deal when you have a service with realtime software downloads.

 

thanks

Link to comment
Share on other sites

I was under the impression that the transaction would be declined if the billing address didn't match, and if the CVV number is used and does not match the transaction would be declined as well. You should contact LinkPoint support to verify how the process works.

 

Dude

Link to comment
Share on other sites

I was under the impression that the transaction would be declined if the billing address didn't match, and if the CVV number is used and does not match the transaction would be declined as well. You should contact LinkPoint support to verify how the process works.

 

Dude

 

Wrong impression:-) The linkpoint basic will NOT decline if address doesn't match. Not sure on the CVV number but it will probably go through even if that doesn't match too. Link Point can't (or won't) change that:-( (I've called) Also how do I pass the CVV number? I got the form to ask for it but can't seem to figure out how to add the value to the Hidden information that gets passed to LinkPoint Basic.

 

Thanks

Link to comment
Share on other sites

I also forgot to ask: How do you get the cart to change the order type from pending to delivered when you get confirmation from Link Point that the charge has been run through?

Link to comment
Share on other sites

What is the field code that LinkPoint requires for passing CVV? Also... post your code for gathering the CVV on the payment page and I'll tell you what to add to have it pass the results to linkpoint.

 

Dude

 

To answer the question above regarding the year being 2 or 4 digits...

 

$HTTP_POST_VARS['linkpointbasic_cc_expires_year']))))); //changed to y from Y

 

Change under function confirmation()

Link to comment
Share on other sites

What is the field code that LinkPoint requires for passing CVV? Also... post your code for gathering the CVV on the payment page and I'll tell you what to add to have it pass the results to linkpoint.

 

Here is the code for gathering the CVV number:

 

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

                        'module' => $this->title,

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

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

                                          array('title' => MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_NUMBER,

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

            array('title' => MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_TYPE,

                                                'field' => tep_draw_pull_down_menu('linkpointbasic_cc_type', $credit_types_name)),

         array('title' => MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_CVV,

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

                                          array('title' => MODULE_PAYMENT_LINKPOINTBASIC_TEXT_CREDIT_CARD_EXPIRES,

                                                'field' => tep_draw_pull_down_menu('linkpointbasic_cc_expires_month', $expires_month) . ' ' . tep_draw_pull_down_menu('linkpointbasic_cc_expires_year', $expires_year))));

     return $selection;

   }

Link to comment
Share on other sites

  • 2 weeks later...

Im having trouble using this mod.

 

I keep getting a invalid storename message and my store name is the same as my user id thoe ive tried using my DBA storename and password with no difference.

 

For example:

 

Since my store name and user ID is the same (lets say its 454545)would i change it to this?:

$process_button_string .= tep_draw_hidden_field('454545', '454545'); //CHANGE ME

 

I have the same "454545" set on the admin side too but i still get a invalid storename error.

 

Anyone know what could be the problem?

Link to comment
Share on other sites

Thanks. That seemed to have fixed something because i get some other message saying something like "Could not read merchant profile for 8XXXX0".

 

Recieved a call by linkpoint saying not to forget to add the CVV number so now i guess i must impliment this and see if it works.

 

Will test this with the SSL in checkout payment left alone because i think its a good idea to stay with a secure connection. If not then ill see what works and if its safe.

 

Thanks again.

Link to comment
Share on other sites

I keep getting a "1. Could not read merchant profile for 8XXXX0" message.

 

wouldnt want to post the whole linkpoint file here but has anyone got this error before and how have you fixed it?

 

Thank You

Link to comment
Share on other sites

By thw way i clicked it to production to test that also and get this message:

 

It is not possible to order from the store at this time.  

 

Contact the merchant for further information (error 1002).  

Link to comment
Share on other sites

I've been using this module successfully without the CVV, and thought that it was an optional field code as far as linkpoint is concerned. Are they making some switch where it will be required by a certain date?

 

It is my understanding the CVV number is and always will be optional. Unless you add the tag that the CVV number is included(cvmnotpres=false). then if it is not there it MAY get declined(up to the bank). I have added the CVV number, the tag that it is included, and the tag that the purchase is a sale not authorization to my version of the script. But even if the address verification says it doesn't match the billing adress and the CVV number doesn't match, the sale will still be approved and most likely i will get a charge back in 30 days. and don't forget if you get too many charge backs (i think 3%) Link Point will pull your service and you will have to use one of the expensive processors:-(

 

So someone please figure out how to have this script get the information from Link Point and decline or approve based on it.

Link to comment
Share on other sites

i installed linkpointbasic.php, but after i added third argument ('false') to checkout_payment.php tep_href_link() call, it brings me back to the login screen on checkout page (when i select payment method & enter credit card info), that is - session is lost.

 

Anything i am doing wrong?

 

Also, i was looking thru the code - trying to find where the actual request to Linkpoint is sent, with their host name, port etc - could not find it. Just curious :)

 

Thans

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.

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...