bradb007 Posted October 8, 2002 Posted October 8, 2002 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] Quote ~~~~~~~~~~~~~~~ Brad Bierman
Guest Posted December 19, 2002 Posted December 19, 2002 ...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 Quote
Guest Posted December 23, 2002 Posted December 23, 2002 I would be interested in this LinkPoint Basic w/o wrapper that you speak of. Let me know. -R Quote
bradb007 Posted December 23, 2002 Author Posted December 23, 2002 ...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 Quote ~~~~~~~~~~~~~~~ Brad Bierman
Guest Posted December 24, 2002 Posted December 24, 2002 Please let me know when you have the update completed. Thanks in advance. -R Quote
mrjones Posted March 4, 2003 Posted March 4, 2003 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 Quote
Guest Posted May 30, 2003 Posted May 30, 2003 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 Quote
aceadoni Posted June 11, 2003 Posted June 11, 2003 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 Quote
[email protected] Posted July 30, 2003 Posted July 30, 2003 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!'); ?> Quote
[email protected] Posted July 30, 2003 Posted July 30, 2003 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!'); ?> Quote
bootNumlock Posted August 7, 2003 Posted August 7, 2003 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. Quote
Guest Posted September 1, 2003 Posted September 1, 2003 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 Quote
mrjones Posted September 1, 2003 Posted September 1, 2003 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 Quote
Guest Posted September 2, 2003 Posted September 2, 2003 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 Quote
Guest Posted September 2, 2003 Posted September 2, 2003 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? Quote
mrjones Posted September 3, 2003 Posted September 3, 2003 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() Quote
Guest Posted September 3, 2003 Posted September 3, 2003 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; } Quote
Guest Posted September 11, 2003 Posted September 11, 2003 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? Quote
mrjones Posted September 11, 2003 Posted September 11, 2003 Leave the first one alone, like this $process_button_string .= tep_draw_hidden_field('storename', 'XXXXXX'); You should only edit the XXXXXX, and leave the 'storename' as is. Darin Quote
Guest Posted September 11, 2003 Posted September 11, 2003 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. Quote
Guest Posted September 11, 2003 Posted September 11, 2003 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 Quote
Guest Posted September 11, 2003 Posted September 11, 2003 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). Quote
mrjones Posted September 11, 2003 Posted September 11, 2003 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? Quote
Guest Posted September 11, 2003 Posted September 11, 2003 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. Quote
vsopvs Posted September 18, 2003 Posted September 18, 2003 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 Quote
Recommended Posts
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.