Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Setting a Default Country Value


DataMouse

Recommended Posts

Hi all

 

I have a store which only sells to the UK.

 

I've recoded the checkout process so that the country field is now used to pull a list of counties in the UK (seeing as country isn't used).

With WorldPay, you need to pass over a country ID in order to process the payment.

 

What I'd like to do is hardcode the country ID into the payment module.

This means that I don't have to have my customers select "UK" from a country list with only one value in the checkout process, and it all appears seemless to the end user.

 

The issue I have is that i can't find where to set the country value in the module.

 

Any help would be massively appreciated!

 

Thanks

 

 

DM

Link to comment
Share on other sites

Perhaps if you supplied a link to whatever contribution of Worldpay you are using you'd get more responses.

 

No one can tell you what to change if they don't know what code you're using.

:blush:

If I suggest you edit any file(s) make a backup first - I'm not perfect and neither are you.

 

"Given enough impetus a parallelogramatically shaped projectile can egress a circular orifice."

- Me -

 

"Headers already sent" - The definitive help

 

"Cannot redeclare ..." - How to find/fix it

 

SSL Implementation Help

 

Like this post? "Like" it again over there >

Link to comment
Share on other sites

Apologies - and thanks

The code is the standard WorldPay module (worldpay_junior.php), and is included below :)

 

