Results 1 to 4 of 4
  1. #1
    Join Date
    Aug 2006
    Posts
    126
    Plugin Contributions
    0

    Default VoicePay - Voice Commerce plug in, slight problem

    Hi,
    I have installed a plug in from Voice Pay.
    It's API (?) in that I enter the card details on our site and they process the payment in the background.

    When I make a purchase the page says 'done' but is blank. The payment shows up in my VoicePay account but the order does not show in my ZenCart.

    Has anyone set up VoicePay? There is an 'integration' area in the control panel, do I need to be doing something in there?

    Is it something to do with 'callbacks'?

    Ta,
    Rick

  2. #2
    Join Date
    Aug 2006
    Posts
    126
    Plugin Contributions
    0

    Default Re: VoicePay - Voice Commerce plug in, slight problem

    Looking at what is happening, the address bar needs to have

    /index.php?main_page=checkout_process&response=1

    for the transaction to report as successful.

    The file dealing with the payment process is below.

    Code:
    <?php
    
      class gateway_services_cc {
        var $code, $title, $description, $enabled;
    
    // class constructor
        function gateway_services_cc() {
          global $order;
    
          $this->code = 'gateway_services_cc';
          $this->title = MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_TITLE;
          $this->public_title = MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_PUBLIC_TITLE;
          $this->description = MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_DESCRIPTION;
          $this->enabled = ((MODULE_PAYMENT_GATEWAY_SERVICES_CC_STATUS == 'True') ? true : false);
          $this->sort_order = MODULE_PAYMENT_GATEWAY_SERVICES_CC_SORT_ORDER;
    
          if ((int)MODULE_PAYMENT_GATEWAY_SERVICES_CC_ORDER_STATUS_ID > 0) {
            $this->order_status = MODULE_PAYMENT_GATEWAY_SERVICES_CC_ORDER_STATUS_ID;
          }
    
          if (is_object($order)) $this->update_status();
    
          $this->form_action_url = base64_decode('aHR0cHM6Ly9zZWN1cmUubmV0d29ya21lcmNoYW50cy5jb20vZ3cvYXBpL3RyYW5zYWN0LnBocA==');
        }
    
    // class methods
        function update_status() {
          global $order;
        }
    
        function javascript_validation() {
          $js = '  if (payment_value == "' . $this->code . '") {' . "\n" .
                '    var cc_owner = document.checkout_payment.gateway_services_cc_cc_owner.value;' . "\n" .
                '    var cc_number = document.checkout_payment.gateway_services_cc_cc_number.value;' . "\n" .
                '    if (cc_owner == "" || cc_owner.length < ' . CC_OWNER_MIN_LENGTH . ') {' . "\n" .
                '      error_message = error_message + "' . MODULE_PAYMENT_GATEWAY_SERVICES_CC_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_GATEWAY_SERVICES_CC_TEXT_JS_CC_NUMBER . '";' . "\n" .
                '      error = 1;' . "\n" .
                '    }' . "\n";
    
          if (MODULE_PAYMENT_GATEWAY_SERVICES_CC_CSC_OPTION == 'Required') {
              $js.= '    var cc_csc = document.checkout_payment.gateway_services_cc_cc_csc.value;' . "\n" .
                    '    if (cc_csc == "" || (cc_csc.length != 3 && cc_csc.length != 4)) {' . "\n" .
                    '      error_message = error_message + "' . MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_JS_CSC . '";' . "\n" .
                    '      error = 1;' . "\n" .
                    '    }' . "\n";
          } else if (MODULE_PAYMENT_GATEWAY_SERVICES_CC_CSC_OPTION == 'Optional') {
              $js.= '    var cc_csc = document.checkout_payment.gateway_services_cc_cc_csc.value;' . "\n" .
                    '    if (cc_csc != "" && cc_csc.length != 3 && cc_csc.length != 4) {' . "\n" .
                    '      error_message = error_message + "' . MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_JS_CSC . '";' . "\n" .
                    '      error = 1;' . "\n" .
                    '    }' . "\n";
          }
    
          $js.= '  }' . "\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)));
          }
          $selection = array('id' => $this->code,
                             'module' => $this->public_title,
                             'fields' => array(array('title' => MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_CREDIT_CARD_OWNER,
                                                     'field' => zen_draw_input_field('gateway_services_cc_cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])),
                                               array('title' => MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_CREDIT_CARD_NUMBER,
                                                     'field' => zen_draw_input_field('gateway_services_cc_cc_number')),
                                               array('title' => MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_CREDIT_CARD_EXPIRES,
                                                     'field' => zen_draw_pull_down_menu('gateway_services_cc_cc_expires_month', $expires_month) . '&nbsp;' . zen_draw_pull_down_menu('gateway_services_cc_cc_expires_year', $expires_year))));
    
          if (MODULE_PAYMENT_GATEWAY_SERVICES_CC_CSC_OPTION == 'Required' ||
              MODULE_PAYMENT_GATEWAY_SERVICES_CC_CSC_OPTION == 'Optional' ) {
    
    
            $selection['fields'][] = array('title' => MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_CARD_SECURITY_CODE,
                                           'field' => zen_draw_input_field('gateway_services_cc_cc_csc', '', 'size="4" maxlength="4"') . '&nbsp;<small>' . MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_CSC_DESCRIPTION . '</small>');
    
          }
    
          return $selection;
        }
    
        function pre_confirmation_check() {
          global $_POST;
    
          include(DIR_WS_CLASSES . 'cc_validation.php');
    
          $cc_validation = new cc_validation();
          $result = @$cc_validation->validate($_POST['gateway_services_cc_cc_number'], $_POST['gateway_services_cc_cc_expires_month'], $_POST['gateway_services_cc_cc_expires_year'], $_POST['gateway_services_cc_cc_csc']);
          $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 -5:
              $error = MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_ERROR_CSC;
              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) . '&gateway_services_cc_cc_owner=' . urlencode($_POST['gateway_services_cc_cc_owner']) . '&gateway_services_cc_cc_expires_month=' . $_POST['gateway_services_cc_cc_expires_month'] . '&gateway_services_cc_cc_expires_year=' . $_POST['gateway_services_cc_cc_expires_year'] . '&gateway_services_cc_cc_csc=' . $_POST['gateway_services_cc_cc_csc'];
    
            zen_redirect(zen_href_link(FILENAME_CHECKOUT_PAYMENT, $payment_error_return, 'SSL', true, false));
          }
    
          if ( MODULE_PAYMENT_GATEWAY_SERVICES_CC_CSC_OPTION == 'Required' ||
              (MODULE_PAYMENT_GATEWAY_SERVICES_CC_CSC_OPTION == 'Optional' && $_POST['gateway_services_cc_cc_csc']!="") ) {
            if ((strlen(trim($_POST['gateway_services_cc_cc_csc']))!=4 && $cc_validation->cc_type=='American Express') || (strlen(trim($_POST['gateway_services_cc_cc_csc']))!=3 && $cc_validation->cc_type!='American Express')) {
                $payment_error_return = 'payment_error=' . $this->code . '&error=' . MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_ERROR_CSC . '&gateway_services_cc_cc_number=' . urlencode($_POST['gateway_services_cc_cc_number']) . '&gateway_services_cc_cc_owner=' . urlencode($_POST['gateway_services_cc_cc_owner']) . '&gateway_services_cc_cc_expires_month=' . $_POST['gateway_services_cc_cc_expires_month'] . '&gateway_services_cc_cc_expires_year=' . $_POST['gateway_services_cc_cc_expires_year'] . '&gateway_services_cc_cc_csc=' . urlencode($_POST['gateway_services_cc_cc_csc']);
                zen_redirect(zen_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;
          $this->cc_csc = $_POST['gateway_services_cc_cc_csc'];
        }
    
        function confirmation() {
          global $_POST;
    
          $confirmation = array('title' => $this->public_title . ': ' . $this->cc_card_type,
                                'fields' => array(array('title' => MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_CREDIT_CARD_OWNER,
                                                        'field' => $_POST['gateway_services_cc_cc_owner']),
                                                  array('title' => MODULE_PAYMENT_GATEWAY_SERVICES_CC_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_GATEWAY_SERVICES_CC_TEXT_CREDIT_CARD_EXPIRES,
                                                        'field' => strftime('%B, %Y', mktime(0,0,0,$_POST['gateway_services_cc_cc_expires_month'], 1, '20' . $_POST['gateway_services_cc_cc_expires_year']))),
                                                  array('title' => MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_CARD_SECURITY_CODE,
                                                        'field' => str_repeat('X', strlen($this->cc_csc))),
                                                  ));
    
          return $confirmation;
        }
    
        function process_button() {
          global $order, $customer_id;
    
          if (MODULE_PAYMENT_GATEWAY_SERVICES_CC_TXN_OPTION=='Authorization only') {
            $type = 'auth';
          } else {
            $type = 'sale';
          }
    
          $serverTZ = getenv("TZ");
          if (empty($serverTZ)) {
              $serverTZ = ini_get('date.timezone');
          }
          putenv("TZ=UTC");
          $transaction_time = date("YmdHis",time());
          if (!empty($serverTZ)) {
             putenv("TZ=".$serverTZ);
          }
    
          $product_string = '';
          $hash_string = md5("|".number_format($order->info['total'], 2).'|'.$transaction_time.'|'.MODULE_PAYMENT_GATEWAY_SERVICES_CC_KEY);
          foreach ($order->products as $key => $infoArray) {
              $product_string .= zen_draw_hidden_field('product_quantity_'.($key+1), $infoArray['qty']) .
                         zen_draw_hidden_field('product_amount_'.($key+1), $infoArray['final_price']) .
                         zen_draw_hidden_field('product_sku_'.($key+1), $infoArray['model'] ? $infoArray['model'] : $infoArray['name']);
              if (count($infoArray['attributes'])>0) {
                  $description_string = $infoArray['model'] ? 'Name: '.$infoArray['name'].'; ' : '';
                  for ($a=0; $a<count($infoArray['attributes']);$a++) {
                      $description_string .= $infoArray['attributes'][$a]['option']. ': ' .$infoArray['attributes'][$a]['value'] . '; ';
                  }
                  $product_string .= zen_draw_hidden_field('product_description_'.($key+1), substr($description_string, 0, -2));
              }
          }
    
          $process_button_string = zen_draw_hidden_field('key_id', MODULE_PAYMENT_GATEWAY_SERVICES_CC_KEYID) .
                                   zen_draw_hidden_field('ccnumber', $this->cc_card_number) .
                                   zen_draw_hidden_field('ccexp', $this->cc_expiry_month . substr($this->cc_expiry_year, -2)) .
                                   zen_draw_hidden_field('cvv', $this->cc_csc) .
                                   zen_draw_hidden_field('amount', number_format($order->info['total'], 2)) .
                                   zen_draw_hidden_field('tax', number_format($order->info['tax'], 2)) .
                                   zen_draw_hidden_field('shipping', number_format($order->info['shipping_cost'], 2)) .
                                   zen_draw_hidden_field('redirect', zen_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL', true)) .
                                   zen_draw_hidden_field('type', $type) .
                                   zen_draw_hidden_field('customerid', $customer_id) .
                                   zen_draw_hidden_field('firstname', $order->billing['firstname']) .
                                   zen_draw_hidden_field('lastname', $order->billing['lastname']) .
                                   zen_draw_hidden_field('address1', $order->billing['street_address']) .
                                   zen_draw_hidden_field('city', $order->billing['city']) .
                                   zen_draw_hidden_field('state', $order->billing['state']) .
                                   zen_draw_hidden_field('zip', $order->billing['postcode']) .
                                   zen_draw_hidden_field('country', $order->billing['country']['title']) .
                                   zen_draw_hidden_field('phone', $order->customer['telephone']) .
                                   zen_draw_hidden_field('email', $order->customer['email_address']) .
                                   zen_draw_hidden_field('shipping_firstname', $order->delivery['firstname']) .
                                   zen_draw_hidden_field('shipping_lastname', $order->delivery['lastname']) .
                                   zen_draw_hidden_field('shipping_address1', $order->delivery['street_address']) .
                                   zen_draw_hidden_field('shipping_city', $order->delivery['city']) .
                                   zen_draw_hidden_field('shipping_state', $order->delivery['state']) .
                                   zen_draw_hidden_field('shipping_zip', $order->delivery['postcode']) .
                                   zen_draw_hidden_field('shipping_country', $order->delivery['country']['title']) .
                                   zen_draw_hidden_field('currency', $order->info['currency']) .
                                   zen_draw_hidden_field('ipaddress', $_SERVER['REMOTE_ADDR']) .
                                   zen_draw_hidden_field('hash', $hash_string) .
                                   zen_draw_hidden_field('time', $transaction_time) .
                                   $product_string .
                                   zen_draw_hidden_field(zen_session_name(), zen_session_id());
    
          return $process_button_string;
        }
    
        function before_process() {
    
          if ($_GET['response'] == '1') return;
          if ($_GET['response'] == '2') {
            zen_redirect(zen_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_DECLINED_MESSAGE), 'SSL', true, false));
          }
          // Code 3 is an error - but anything else is an error too (IMHO)
            zen_redirect(zen_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_ERROR_MESSAGE), 'SSL', true, false));
        }
    
        function after_process() {
          return false;
        }
    
        function get_error() {
    
          $error = array('title' => MODULE_PAYMENT_GATEWAY_SERVICES_CC_TEXT_ERROR,
                         'error' => stripslashes(urldecode($_GET['error'])));
    
          return $error;
        }
    
        function check() {
            global $db;
          if (!isset($this->_check)) {
            $check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_GATEWAY_SERVICES_CC_STATUS'");
            $this->_check = $check_query->RecordCount();
          }
          return $this->_check;
        }
    
        function install() {
            global $db;
            $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Credit Card Payment Module', 'MODULE_PAYMENT_GATEWAY_SERVICES_CC_STATUS', 'True', 'Do you want to accept Credit Card payments?', '6', '0', 'zen_cfg_select_option(array(\'True\', \'False\'), ', now())");
            $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Key ID', 'MODULE_PAYMENT_GATEWAY_SERVICES_CC_KEYID', '449510', 'The security key id used for the gateway service', '6', '0', now())");
            $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Key', 'MODULE_PAYMENT_GATEWAY_SERVICES_CC_KEY', '\!b2#I/wu%)4_tUdpAxO|GDWW?20:V.w', 'The security key used for the gateway service', '6', '0', now())");
            $db->Execute("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_GATEWAY_SERVICES_CC_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
            $db->Execute("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_GATEWAY_SERVICES_CC_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'zen_cfg_pull_down_order_statuses(', 'zen_get_order_status_name', now())");
            $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('CSC Option', 'MODULE_PAYMENT_GATEWAY_SERVICES_CC_CSC_OPTION', 'Hidden', 'Set how you want to handle the card security code (commonly known as CVV)', '6', '0', 'zen_cfg_select_option(array(\'Hidden\', \'Optional\', \'Required\'), ', now())");
            $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Type', 'MODULE_PAYMENT_GATEWAY_SERVICES_CC_TXN_OPTION', 'Sale', 'Set how you want to process order transactions', '6', '0', 'zen_cfg_select_option(array(\'Sale\', \'Authorization only\'), ', now())");
        }
    
        function remove() {
          global $db;
          $db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
        }
    
        function keys() {
          return array('MODULE_PAYMENT_GATEWAY_SERVICES_CC_STATUS', 'MODULE_PAYMENT_GATEWAY_SERVICES_CC_KEYID', 'MODULE_PAYMENT_GATEWAY_SERVICES_CC_KEY', 'MODULE_PAYMENT_GATEWAY_SERVICES_CC_ORDER_STATUS_ID', 'MODULE_PAYMENT_GATEWAY_SERVICES_CC_SORT_ORDER', 'MODULE_PAYMENT_GATEWAY_SERVICES_CC_CSC_OPTION', 'MODULE_PAYMENT_GATEWAY_SERVICES_CC_TXN_OPTION');
        }
      }
    Any input appreciated.

  3. #3
    Join Date
    Apr 2007
    Location
    Vancouver, Canada
    Posts
    1,569
    Plugin Contributions
    74

    Default Re: VoicePay - Voice Commerce plug in, slight problem

    We're getting the blank page too after upgrading to 1.3.9. What version are you using?

    There is no PHP error.

  4. #4
    Join Date
    Aug 2006
    Posts
    126
    Plugin Contributions
    0

    Default Re: VoicePay - Voice Commerce plug in, slight problem

    We are running 1.3.7

    We ended up making moderations to the authorize.net (AIM) module by changing the authorizenet_aim.php file to point at the correct address.
    If you do this you will need different login details, the support at Voice Pay are prompt and helpful, i'd drop them an email.

 

 

Similar Threads

  1. slight problem with site.
    By kevinc66 in forum General Questions
    Replies: 2
    Last Post: 10 Dec 2011, 12:01 PM
  2. slight problem :|
    By spid3r1987 in forum General Questions
    Replies: 14
    Last Post: 13 Oct 2010, 04:43 PM
  3. Looking for Payment module - Voice Commerce
    By NDSRevolution in forum Addon Payment Modules
    Replies: 6
    Last Post: 24 Jun 2010, 04:44 PM
  4. Email Address Exporter (slight problem)
    By nrg77 in forum All Other Contributions/Addons
    Replies: 24
    Last Post: 8 Dec 2007, 01:11 PM
  5. slight problem with css (i think)
    By humbll in forum Templates, Stylesheets, Page Layout
    Replies: 4
    Last Post: 26 May 2007, 07:04 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
disjunctive-egg