Results 1 to 2 of 2
  1. #1
    Join Date
    Jan 2004
    Location
    N of San Antonio TX
    Posts
    9,682
    Plugin Contributions
    11

    Default Problems porting OSC Merchant Partners Mod

    Have a client in dire need of using Merchant Partners for their gateway.
    I've modified the files required to establish the cc but am over the fact that the MODULE_PAYMENT_INSTALLED keeps getting reset to null every time the payment page is accessed in the admin or when the cart is opened.
    Here is the code as I have it now.
    PHP Code:
    <?php

      
    class merchantpartners_cc {
        var 
    $code$title$description$enabled;

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

          
    $this->code 'merchantpartners_cc';
          
    $this->title MODULE_PAYMENT_MERCHANTPARTNERS_CC_TEXT_TITLE;
          
    $this->description MODULE_PAYMENT_MERCHANTPARTNERS_CC_TEXT_DESCRIPTION;
          
    $this->sort_order MODULE_PAYMENT_MERCHANTPARTNERS_CC_SORT_ORDER;
          
    $this->enabled = ((MODULE_PAYMENT_MERCHANTPARTNERS_CC_STATUS == 'True') ? true false);

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

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

          
    $this->form_action_url 'https://trans.merchantpartners.com/cgi-bin/process.cgi';

        }

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

          if ( (
    $this->enabled == true) && ((int)MODULE_PAYMENT_MERCHANTPARTNERS_CC_ZONE 0) ) {
            
    $check_flag false;
            
    $check_query $db->Execute("select zone_id from " TABLE_ZONES_TO_GEO_ZONES " where geo_zone_id = '" MODULE_PAYMENT_MERCHANTPARTNERS_CC_ZONE "' and zone_country_id = '" $order->billing['country']['id'] . "' order by zone_id");
            while (!
    $check->EOF) {
              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() {
          
    $js '  if (payment_value == "' $this->code '") {' "\n" .
                
    '    var cc_owner = document.checkout_payment.merchantpartners_cc_owner.value;' "\n" .
                
    '    var cc_number = document.checkout_payment.merchantpartners_cc_number.value;' "\n" .
                
    '    if (cc_owner == "" || cc_owner.length < ' CC_OWNER_MIN_LENGTH ') {' "\n" .
                
    '      error_message = error_message + "' MODULE_PAYMENT_MERCHANTPARTNERS_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_MERCHANTPARTNERS_CC_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)));
          }

          
    $selection = array('id' => $this->code,
                             
    'module' => MODULE_PAYMENT_MERCHANTPARTNERS_CC_TEXT_CUSTOMER_TITLE,    //IFD OSC-MODSQUAD.COM $this->title,
                             
    'fields' => array(array('title' => MODULE_PAYMENT_MERCHANTPARTNERS_CC_TEXT_CREDIT_CARD_OWNER,
                                                     
    'field' => zen_draw_input_field('merchantpartners_cc_owner'$order->billing['firstname'] . ' ' $order->billing['lastname'])),
                                               array(
    'title' => MODULE_PAYMENT_MERCHANTPARTNERS_CC_TEXT_CREDIT_CARD_NUMBER,
                                                     
    'field' => zen_draw_input_field('merchantpartners_cc_number')),
                                               array(
    'title' => MODULE_PAYMENT_MERCHANTPARTNERS_CC_TEXT_CREDIT_CARD_EXPIRES,
                                                     
    'field' => zen_draw_pull_down_menu('merchantpartners_cc_expires_month'$expires_month) . '&nbsp;' zen_draw_pull_down_menu('merchantpartners_cc_expires_year'$expires_year)),
                                               array(
    'title' => MODULE_PAYMENT_MERCHANTPARTNERS_CC_TEXT_CREDIT_CARD_CVV2,
                                                     
    'field' => zen_draw_input_field('cvv2''''size="5" maxlength="4"') . '&nbsp;<small>' MODULE_PAYMENT_MERCHANTPARTNERS_CC_TEXT_CREDIT_CARD_CVV2_LOCATION '&nbsp;&nbsp;<a href="cvv.html" target="_blank"><b>' MODULE_PAYMENT_MERCHANTPARTNERS_CC_TEXT_CREDIT_CARD_CVV2_EXPLAIN '</b></a></small>')
                                                            )
                                    );

          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['merchantpartners_cc_number'], $HTTP_POST_VARS['merchantpartners_cc_expires_month'], $HTTP_POST_VARS['merchantpartners_cc_expires_year']);

          
    $error '';
          switch (
    $result) {
            case -
    1:
              
    $error sprintf(TEXT_CCVAL_ERROR_UNKNOWN_CARDsubstr($cc_validation->cc_number04));
              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) . '&merchantpartners_cc_owner=' urlencode($HTTP_POST_VARS['merchantpartners_cc_owner']) . '&merchantpartners_cc_expires_month=' $HTTP_POST_VARS['merchantpartners_cc_expires_month'] . '&merchantpartners_cc_expires_year=' $HTTP_POST_VARS['merchantpartners_cc_expires_year'] . '&merchantpartners_cc_checkcode=' $HTTP_POST_VARS['merchantpartners_cc_checkcode'];

            
    zen_redirect(zen_href_link(FILENAME_CHECKOUT_PAYMENT$payment_error_return'SSL'truefalse));
          }

          
    $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_MERCHANTPARTNERS_CC_TEXT_CREDIT_CARD_OWNER,
                                                        
    'field' => $HTTP_POST_VARS['merchantpartners_cc_owner']),
                                                  array(
    'title' => MODULE_PAYMENT_MERCHANTPARTNERS_CC_TEXT_CREDIT_CARD_NUMBER,
                                                        
    'field' => substr($this->cc_card_number04) . str_repeat('X', (strlen($this->cc_card_number) - 8)) . substr($this->cc_card_number, -4)),
                                                  array(
    'title' => MODULE_PAYMENT_MERCHANTPARTNERS_CC_TEXT_CREDIT_CARD_EXPIRES,
                                                        
    'field' => strftime('%B, %Y'mktime(0,0,0,$HTTP_POST_VARS['merchantpartners_cc_expires_month'], 1'20' $HTTP_POST_VARS['merchantpartners_cc_expires_year'])))));


          return 
    $confirmation;
        }

       function 
    process_button() {
        global 
    $HTTP_POST_VARS$HTTP_GET_VARS$order$customer_id$session_id;
        
    $ns_quicksale 'ns_quicksale_cc';

        
    //IFD OSC_MODSQUAD.COM -- appending params at end is incorrect, leads to two ? in URL! Correct way is to pass in params to zen_href_link
        
    $url_parms 'payment_error=' $this->code '&merchantpartners_cc_owner=' urlencode($HTTP_POST_VARS['merchantpartners_cc_owner']);
        
    $declineurl 'http://trans.atsbank.com/cgi-bin/redirect.cgi?' zen_href_link(FILENAME_CHECKOUT_PAYMENT$url_parms'SSL'true);

        
    //IFD OSC_MODSQUAD.COM -- ? at end is incorrect; set session ID to true to correctly create URL that can be appended nicely by redirect script
        
    $accepturl 'http://trans.atsbank.com/cgi-bin/redirect.cgi?' zen_href_link(FILENAME_CHECKOUT_PROCESS$url_parms'SSL'true);

        
    $process_button_string =   zen_draw_hidden_field('action'$ns_quicksale) .
                                   
    zen_draw_hidden_field('acctid'MODULE_PAYMENT_MERCHANTPARTNERS_CC_ACCTID) .
                                   
    zen_draw_hidden_field('subid'MODULE_PAYMENT_MERCHANTPARTNERS_CC_SUBID) .
                                   
    zen_draw_hidden_field('ccname'$HTTP_POST_VARS['merchantpartners_cc_owner']) .
                                   
    zen_draw_hidden_field('ccnum'$HTTP_POST_VARS['merchantpartners_cc_number']) .
                                   
    zen_draw_hidden_field('expmonth'$HTTP_POST_VARS['merchantpartners_cc_expires_month']) .
                       
    zen_draw_hidden_field('expyear'$HTTP_POST_VARS['merchantpartners_cc_expires_year']) .
                       
    zen_draw_hidden_field('cvv2'$HTTP_POST_VARS['cvv2']) .
                       
    zen_draw_hidden_field('ci_memo'$HTTP_POST_VARS['comments']) .
                                   
    zen_draw_hidden_field('amount'number_format($order->info['total'], )) .
                                   
    zen_draw_hidden_field('ci_email'$order->customer['email_address']) .
                                   
    zen_draw_hidden_field('ci_billaddr1'$order->billing['street_address']) .
                                   
    zen_draw_hidden_field('ci_billaddr2'$order->billing['suburb']) .
                                   
    zen_draw_hidden_field('ci_billcity'$order->billing['city']) .
                                   
    zen_draw_hidden_field('ci_billstate'$order->billing['state']) .
                                   
    zen_draw_hidden_field('ci_billzip'$order->billing['postcode']) .
                                   
    zen_draw_hidden_field('ci_billcountry'$order->billing['country']['title']) .
                                   
    zen_draw_hidden_field('ci_consumername'$order->delivery['firstname'] . ' ' $order->delivery['lastname']) .
                                   
    zen_draw_hidden_field('ci_shipaddr1'$order->delivery['street_address']) .
                                   
    zen_draw_hidden_field('ci_shipaddr2'$order->delivery['suburb']) .
                                   
    zen_draw_hidden_field('ci_shipcity'$order->delivery['city']) .
                                   
    zen_draw_hidden_field('ci_shipstate'$order->delivery['state']) .
                                   
    zen_draw_hidden_field('ci_shipzip'$order->delivery['postcode']) .
                                   
    zen_draw_hidden_field('ci_shipcountry'$order->delivery['country']['title']) .
                                   
    zen_draw_hidden_field('Session_ID'$customer_id) .
                                   
    zen_draw_hidden_field('declineurl'$declineurl'''SSL'false) .
                                   
    zen_draw_hidden_field('accepturl'$accepturl'''SSL'false) .
                                   
    zen_draw_hidden_field('ci_phone'$order->customer['telephone']);

              if (
    MODULE_PAYMENT_MERCHANTPARTNERS_CC_AUTHONLY == 'true') {
              
    $process_button_string .= zen_draw_hidden_field('authonly''1');
              }
              else {
              
    $process_button_string .= zen_draw_hidden_field('authonly''0');
              }
    ;
          return 
    $process_button_string;
        }

        function 
    before_process() {
        global 
    $HTTP_POST_VARS;
        }



        function 
    after_process() {
          return 
    false;
        }

        function 
    get_error() {
          global 
    $HTTP_GET_VARS$HTTP_POST_VARS;

          if (isset(
    $HTTP_GET_VARS['Status'])) {
             
    $error = array('title' => MERCHANTPARTNERS_CC_ERROR_HEADING,
                         
    'error' => stripslashes(urldecode($HTTP_GET_VARS['Status'])) . ': ' .  stripslashes(urldecode($HTTP_GET_VARS['Reason'])));
          }
          else {
          
    $error = array('title' => MERCHANTPARTNERS_CC_ERROR_HEADING,
                         
    'error' => stripslashes(urldecode($HTTP_GET_VARS['error'])));
          }
          return 
    $error;
        }

        function 
    check() {
          if (isset(
    $this->_check)) {
            
    $check_query $db->Execute("select configuration_value from " TABLE_CONFIGURATION " where configuration_key = 'MODULE_PAYMENT_MERCHANTPARTNERS_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 merchantPartners Module', 'MODULE_PAYMENT_MERCHANTPARTNERS_CC_STATUS', 'True', 'Do you want to accept merchantPartners payments?', '6', '1', '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 ('AcctID', 'MODULE_PAYMENT_MERCHANTPARTNERS_CC_ACCTID', 'TEST0', 'The acctID used for the merchantPartners service', '6', '2', now())");
          
    $db->Execute("insert into " TABLE_CONFIGURATION " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('SubID', 'MODULE_PAYMENT_MERCHANTPARTNERS_CC_SUBID', '', 'The subID for the merchantPartners service', '6', '3', 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 ('Enable PreAuth', 'MODULE_PAYMENT_MERCHANTPARTNERS_CC_AUTHONLY', 'true', 'Do you Pre-Auth Only?', '6', '1', '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, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_MERCHANTPARTNERS_CC_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'zen_get_zone_class_title', 'zen_cfg_pull_down_zone_classes(', 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_MERCHANTPARTNERS_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_MERCHANTPARTNERS_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())");
        }

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

        function 
    keys() {
          return array(
    'MODULE_PAYMENT_MERCHANTPARTNERS_CC_STATUS''MODULE_PAYMENT_MERCHANTPARTNERS_CC_ACCTID''MODULE_PAYMENT_MERCHANTPARTNERS_CC_SUBID''MODULE_PAYMENT_MERCHANTPARTNERS_CC_AUTHONLY''MODULE_PAYMENT_MERCHANTPARTNERS_CC_ZONE''MODULE_PAYMENT_MERCHANTPARTNERS_CC_ORDER_STATUS_ID''MODULE_PAYMENT_MERCHANTPARTNERS_CC_SORT_ORDER');
        }
      }
    ?>
    Suggestions/corrections gratefully accepted!
    A little help with colors.
    myZenCartHost.com - Zen Cart Certified, PCI Compatible Hosting by JEANDRET
    Free SSL & Domain with semi-annual and longer hosting. Updating 1.5.2 and Up.

  2. #2
    Join Date
    Jan 2004
    Location
    N of San Antonio TX
    Posts
    9,682
    Plugin Contributions
    11

    Default Re: Problems porting OSC Merchant Partners Mod

    temporarily solved by getting the archived mod and changing includes/modules/payment/merchantpartners.php line 70 to reflect "process.cgi"

    Will still attempt to add the eCheck feature soon.
    A little help with colors.
    myZenCartHost.com - Zen Cart Certified, PCI Compatible Hosting by JEANDRET
    Free SSL & Domain with semi-annual and longer hosting. Updating 1.5.2 and Up.

 

 

Similar Threads

  1. v151 Porting OsC mod
    By delia in forum General Questions
    Replies: 7
    Last Post: 19 Jun 2013, 05:31 PM
  2. Merchant Partners Mod
    By Larisa in forum Addon Payment Modules
    Replies: 1
    Last Post: 17 Jun 2008, 09:12 PM
  3. Is there a mod for Merchant Partners Payment Gateways?
    By helloengage in forum Addon Payment Modules
    Replies: 1
    Last Post: 14 May 2008, 06:17 PM
  4. OSC mod porting - more help please - another code problem
    By strelitzia in forum Contribution-Writing Guidelines
    Replies: 0
    Last Post: 31 Oct 2007, 07:34 PM

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