<?php
/*
 UPDATED 07-05-2011
 Updated RBS WorldPay form URL

 $Id: worldpay_junior.php 1807 2008-01-13 00:50:08Z hpdl $

 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com

 Copyright (c) 2008 osCommerce

 Released under the GNU General Public License
*/

 class worldpay_junior {
   var $code, $title, $description, $enabled;

// class constructor
   function worldpay_junior() {
     global $order;

     $this->signature = 'worldpay|worldpay_junior|1.0|2.2';

     $this->code = 'worldpay_junior';
     $this->title = MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_TITLE;
     $this->public_title = MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_PUBLIC_TITLE;
     $this->description = MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_DESCRIPTION;
     $this->sort_order = MODULE_PAYMENT_WORLDPAY_JUNIOR_SORT_ORDER;
     $this->enabled = ((MODULE_PAYMENT_WORLDPAY_JUNIOR_STATUS == 'True') ? true : false);

     if ((int)MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID > 0) {
       $this->order_status = MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID;
     }

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

     $this->form_action_url = 'https://secure.wp3.rbsworldpay.com/wcc/purchase';
   }

// class methods
   function update_status() {
     global $order;

     if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_WORLDPAY_JUNIOR_ZONE > 0) ) {
       $check_flag = false;
       $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_WORLDPAY_JUNIOR_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
       while ($check = tep_db_fetch_array($check_query)) {
         if ($check['zone_id'] < 1) {
           $check_flag = true;
           break;
         } elseif ($check['zone_id'] == $order->billing['zone_id']) {
           $check_flag = true;
           break;
         }
       }

       if ($check_flag == false) {
         $this->enabled = false;
       }
     }
   }

   function javascript_validation() {
     return false;
   }

   function selection() {
     global $cart_Worldpay_Junior_ID;

     if (tep_session_is_registered('cart_Worldpay_Junior_ID')) {
       $order_id = substr($cart_Worldpay_Junior_ID, strpos($cart_Worldpay_Junior_ID, '-')+1);

       $check_query = tep_db_query('select orders_id from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '" limit 1');

       if (tep_db_num_rows($check_query) < 1) {
         tep_db_query('delete from ' . TABLE_ORDERS . ' where orders_id = "' . (int)$order_id . '"');
         tep_db_query('delete from ' . TABLE_ORDERS_TOTAL . ' where orders_id = "' . (int)$order_id . '"');
         tep_db_query('delete from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '"');
         tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS . ' where orders_id = "' . (int)$order_id . '"');
         tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . ' where orders_id = "' . (int)$order_id . '"');
         tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_DOWNLOAD . ' where orders_id = "' . (int)$order_id . '"');

         tep_session_unregister('cart_Worldpay_Junior_ID');
       }
     }

     return array('id' => $this->code,
                  'module' => $this->public_title);
   }

   function pre_confirmation_check() {
     global $cartID, $cart;

     if (empty($cart->cartID)) {
       $cartID = $cart->cartID = $cart->generate_cart_id();
     }

     if (!tep_session_is_registered('cartID')) {
       tep_session_register('cartID');
     }
   }

   function confirmation() {
     global $cartID, $cart_Worldpay_Junior_ID, $customer_id, $languages_id, $order, $order_total_modules;

     $insert_order = false;

     if (tep_session_is_registered('cart_Worldpay_Junior_ID')) {
       $order_id = substr($cart_Worldpay_Junior_ID, strpos($cart_Worldpay_Junior_ID, '-')+1);

       $curr_check = tep_db_query("select currency from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'");
       $curr = tep_db_fetch_array($curr_check);

       if ( ($curr['currency'] != $order->info['currency']) || ($cartID != substr($cart_Worldpay_Junior_ID, 0, strlen($cartID))) ) {
         $check_query = tep_db_query('select orders_id from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '" limit 1');

         if (tep_db_num_rows($check_query) < 1) {
           tep_db_query('delete from ' . TABLE_ORDERS . ' where orders_id = "' . (int)$order_id . '"');
           tep_db_query('delete from ' . TABLE_ORDERS_TOTAL . ' where orders_id = "' . (int)$order_id . '"');
           tep_db_query('delete from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '"');
           tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS . ' where orders_id = "' . (int)$order_id . '"');
           tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . ' where orders_id = "' . (int)$order_id . '"');
           tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_DOWNLOAD . ' where orders_id = "' . (int)$order_id . '"');
         }

         $insert_order = true;
       }
     } else {
       $insert_order = true;
     }

     if ($insert_order == true) {
       $order_totals = array();
       if (is_array($order_total_modules->modules)) {
         reset($order_total_modules->modules);
         while (list(, $value) = each($order_total_modules->modules)) {
           $class = substr($value, 0, strrpos($value, '.'));
           if ($GLOBALS[$class]->enabled) {
             for ($i=0, $n=sizeof($GLOBALS[$class]->output); $i<$n; $i++) {
               if (tep_not_null($GLOBALS[$class]->output[$i]['title']) && tep_not_null($GLOBALS[$class]->output[$i]['text'])) {
                 $order_totals[] = array('code' => $GLOBALS[$class]->code,
                                         'title' => $GLOBALS[$class]->output[$i]['title'],
                                         'text' => $GLOBALS[$class]->output[$i]['text'],
                                         'value' => $GLOBALS[$class]->output[$i]['value'],
                                         'sort_order' => $GLOBALS[$class]->sort_order);
               }
             }
           }
         }
       }

       $sql_data_array = array('customers_id' => $customer_id,
                               'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],
                               'customers_company' => $order->customer['company'],
                               'customers_street_address' => $order->customer['street_address'],
                               'customers_suburb' => $order->customer['suburb'],
                               'customers_city' => $order->customer['city'],
                               'customers_postcode' => $order->customer['postcode'],
                               'customers_state' => $order->customer['state'],
                               'customers_country' => $order->customer['country']['title'],
                               'customers_telephone' => $order->customer['telephone'],
                               'customers_email_address' => $order->customer['email_address'],
                               'customers_address_format_id' => $order->customer['format_id'],
                               'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'],
                               'delivery_company' => $order->delivery['company'],
                               'delivery_street_address' => $order->delivery['street_address'],
                               'delivery_suburb' => $order->delivery['suburb'],
                               'delivery_city' => $order->delivery['city'],
                               'delivery_postcode' => $order->delivery['postcode'],
                               'delivery_state' => $order->delivery['state'],
                               'delivery_country' => $order->delivery['country']['title'],
                               'delivery_address_format_id' => $order->delivery['format_id'],
                               'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'],
                               'billing_company' => $order->billing['company'],
                               'billing_street_address' => $order->billing['street_address'],
                               'billing_suburb' => $order->billing['suburb'],
                               'billing_city' => $order->billing['city'],
                               'billing_postcode' => $order->billing['postcode'],
                               'billing_state' => $order->billing['state'],
                               'billing_country' => $order->billing['country']['title'],
                               'billing_address_format_id' => $order->billing['format_id'],
                               'payment_method' => $order->info['payment_method'],
                               'cc_type' => $order->info['cc_type'],
                               'cc_owner' => $order->info['cc_owner'],
                               'cc_number' => $order->info['cc_number'],
                               'cc_expires' => $order->info['cc_expires'],
                               'date_purchased' => 'now()',
                               'orders_status' => $order->info['order_status'],
                               'currency' => $order->info['currency'],
                               'currency_value' => $order->info['currency_value']);

       tep_db_perform(TABLE_ORDERS, $sql_data_array);

       $insert_id = tep_db_insert_id();

       for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
         $sql_data_array = array('orders_id' => $insert_id,
                                 'title' => $order_totals[$i]['title'],
                                 'text' => $order_totals[$i]['text'],
                                 'value' => $order_totals[$i]['value'],
                                 'class' => $order_totals[$i]['code'],
                                 'sort_order' => $order_totals[$i]['sort_order']);

         tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);
       }

       for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
         $sql_data_array = array('orders_id' => $insert_id,
                                 'products_id' => tep_get_prid($order->products[$i]['id']),
                                 'products_model' => $order->products[$i]['model'],
                                 'products_name' => $order->products[$i]['name'],
                                 'products_price' => $order->products[$i]['price'],
                                 'final_price' => $order->products[$i]['final_price'],
                                 'products_tax' => $order->products[$i]['tax'],
                                 'products_quantity' => $order->products[$i]['qty']);

         tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);

         $order_products_id = tep_db_insert_id();

         $attributes_exist = '0';
         if (isset($order->products[$i]['attributes'])) {
           $attributes_exist = '1';
           for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
             if (DOWNLOAD_ENABLED == 'true') {
               $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
                                    from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
                                    left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
                                    on pa.products_attributes_id=pad.products_attributes_id
                                    where pa.products_id = '" . $order->products[$i]['id'] . "'
                                    and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
                                    and pa.options_id = popt.products_options_id
                                    and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
                                    and pa.options_values_id = poval.products_options_values_id
                                    and popt.language_id = '" . $languages_id . "'
                                    and poval.language_id = '" . $languages_id . "'";
               $attributes = tep_db_query($attributes_query);
             } else {
               $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
             }
             $attributes_values = tep_db_fetch_array($attributes);

             $sql_data_array = array('orders_id' => $insert_id,
                                     'orders_products_id' => $order_products_id,
                                     'products_options' => $attributes_values['products_options_name'],
                                     'products_options_values' => $attributes_values['products_options_values_name'],
                                     'options_values_price' => $attributes_values['options_values_price'],
                                     'price_prefix' => $attributes_values['price_prefix']);

             tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);

             if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_not_null($attributes_values['products_attributes_filename'])) {
               $sql_data_array = array('orders_id' => $insert_id,
                                       'orders_products_id' => $order_products_id,
                                       'orders_products_filename' => $attributes_values['products_attributes_filename'],
                                       'download_maxdays' => $attributes_values['products_attributes_maxdays'],
                                       'download_count' => $attributes_values['products_attributes_maxcount']);

               tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array);
             }
           }
         }
       }

       $cart_Worldpay_Junior_ID = $cartID . '-' . $insert_id;
       tep_session_register('cart_Worldpay_Junior_ID');
     }

     return false;
   }

   function process_button() {
     global $order, $currency, $languages_id, $language, $customer_id, $cart_Worldpay_Junior_ID;

     $order_id = substr($cart_Worldpay_Junior_ID, strpos($cart_Worldpay_Junior_ID, '-')+1);

     $lang_query = tep_db_query("select code from " . TABLE_LANGUAGES . " where languages_id = '" . (int)$languages_id . "'");
     $lang = tep_db_fetch_array($lang_query);

     $process_button_string = tep_draw_hidden_field('instId', MODULE_PAYMENT_WORLDPAY_JUNIOR_INSTALLATION_ID) .
                              tep_draw_hidden_field('amount', $this->format_raw($order->info['total'])) .
                              tep_draw_hidden_field('currency', $currency) .
                              tep_draw_hidden_field('hideCurrency', 'true') .
                              tep_draw_hidden_field('cartId', $order_id) .
                              tep_draw_hidden_field('desc', STORE_NAME) .
                              tep_draw_hidden_field('name', $order->billing['firstname'] . ' ' . $order->billing['lastname']) .
                              tep_draw_hidden_field('address', $order->billing['street_address']) .
                              tep_draw_hidden_field('postcode', $order->billing['postcode']) .
                              tep_draw_hidden_field('country', $order->billing['country']['iso_code_2']) .
                              tep_draw_hidden_field('tel', $order->customer['telephone']) .
                              tep_draw_hidden_field('email', $order->customer['email_address']) .
                              tep_draw_hidden_field('fixContact', 'Y') .
                              tep_draw_hidden_field('lang', strtoupper($lang['code'])) .
                              tep_draw_hidden_field('signatureFields', 'amount:currency:cartId') .
                              tep_draw_hidden_field('signature', md5(MODULE_PAYMENT_WORLDPAY_JUNIOR_MD5_PASSWORD . ':' . $this->format_raw($order->info['total']) . ':' . $currency . ':' . $order_id)) .
                              tep_draw_hidden_field('MC_callback', substr(tep_href_link('ext/modules/payment/worldpay/junior_callback.php', '', 'NONSSL', false, false), strpos(tep_href_link('ext/modules/payment/worldpay/junior_callback.php', '', 'NONSSL', false, false), '://')+3));

     if (MODULE_PAYMENT_WORLDPAY_JUNIOR_TRANSACTION_METHOD == 'Pre-Authorization') {
       $process_button_string .= tep_draw_hidden_field('authMode', 'E');
     }

     if (MODULE_PAYMENT_WORLDPAY_JUNIOR_TESTMODE == 'True') {
       $process_button_string .= tep_draw_hidden_field('testMode', '100');
     }

     $process_button_string .= tep_draw_hidden_field('M_sid', tep_session_id()) .
                               tep_draw_hidden_field('M_cid', $customer_id) .
                               tep_draw_hidden_field('M_lang', $language) .
                               tep_draw_hidden_field('M_hash', md5(tep_session_id() . $customer_id . $order_id . $language . number_format($order->info['total'], 2) . MODULE_PAYMENT_WORLDPAY_JUNIOR_MD5_PASSWORD));

     return $process_button_string;
   }

   function before_process() {
     global $customer_id, $language, $order, $order_totals, $sendto, $billto, $languages_id, $payment, $currencies, $cart, $cart_Worldpay_Junior_ID;
     global $$payment;

     $order_id = substr($cart_Worldpay_Junior_ID, strpos($cart_Worldpay_Junior_ID, '-')+1);

     $check_query = tep_db_query("select orders_status from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'");
     if (tep_db_num_rows($check_query)) {
       $check = tep_db_fetch_array($check_query);

       if ($check['orders_status'] == MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID) {
         $hash_result = false;

         if (isset($HTTP_GET_VARS['hash']) && !empty($HTTP_GET_VARS['hash']) && ($HTTP_GET_VARS['hash'] == md5(tep_session_name() . $customer_id . $order_id . $language . number_format($order->info['total'], 2) . MODULE_PAYMENT_WORLDPAY_JUNIOR_MD5_PASSWORD))) {
           $hash_result = true;
         }

         $sql_data_array = array('orders_id' => $order_id,
                                 'orders_status_id' => MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID,
                                 'date_added' => 'now()',
                                 'customer_notified' => '0',
                                 'comments' => (($hash_result == true) ? 'WorldPay: Transaction Verified' : 'WorldPay: Incorrect Transaction Hash'));

         tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);

         if (MODULE_PAYMENT_WORLDPAY_JUNIOR_TESTMODE == 'True') {
           $sql_data_array = array('orders_id' => $order_id,
                                   'orders_status_id' => MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID,
                                   'date_added' => 'now()',
                                   'customer_notified' => '0',
                                   'comments' => MODULE_PAYMENT_WORLDPAY_JUNIOR_TEXT_WARNING_DEMO_MODE);

           tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
         }
       }
     }

     tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . (MODULE_PAYMENT_WORLDPAY_JUNIOR_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_WORLDPAY_JUNIOR_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID) . "', last_modified = now() where orders_id = '" . (int)$order_id . "'");

     $sql_data_array = array('orders_id' => $order_id,
                             'orders_status_id' => (MODULE_PAYMENT_WORLDPAY_JUNIOR_ORDER_STATUS_ID > 0 ? (int)MODULE_PAYMENT_WORLDPAY_JUNIOR_ORDER_STATUS_ID : (int)DEFAULT_ORDERS_STATUS_ID),
                             'date_added' => 'now()',
                             'customer_notified' => (SEND_EMAILS == 'true') ? '1' : '0',
                             'comments' => $order->info['comments']);

     tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);

