joker2040 Posted December 14, 2011 Posted December 14, 2011 So I have the veloct payment module integrated and working. I would like to however capture the transaction id that is returned and store it somewhere in the database. I've seen posts with it being done for worldpay but I'm not sure how to accomplish it within the veloct.php file. Below is the veloct.php file I'm using: <?php /* $Id: VELOCT.php,v 1.00 2004/08/24 10:32:00 mpoole Exp $ Direct Mode VELOCT osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2004 FastTransact (www.fasttransact.com) Released under the GNU General Public License */ class VELOCT { var $code, $title, $description, $enabled; // class constructor function VELOCT() { global $order; $this->code = 'VELOCT'; $this->title = MODULE_PAYMENT_VELOCT_TEXT_TITLE; $this->description = MODULE_PAYMENT_VELOCT_TEXT_DESCRIPTION; $this->enabled = ((MODULE_PAYMENT_VELOCT_STATUS == 'True') ? true : false); $this->sort_order = MODULE_PAYMENT_VELOCT_SORT_ORDER; $this->error = ''; if ((int)MODULE_PAYMENT_VELOCT_ORDER_STATUS_ID > 0) { $this->order_status = MODULE_PAYMENT_VELOCT_ORDER_STATUS_ID; } $this->form_action_url = tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL', false); } // class methods function javascript_validation() { $js = ' if (payment_value == "' . $this->code . '") {' . "\n" . ' var cc_owner = document.checkout_payment.VELOCT_cc_owner.value;' . "\n" . ' var cc_number = document.checkout_payment.VELOCT_cc_number.value;' . "\n" . ' if (cc_owner == "" || cc_owner.length < ' . CC_OWNER_MIN_LENGTH . ') {' . "\n" . ' error_message = error_message + "' . MODULE_PAYMENT_VELOCT_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_VELOCT_TEXT_JS_CC_NUMBER . '";' . "\n" . ' error = 1;' . "\n" . ' }' . "\n" . ' }' . "\n"; return $js; } function selection() { 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))); } if(MODULE_PAYMENT_VELOCT_CVV2_REQUIRED == 'True') { $selection = array('id' => $this->code, 'module' => $this->title, 'fields' => array(array('title' => MODULE_PAYMENT_VELOCT_TEXT_CREDIT_CARD_OWNER, 'field' => tep_draw_input_field('VELOCT_cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])), array('title' => MODULE_PAYMENT_VELOCT_TEXT_CREDIT_CARD_NUMBER, 'field' => tep_draw_input_field('VELOCT_cc_number')), array('title' => MODULE_PAYMENT_VELOCT_TEXT_CREDIT_CARD_CVV, 'field' => tep_draw_input_field('VELOCT_cc_cvv', '', 'size="4"')), array('title' => MODULE_PAYMENT_VELOCT_TEXT_CREDIT_CARD_EXPIRES, 'field' => tep_draw_pull_down_menu('VELOCT_cc_expires_month', $expires_month) . ' ' . tep_draw_pull_down_menu('VELOCT_cc_expires_year', $expires_year)))); } else { $selection = array('id' => $this->code, 'module' => $this->title, 'fields' => array(array('title' => MODULE_PAYMENT_VELOCT_TEXT_CREDIT_CARD_OWNER, 'field' => tep_draw_input_field('VELOCT_cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])), array('title' => MODULE_PAYMENT_VELOCT_TEXT_CREDIT_CARD_NUMBER, 'field' => tep_draw_input_field('VELOCT_cc_number')), array('title' => MODULE_PAYMENT_VELOCT_TEXT_CREDIT_CARD_EXPIRES, 'field' => tep_draw_pull_down_menu('VELOCT_cc_expires_month', $expires_month) . ' ' . tep_draw_pull_down_menu('VELOCT_cc_expires_year', $expires_year)))); } return $selection; } function pre_confirmation_check() { global $HTTP_POST_VARS, $cc_array; include(DIR_WS_CLASSES . 'cc_validation.php'); $cc_validation = new cc_validation(); $result = $cc_validation->validate($HTTP_POST_VARS['VELOCT_cc_number'], $HTTP_POST_VARS['VELOCT_cc_expires_month'], $HTTP_POST_VARS['VELOCT_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) . '&VELOCT_cc_owner=' . urlencode($HTTP_POST_VARS['VELOCT_cc_owner']) . '&VELOCT_cc_expires_month=' . $HTTP_POST_VARS['VELOCT_cc_expires_month'] . '&VELOCT_cc_expires_year=' . $HTTP_POST_VARS['VELOCT_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; if(MODULE_PAYMENT_VELOCT_CVV2_REQUIRED == 'True') { $this->cc_cvv = $HTTP_POST_VARS['VELOCT_cc_cvv']; } else { $this->cc_cvv = ''; } tep_session_register('cc_array'); $cc_array = array('card_type' => $this->cc_card_type, 'card_number' => $this->cc_card_number, 'card_code' => $this->cc_cvv, 'expiration' => $this->cc_expiry_month . substr($this->cc_expiry_year, -2)); } function confirmation() { global $HTTP_POST_VARS; $confirmation = array('title' => $this->title . ': ' . $this->cc_card_type, 'fields' => array(array('title' => MODULE_PAYMENT_VELOCT_TEXT_CREDIT_CARD_OWNER, 'field' => $HTTP_POST_VARS['VELOCT_cc_owner']), array('title' => MODULE_PAYMENT_VELOCT_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_VELOCT_TEXT_CREDIT_CARD_EXPIRES, 'field' => strftime('%B, %Y', mktime(0,0,0,$HTTP_POST_VARS['VELOCT_cc_expires_month'], 1, '20' . $HTTP_POST_VARS['VELOCT_cc_expires_year']))))); return $confirmation; } function process_button() { $process_button_string .= tep_draw_hidden_field(tep_session_name(), tep_session_id()); return $process_button_string; } function before_process() { global $customer_id, $order, $HTTP_POST_VARS, $HTTP_SERVER_VARS, $cc_array; $form_data = array( 'pay_type' => 'C', 'tran_type' => 'A', 'account_id' => MODULE_PAYMENT_VELOCT_ACCOUNT_ID, 'card_number' => $cc_array['card_number'], 'card_expire' => $cc_array['expiration'], 'amount' => number_format($order->info['total'], 2), 'card_cvv2' => $cc_array['card_code'], 'bill_name1' => $order->billing['firstname'], 'bill_name2' => $order->billing['lastname'], 'bill_street' => $order->billing['street_address'], 'bill_city' => $order->billing['city'], 'bill_state' => $order->billing['state'], 'bill_zip' => $order->billing['postcode'], 'bill_country' => $order->billing['country']['title']); // concatenate order information variables to $data while(list($key, $value) = each($form_data)) { $data .= $key . '=' . urlencode(ereg_replace(',', '', $value)) . '&'; } // take the last & out for the string $data = substr($data, 0, -1); // Post order info data to VELOCT, make sure you have curl installed // BEGIN PHP_CURL.DLL CODE - Author: Peter Drake - 4/29/03 // Use for Win32 or Unix-type systems with php-curl.dll // Get a CURL handle $curl_handle = curl_init(); // Tell CURL the URL of the CGI curl_setopt($curl_handle, CURLOPT_URL, "https://secure.fasttransact.com:1402/gw/sas/direct3.0"); // This section sets various options. See http://www.php.net/manual/en/function.curl-setopt.php // for more details curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_handle, CURLOPT_POST, 1); curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $data); curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, 0); // Perform the POST and get the data returned by the server. $response = curl_exec ($curl_handle) or die ("There has been an error connecting to VELOCT."); // Close the CURL handle curl_close ($curl_handle); //END PUP_CURL.DLL CODE $response_vars = explode('&', $response); foreach ($response_vars as $pairvalue) { $value = explode('=', $pairvalue); if($value[0] == 'status_code') { $status_code = $value[1]; } if($value[0] == 'trans_id') { $trans_id = $value[1]; } if($value[0] == 'auth_code') { $auth_code = $value[1]; } if($value[0] == 'auth_date') { $auth_date = $value[1]; } if($value[0] == 'auth_msg') { $auth_msg = $value[1]; } if($value[0] == 'avs_code') { $avs_code = $value[1]; } if($value[0] == 'cvv2_code') { $cvv2_code = $value[1]; } } if ($status_code == '0' || $status_code == 'F' || $status_code == '') { $this->error = array('title' => ' VELOCT error message: ', 'error' => $auth_msg); tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_VELOCT_TEXT_ERROR_MESSAGE . implode(': ', $this->error)), 'SSL', true, false)); } else { if (!tep_session_is_registered('cc_transaction_id')) { tep_session_register('cc_transaction_id'); } global $cc_transaction_id; $cc_transaction_id = $trans_id; } } function after_process() { tep_session_unregister('cc_array'); return false; } function get_error() { global $HTTP_GET_VARS; $error = array('title' => MODULE_PAYMENT_VELOCT_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_VELOCT_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 VELOCTModule', 'MODULE_PAYMENT_VELOCT_STATUS', 'True', 'Do you want to accept VELOCTpayments?', '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 ('account_id', 'MODULE_PAYMENT_VELOCT_ACCOUNT_ID', '', 'The Account ID used for the VELOCTservice', '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 ('Enable CVV2', 'MODULE_PAYMENT_VELOCT_CVV2_REQUIRED', 'True', 'Do you want to allow the CVV2 number to be entered?', '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_VELOCT_STATUS', 'MODULE_PAYMENT_VELOCT_ACCOUNT_ID', 'MODULE_PAYMENT_VELOCT_CVV2_REQUIRED'); } } ?> 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.