// initialized for the email confirmation
     $products_ordered = '';
     $subtotal = 0;
     $total_tax = 0;

     for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
// Stock Update - Joao Correia
       if (STOCK_LIMITED == 'true') {
         if (DOWNLOAD_ENABLED == 'true') {
           $stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename
                               FROM " . TABLE_PRODUCTS . " p
                               LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa
                               ON p.products_id=pa.products_id
                               LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
                               ON pa.products_attributes_id=pad.products_attributes_id
                               WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'";
// Will work with only one option for downloadable products
// otherwise, we have to build the query dynamically with a loop
           $products_attributes = $order->products[$i]['attributes'];
           if (is_array($products_attributes)) {
             $stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'";
           }
           $stock_query = tep_db_query($stock_query_raw);
         } else {
           $stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
         }
         if (tep_db_num_rows($stock_query) > 0) {
           $stock_values = tep_db_fetch_array($stock_query);
// do not decrement quantities if products_attributes_filename exists
           if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {
             $stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty'];
           } else {
             $stock_left = $stock_values['products_quantity'];
           }
           tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
           if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) {
             tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
           }
         }
       }

// Update products_ordered (for bestsellers list)
       tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");

//------insert customer choosen option to order--------
       $attributes_exist = '0';
       $products_ordered_attributes = '';
       if (isset($order->products[$i]['attributes'])) {
         $attributes_exist = '1';
         for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
           if (DOWNLOAD_ENABLED == 'true') {
             $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
                                  from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
                                  left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
                                  on pa.products_attributes_id=pad.products_attributes_id
                                  where pa.products_id = '" . $order->products[$i]['id'] . "'
                                  and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
                                  and pa.options_id = popt.products_options_id
                                  and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
                                  and pa.options_values_id = poval.products_options_values_id
                                  and popt.language_id = '" . $languages_id . "'
                                  and poval.language_id = '" . $languages_id . "'";
             $attributes = tep_db_query($attributes_query);
           } else {
             $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
           }
           $attributes_values = tep_db_fetch_array($attributes);

           $products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name'];
         }
       }
//------insert customer choosen option eof ----
       $total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);
       $total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];
       $total_cost += $total_products_price;

       $products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";
     }

// lets start with the email confirmation
     $email_order = STORE_NAME . "\n" .
                    EMAIL_SEPARATOR . "\n" .
                    EMAIL_TEXT_ORDER_NUMBER . ' ' . $order_id . "\n" .
                    EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $order_id, 'SSL', false) . "\n" .
                    EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n";
     if ($order->info['comments']) {
       $email_order .= tep_db_output($order->info['comments']) . "\n\n";
     }
     $email_order .= EMAIL_TEXT_PRODUCTS . "\n" .
                     EMAIL_SEPARATOR . "\n" .
                     $products_ordered .
                     EMAIL_SEPARATOR . "\n";

     for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
       $email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
     }

     if ($order->content_type != 'virtual') {
       $email_order .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" .
                       EMAIL_SEPARATOR . "\n" .
                       tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n";
     }

     $email_order .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" .
                     EMAIL_SEPARATOR . "\n" .
                     tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n";

     if (is_object($$payment)) {
       $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
                       EMAIL_SEPARATOR . "\n";
       $payment_class = $$payment;
       $email_order .= $payment_class->title . "\n\n";
       if ($payment_class->email_footer) {
         $email_order .= $payment_class->email_footer . "\n\n";
       }
     }

     tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

// send emails to other people
     if (SEND_EXTRA_ORDER_EMAILS_TO != '') {
       tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
     }

// load the after_process function from the payment modules
     $this->after_process();

     $cart->reset(true);

// unregister session variables used during checkout
     tep_session_unregister('sendto');
     tep_session_unregister('billto');
     tep_session_unregister('shipping');
     tep_session_unregister('payment');
     tep_session_unregister('comments');

     tep_session_unregister('cart_Worldpay_Junior_ID');

     tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));
   }

   function after_process() {
     return false;
   }

   function get_error() {
     return false;
   }

   function check() {
     if (!isset($this->_check)) {
       $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_WORLDPAY_JUNIOR_STATUS'");
       $this->_check = tep_db_num_rows($check_query);
     }
     return $this->_check;
   }

   function install() {
     $check_query = tep_db_query("select orders_status_id from " . TABLE_ORDERS_STATUS . " where orders_status_name = 'Preparing [WorldPay]' limit 1");

     if (tep_db_num_rows($check_query) < 1) {
       $status_query = tep_db_query("select max(orders_status_id) as status_id from " . TABLE_ORDERS_STATUS);
       $status = tep_db_fetch_array($status_query);

       $status_id = $status['status_id']+1;

       $languages = tep_get_languages();

       for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
         tep_db_query("insert into " . TABLE_ORDERS_STATUS . " (orders_status_id, language_id, orders_status_name) values ('" . $status_id . "', '" . $languages[$i]['id'] . "', 'Preparing [WorldPay]')");
       }

       $flags_query = tep_db_query("describe " . TABLE_ORDERS_STATUS . " public_flag");
       if (tep_db_num_rows($flags_query) == 1) {
         tep_db_query("update " . TABLE_ORDERS_STATUS . " set public_flag = 0 and downloads_flag = 0 where orders_status_id = '" . $status_id . "'");
       }
     } else {
       $check = tep_db_fetch_array($check_query);

       $status_id = $check['orders_status_id'];
     }

     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 WorldPay Business Gateway', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_STATUS', 'False', 'Do you want to accept WorldPay Business Gateway 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 ('Installation ID', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_INSTALLATION_ID', '', 'Your WorldPay Installation ID', '6', '0', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Payment Response password', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_CALLBACK_PASSWORD', '', 'A password that is sent back in the callback response (specified in the WorldPay Customer Management System)', '6', '0', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('MD5 secret for transactions Password', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_MD5_PASSWORD', '', 'The MD5 secret encryption password used to validate transaction responses with (specified in the WorldPay Customer Management System)', '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 Method', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_TRANSACTION_METHOD', 'Capture', 'The processing method to use for each transaction', '6', '0', 'tep_cfg_select_option(array(\'Pre-Authorization\', \'Capture\'), ', 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 ('Test Mode', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_TESTMODE', 'True', 'Process transactions in test mode?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Preparing Order Status', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID', '" . (int)$status_id . "', 'Set the status of prepared orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
   }

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

   function keys() {
     return array('MODULE_PAYMENT_WORLDPAY_JUNIOR_STATUS', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_INSTALLATION_ID', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_CALLBACK_PASSWORD', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_MD5_PASSWORD', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_TRANSACTION_METHOD', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_TESTMODE', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_ZONE', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_PREPARE_ORDER_STATUS_ID', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_ORDER_STATUS_ID', 'MODULE_PAYMENT_WORLDPAY_JUNIOR_SORT_ORDER');
   }

// format prices without currency formatting
   function format_raw($number, $currency_code = '', $currency_value = '') {
     global $currencies, $currency;

     if (empty($currency_code) || !$this->is_set($currency_code)) {
       $currency_code = $currency;
     }

     if (empty($currency_value) || !is_numeric($currency_value)) {
       $currency_value = $currencies->currencies[$currency_code]['value'];
     }

     return number_format(tep_round($number * $currency_value, $currencies->currencies[$currency_code]['decimal_places']), $currencies->currencies[$currency_code]['decimal_places'], '.', '');
   }
 }
?>

Link to comment
Share on other sites

I *believe* that it is in the function process_button()

 

I also believe that it is this line that requires the hardcoding:

 

tep_draw_hidden_field('country', $order->billing['country']['iso_code_2']) .

 

 

Any ideas?

Link to comment
Share on other sites

Well......

 

Not knowing how Worldpay works, and not having a link to see how it works this is my best guess....

 

In this function:

 

    function process_button() {

This line:

 

                               tep_draw_hidden_field('country', $order->billing['country']['iso_code_2']) .

Might need to be:

 

                               tep_draw_hidden_field('country', 'GB') .

I really don't see anywhere it uses the countries_id field in the DB.

:unsure:

Edited by germ

If I suggest you edit any file(s) make a backup first - I'm not perfect and neither are you.

 

"Given enough impetus a parallelogramatically shaped projectile can egress a circular orifice."

- Me -

 

"Headers already sent" - The definitive help

 

"Cannot redeclare ..." - How to find/fix it

 

SSL Implementation Help

 

Like this post? "Like" it again over there >

Link to comment
Share on other sites

That looks promising.

Didn't think of removing the $order->billing reference...

 

I shall atry it and let you know shortly

 

Thanks ever so much!

:)

Link to comment
Share on other sites

I think it's working perfectly - certainly all the tests are going through OK.

 

Thanks ever so much for your help!

 

DM

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