minimum amount

Results 1 to 20 of 59
07 Oct 2009, 12:16
#1
broeder avatar

broeder

New Zenner

Join Date:
Dec 2008
Posts:
49
Plugin Contributions:
0

minimum amount

Hi,

Is there a way to make moneyorders OK if more than XXX ?

I read a post mentionning coding: "$this>=XXX;"
but in which file and where exactly...Also I would need an error message somewhere if the order is below XXX

Thanks if you can help.
09 Oct 2009, 14:04
#2
ajeh avatar

ajeh

Oba-san

Join Date:
Sep 2003
Posts:
62,757
Plugin Contributions:
1

Re: minimum amount

Edit the Check/Money Order moneyorder payment module and add below this line:
      $this->enabled = ((MODULE_PAYMENT_MONEYORDER_STATUS == 'True') ? true : false);


the new code:
      global $cart;
      if (!IS_ADMIN_FLAG && ($_SESSION['cart']->show_total() - $_SESSION['cart']->free_shipping_prices()) <= 100) {
      // show if less than or equal to $100
        $this->enabled = true;
      } else {
      // do not show if more than $100
        $this->enabled = false;
      }
11 Oct 2009, 12:11
#3
broeder avatar

broeder

New Zenner

Join Date:
Dec 2008
Posts:
49
Plugin Contributions:
0

Re: minimum amount

Thanks a lot!
02 Feb 2010, 15:38
#4
broeder avatar

broeder

New Zenner

Join Date:
Dec 2008
Posts:
49
Plugin Contributions:
0

Re: minimum amount

Hi,

I need to allow moneyorders on a customer-approved basis.
I guess I could create a group for that or check a field on approved customers.

But I also would need to add code to moneyorder.php....

Anyone has a clue ?

Thanks a lot.
02 Feb 2010, 15:44
#5
ajeh avatar

ajeh

Oba-san

Join Date:
Sep 2003
Posts:
62,757
Plugin Contributions:
1

Re: minimum amount

You could use something similar to the Check/Money Order moneyorder payment module where you test for whatever you use to distinguish which customers are allowed to use the Check/Money Order moneyorder payment module and only show it when they qualify based on that condition ...
05 Feb 2010, 18:16
#6
broeder avatar

broeder

New Zenner

Join Date:
Dec 2008
Posts:
49
Plugin Contributions:
0

Re: minimum amount

Thanks Ajeh,

Could could you be more specific ? Is that in moneyorder.php
or somewhere in Admin ?

Thanks for your help!
05 Feb 2010, 21:38
#7
ajeh avatar

ajeh

Oba-san

Join Date:
Sep 2003
Posts:
62,757
Plugin Contributions:
1

Re: minimum amount

Yes, I am thinking that the Checks/Money Orders moneyorder.php from the:
/includes/modules/payments/moneyorder.php

would be the best one to clone and customize for this ...
20 Jan 2011, 19:02
#8
limelites avatar

limelites

Totally Zenned

Join Date:
Jan 2009
Posts:
2,085
Plugin Contributions:
0

Re: minimum amount

Sorry to drag up an old thread like this, but Ajeh, if you're still following this then maybe you could offer me some of your gold star advice?

I'm trying to implement something very similar here. I have a payment module on my silkblooms.co.uk website so people can choose a payment option at checkout called "Pay by Instalments". But I only want this payment option to appear if the contents of their cart are more than £100. that's because I don't want to waste time on payment plans that are less than that.

So, how do I make this payment module appear as an option, only if the contents of the cart are over a certain amount?

I've read over your advice above and it's helped me narrow it down, but as usualy, my lack of PHP knowledge is preventing me from applying your advice to my instalments_plan.php.

Here are the contents of the file:

[PHP]<?php

class installment extends base {
/**
* $code determines the internal 'code' name used to designate "this" payment module
*
* @var string
*/
var $code;
/**
* $title is the displayed name for this payment method
*
* @var string
*/
var $title;
/**
* $description is a soft name for this payment method
*
* @var string
*/
var $description;
/**
* $enabled determines whether this module shows or not... in catalog.
*
* @var boolean
*/
var $enabled;
/**
* @return installment
*/
function installment() {
global $order;
$this->code = 'installment';
$this->title = MODULE_PAYMENT_INSTALLMENT_TEXT_TITLE;
$this->description = MODULE_PAYMENT_INSTALLMENT_TEXT_DESCRIPTION;
$this->sort_order = MODULE_PAYMENT_INSTALLMENT_SORT_ORDER;
$this->enabled = ((MODULE_PAYMENT_INSTALLMENT_STATUS == 'True') ? true : false);

if ($this->enabled) {
if (ENABLE_SSL != 'true')
$this->enabled = false;
}

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

$this->num_payments = MODULE_PAYMENT_INSTALLMENT_NUMBER_PAYMENTS;

if (is_object($order)) $this->update_status();
}
/**
* calculate zone matches and flag settings to determine whether this module should display to customers or not
*
*/
function update_status() {
global $order, $db;

if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_INSTALLMENT_ZONE > 0) ) {
$check_flag = false;
$check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_INSTALLMENT_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
while (!$check->EOF) {
if ($check->fields['zone_id'] < 1) {
$check_flag = true;
break;
} elseif ($check->fields['zone_id'] == $order->billing['zone_id']) {
$check_flag = true;
break;
}
$check->MoveNext();
}

if ($check_flag == false) {
$this->enabled = false;
}
}
}
/**
* JS validation which does error-checking of data-entry if this module is selected for use
* (Number, Owner, and CVV Lengths)
*
* @return string
*/
function javascript_validation() {
$js = ' if (payment_value == "' . $this->code . '") {' . "\n" .
' var cc_owner = document.checkout_payment.inst_cc_owner.value;' . "\n" .
' var cc_number = document.checkout_payment.inst_cc_number.value;' . "\n";

if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$js .= ' var cc_cvv = document.checkout_payment.inst_cc_cvv.value;' . "\n";
}

$js .= ' if (cc_owner == "" || cc_owner.length < ' . CC_OWNER_MIN_LENGTH . ') {' . "\n" .
' error_message = error_message + "' . MODULE_PAYMENT_INSTALLMENT_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_INSTALLMENT_TEXT_JS_CC_NUMBER . '";' . "\n" .
' error = 1;' . "\n" .
' }' . "\n";

if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$js .= ' if (cc_cvv == "" || cc_cvv.length < ' . CC_CVV_MIN_LENGTH . ') {' . "\n" .
' error_message = error_message + "' . MODULE_PAYMENT_INSTALLMENT_TEXT_JS_CC_CVV . '";' . "\n" .
' error = 1;' . "\n" .
' }' . "\n";
}

$js .= ' }' . "\n";
return $js;
}
/**
* Builds set of input fields for collecting cc info
*
* @return array
*/
function compute_share() {
global $order;
return $order->info['total']/$this->num_payments;
}

function selection() {
global $order;
global $currencies;
$share = $this->compute_share();
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)));
}
$explanation_text = sprintf(MODULE_PAYMENT_INSTALLMENT_TEXT_EXPLAIN_VERBAGE, $this->num_payments);

$explanation = '<a href="javascript:alert(\'' . $explanation_text . '\')">' . MODULE_PAYMENT_INSTALLMENT_TEXT_EXPLAIN_DETAILS . '</a>';

$onFocus = ' onfocus="methodSelect(\'pmt-' . $this->code . '\')"';

$selection = array('id' => $this->code,
'module' => $this->title,
'fields' => array(
array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_EXPLAIN_TITLE,
'field' => $explanation
),
array('title' => MODULE_PAYMENT_INSTALLMENT_PAYMENT_AMOUNT,
'field' => $currencies->format($share, true, $order->info['currency'], $order->info['currency_value'])
),
array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_OWNER,
'field' => zen_draw_input_field('inst_cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'], 'id="'.$this->code.'-cc-owner"' . $onFocus),
'tag' => $this->code.'-cc-owner'),

array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_NUMBER,
'field' => zen_draw_input_field('inst_cc_number', '', 'id="' . $this->code . '-cc-number"' . $onFocus),
'tag' => $this->code . '-cc-number'),
array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_EXPIRES,
'field' => zen_draw_pull_down_menu('inst_cc_expires_month', $expires_month, '', 'id="'.$this->code.'-cc-expires-month"' . $onFocus) . ' ' . zen_draw_pull_down_menu('inst_cc_expires_year', $expires_year, '', 'id="'.$this->code.'-cc-expires-year"'.$onFocus),
'tag' => $this->code.'-cc-expires-month')
));

if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$selection['fields'][] = array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_CVV,
'field' => zen_draw_input_field('inst_cc_cvv', '', 'size="4" maxlength="4" id="'.$this->code.'-cc-cvv"'.$onFocus),
'tag' => $this->code.'-cc-cvv');
}
return $selection;
}
/**
* Evaluates the Credit Card Type for acceptance and the validity of the Credit Card Number & Expiration Date
*
*/
function pre_confirmation_check() {
global $_POST, $messageStack;
/**
* Load the cc_validation class
*/
include(DIR_WS_CLASSES . 'cc_validation.php');

$cc_validation = new cc_validation();
$result = $cc_validation->validate($_POST['inst_cc_number'], $_POST['inst_cc_expires_month'], $_POST['inst_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 . '&cc_owner=' . urlencode($_POST['inst_cc_owner']) . '&cc_expires_month=' . $_POST['inst_cc_expires_month'] . '&cc_expires_year=' . $_POST['inst_cc_expires_year'];

$messageStack->add_session('checkout_payment', $error . '<!-- ['.$this->code.'] -->', 'error');
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;
}
/**
* Display Credit Card Information on the Checkout Confirmation Page
*
* @return array
*/
function confirmation() {
global $_POST;

$confirmation = array('title' => $this->title . ': ' . $this->cc_card_type,
'fields' => array(

array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_OWNER,
'field' => $_POST['inst_cc_owner']),
array('title' => MODULE_PAYMENT_INSTALLMENT_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_INSTALLMENT_TEXT_CREDIT_CARD_EXPIRES,
'field' => strftime('%B, %Y', mktime(0,0,0,$_POST['inst_cc_expires_month'], 1, '20' . $_POST['inst_cc_expires_year'])))));

if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$confirmation['fields'][] = array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_CVV,
'field' => $_POST['inst_cc_cvv']);
}
return $confirmation;
}
/**
* Build the data and actions to process when the "Submit" button is pressed on the order-confirmation screen.
* This sends the data to the payment gateway for processing.
* (These are hidden fields on the checkout confirmation page)
*
* @return string
*/
function process_button() {
global $_POST;

$process_button_string = zen_draw_hidden_field('inst_cc_owner', $_POST['inst_cc_owner']) .
zen_draw_hidden_field('inst_cc_expires', $_POST['inst_cc_expires_month'] . $_POST['inst_cc_expires_year']) .
zen_draw_hidden_field('inst_cc_type', $this->cc_card_type) .
zen_draw_hidden_field('inst_cc_number', $this->cc_card_number);
if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$process_button_string .= zen_draw_hidden_field('inst_cc_cvv', $_POST['inst_cc_cvv']);
}

return $process_button_string;
}
/**
* Store the CC info to the order
*
*/
function before_process() {
global $_POST, $order;

if (defined('MODULE_PAYMENT_INSTALLMENT_STORE_NUMBER') && MODULE_PAYMENT_INSTALLMENT_STORE_NUMBER == 'True') {
$order->info['cc_number'] = $_POST['inst_cc_number'];
}
$order->info['cc_expires'] = $_POST['inst_cc_expires'];
$order->info['cc_type'] = $_POST['inst_cc_type'];
$order->info['cc_owner'] = $_POST['inst_cc_owner'];
$order->info['cc_cvv'] = $_POST['inst_cc_cvv'];

$len = strlen($_POST['inst_cc_number']);
$this->cc_middle = substr($_POST['inst_cc_number'], 4, ($len-8));
if ( (defined('MODULE_PAYMENT_INSTALLMENT_EMAIL')) && (zen_validate_email(MODULE_PAYMENT_INSTALLMENT_EMAIL)) ) {
$order->info['cc_number'] = substr($_POST['inst_cc_number'], 0, 4) . str_repeat('X', (strlen($_POST['inst_cc_number']) - 8)) . substr($_POST['inst_cc_number'], -4);
}
}
/**
* Send the collected information via email to the store owner, storing outer digits and emailing middle digits
*
*/
function after_process() {
global $insert_id;

$message = sprintf(MODULE_PAYMENT_INSTALLMENT_TEXT_MIDDLE_DIGITS_MESSAGE, $insert_id, $this->cc_middle);
$html_msg['EMAIL_MESSAGE_HTML'] = str_replace("\n\n",'<br />',$message);

if ( (defined('MODULE_PAYMENT_INSTALLMENT_EMAIL')) && (zen_validate_email(MODULE_PAYMENT_INSTALLMENT_EMAIL)) ) {
zen_mail(MODULE_PAYMENT_INSTALLMENT_EMAIL, MODULE_PAYMENT_INSTALLMENT_EMAIL, SEND_EXTRA_CC_EMAILS_TO_SUBJECT . $insert_id, $message, STORE_NAME, EMAIL_FROM, $html_msg, 'cc_middle_digs');
} else {
$message = MODULE_PAYMENT_INSTALLMENT_TEXT_EMAIL_WARNING . $message;
$html_msg['EMAIL_MESSAGE_HTML'] = str_replace("\n\n",'<br />',$message);
zen_mail(EMAIL_FROM, EMAIL_FROM, MODULE_PAYMENT_INSTALLMENT_TEXT_EMAIL_ERROR . SEND_EXTRA_CC_EMAILS_TO_SUBJECT . $insert_id, $message, STORE_NAME, EMAIL_FROM, $html_msg, 'cc_middle_digs');
}
}
/**
* Store additional order information
*
* @param int $zf_order_id
*/
function after_order_create($zf_order_id) {
global $db, $order;
if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$db->execute("update " . TABLE_ORDERS . " set cc_cvv ='" . $order->info['cc_cvv'] . "' where orders_id = '" . $zf_order_id ."'");
}
}
/**
* Used to display error message details
*
* @return array
*/
function get_error() {
global $_GET;

$error = array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_ERROR,
'error' => stripslashes(urldecode($_GET['error'])));

return $error;
}
/**
* Check to see whether module is installed
*
* @return boolean
*/
function check() {
global $db;
if (!isset($this->_check)) {
$check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_INSTALLMENT_STATUS'");
$this->_check = $check_query->RecordCount();
}
return $this->_check;
}
/**
* Install the payment module and its configuration settings
*
*/
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 Module', 'MODULE_PAYMENT_INSTALLMENT_STATUS', 'True', 'Do you want to accept instalment payments by credit card?', '6', '130', '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 ('Split Credit Card Email Address', 'MODULE_PAYMENT_INSTALLMENT_EMAIL', '" . STORE_OWNER_EMAIL_ADDRESS . "', 'If an email address is entered, the middle digits of the credit card number will be sent to the email address (the outside digits are stored in the database with the middle digits censored)', '6', '131', 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 ('Collect & store the CVV number', 'MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV', 'True', 'Do you want to collect the CVV number. Note: If you do the CVV number will be stored in the database in an encoded format.', '6', '132', '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, set_function, date_added) values ('Store the Credit Card Number', 'MODULE_PAYMENT_INSTALLMENT_STORE_NUMBER', 'False', 'Do you want to store the Credit Card Number?<br /><br /><strong>WARNING: The Credit Card Number will be stored unenecrypted, and as such may represent a security problem.</strong>', '6', '133', '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 ('Sort order of display', 'MODULE_PAYMENT_INSTALLMENT_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '134' , 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_INSTALLMENT_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '135', '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, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_INSTALLMENT_ORDER_STATUS_ID', '1', 'Set the status of orders made with this payment module to this value', '6', '136', '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, date_added) values ('Number of Payments', 'MODULE_PAYMENT_INSTALLMENT_NUMBER_PAYMENTS', '6', 'Total/Number of Payments = monthly payment', '6', '137', now())");
}
/**
* Remove the module and all its settings
*
*/
function remove() {
global $db;
$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key like 'MODULE_PAYMENT_INSTALLMENT_%'");
}
/**
* Internal list of configuration keys used for configuration of the module
*
* @return array
*/
function keys() {
return array('MODULE_PAYMENT_INSTALLMENT_STATUS', 'MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV', 'MODULE_PAYMENT_INSTALLMENT_EMAIL', 'MODULE_PAYMENT_INSTALLMENT_ZONE', 'MODULE_PAYMENT_INSTALLMENT_ORDER_STATUS_ID', 'MODULE_PAYMENT_INSTALLMENT_SORT_ORDER', 'MODULE_PAYMENT_INSTALLMENT_NUMBER_PAYMENTS');
}
}
?>[/PHP]

On line 37, I can see the one I need to add some code to:

[PHP] $this->enabled = ((MODULE_PAYMENT_INSTALLMENT_STATUS == 'True') ? true : false);[/PHP]

Above, in your previous reply you said he should add this below the equivelant line:

[PHP]global $cart;
if (!IS_ADMIN_FLAG && ($_SESSION['cart']->show_total() - $_SESSION['cart']->free_shipping_prices()) <= 100) {
// show if less than or equal to $100
$this->enabled = true;
} else {
// do not show if more than $100
$this->enabled = false;
}[/PHP]

That's where I'm confused though. OK, so apart from changing the <= to a >= what do I need to change? I'm not looking to implement free shipping, I'm looking to make this payment module appear at the checkout confirmation page if the value of the cart contents exceeds £100.00

Hopefully you get this and can help. I just know it's like childs play to you this stuff :)
20 Jan 2011, 19:14
#9
ajeh avatar

ajeh

Oba-san

Join Date:
Sep 2003
Posts:
62,757
Plugin Contributions:
1

Re: minimum amount

You could add:
      if (!IS_ADMIN_FLAG && $order->info['total'] < 100.00) {
        $this->enabled = false;
      }


below the line:
    $this->enabled = ((MODULE_PAYMENT_INSTALLMENT_STATUS == 'True') ? true : false);
20 Jan 2011, 19:35
#10
limelites avatar

limelites

Totally Zenned

Join Date:
Jan 2009
Posts:
2,085
Plugin Contributions:
0

Re: minimum amount

Thanks for looking at this Ajeh. I've tried what you suggest, but it didn't work. I have a £35.00 cart and it's still showing.
20 Jan 2011, 19:41
#11
ajeh avatar

ajeh

Oba-san

Join Date:
Sep 2003
Posts:
62,757
Plugin Contributions:
1

Re: minimum amount

What does the:
function installment() {
// stuff here
}

read on the server right now?
20 Jan 2011, 19:46
#12
limelites avatar

limelites

Totally Zenned

Join Date:
Jan 2009
Posts:
2,085
Plugin Contributions:
0

Re: minimum amount

I'm not sure. I don't know what you mean?
20 Jan 2011, 19:48
#13
ajeh avatar

ajeh

Oba-san

Join Date:
Sep 2003
Posts:
62,757
Plugin Contributions:
1

Re: minimum amount

View the file on the server ...

You will see the section of the code that starts with:
function installment() {

I would like to see the code for that function ...

If you still are unsure, just post the full file, from the server, so I can see what you are using ...
20 Jan 2011, 19:52
#15
ajeh avatar

ajeh

Oba-san

Join Date:
Sep 2003
Posts:
62,757
Plugin Contributions:
1

Re: minimum amount

In post #9 I gave you new code to add to it and I want to see what is on the file, on the server, now reads with the changes ...
20 Jan 2011, 19:56
#16
limelites avatar

limelites

Totally Zenned

Join Date:
Jan 2009
Posts:
2,085
Plugin Contributions:
0

Re: minimum amount

I see. Sorry!!

[PHP]<?php

class installment extends base {
/**
* $code determines the internal 'code' name used to designate "this" payment module
*
* @var string
*/
var $code;
/**
* $title is the displayed name for this payment method
*
* @var string
*/
var $title;
/**
* $description is a soft name for this payment method
*
* @var string
*/
var $description;
/**
* $enabled determines whether this module shows or not... in catalog.
*
* @var boolean
*/
var $enabled;
/**
* @return installment
*/
function installment() {
global $order;
$this->code = 'installment';
$this->title = MODULE_PAYMENT_INSTALLMENT_TEXT_TITLE;
$this->description = MODULE_PAYMENT_INSTALLMENT_TEXT_DESCRIPTION;
$this->sort_order = MODULE_PAYMENT_INSTALLMENT_SORT_ORDER;
$this->enabled = ((MODULE_PAYMENT_INSTALLMENT_STATUS == 'True') ? true : false);
if (!IS_ADMIN_FLAG && $order->info['total'] < 100.00) {
$this->enabled = false;
}

if ($this->enabled) {
if (ENABLE_SSL != 'true')
$this->enabled = false;
}

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

$this->num_payments = MODULE_PAYMENT_INSTALLMENT_NUMBER_PAYMENTS;

if (is_object($order)) $this->update_status();
}
/**
* calculate zone matches and flag settings to determine whether this module should display to customers or not
*
*/
function update_status() {
global $order, $db;

if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_INSTALLMENT_ZONE > 0) ) {
$check_flag = false;
$check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_INSTALLMENT_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
while (!$check->EOF) {
if ($check->fields['zone_id'] < 1) {
$check_flag = true;
break;
} elseif ($check->fields['zone_id'] == $order->billing['zone_id']) {
$check_flag = true;
break;
}
$check->MoveNext();
}

if ($check_flag == false) {
$this->enabled = false;
}
}
}
/**
* JS validation which does error-checking of data-entry if this module is selected for use
* (Number, Owner, and CVV Lengths)
*
* @return string
*/
function javascript_validation() {
$js = ' if (payment_value == "' . $this->code . '") {' . "\n" .
' var cc_owner = document.checkout_payment.inst_cc_owner.value;' . "\n" .
' var cc_number = document.checkout_payment.inst_cc_number.value;' . "\n";

if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$js .= ' var cc_cvv = document.checkout_payment.inst_cc_cvv.value;' . "\n";
}

$js .= ' if (cc_owner == "" || cc_owner.length < ' . CC_OWNER_MIN_LENGTH . ') {' . "\n" .
' error_message = error_message + "' . MODULE_PAYMENT_INSTALLMENT_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_INSTALLMENT_TEXT_JS_CC_NUMBER . '";' . "\n" .
' error = 1;' . "\n" .
' }' . "\n";

if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$js .= ' if (cc_cvv == "" || cc_cvv.length < ' . CC_CVV_MIN_LENGTH . ') {' . "\n" .
' error_message = error_message + "' . MODULE_PAYMENT_INSTALLMENT_TEXT_JS_CC_CVV . '";' . "\n" .
' error = 1;' . "\n" .
' }' . "\n";
}

$js .= ' }' . "\n";
return $js;
}
/**
* Builds set of input fields for collecting cc info
*
* @return array
*/
function compute_share() {
global $order;
return $order->info['total']/$this->num_payments;
}

function selection() {
global $order;
global $currencies;
$share = $this->compute_share();
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)));
}
$explanation_text = sprintf(MODULE_PAYMENT_INSTALLMENT_TEXT_EXPLAIN_VERBAGE, $this->num_payments);

$explanation = '<a href="javascript:alert(\'' . $explanation_text . '\')">' . MODULE_PAYMENT_INSTALLMENT_TEXT_EXPLAIN_DETAILS . '</a>';

$onFocus = ' onfocus="methodSelect(\'pmt-' . $this->code . '\')"';

$selection = array('id' => $this->code,
'module' => $this->title,
'fields' => array(
array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_EXPLAIN_TITLE,
'field' => $explanation
),
array('title' => MODULE_PAYMENT_INSTALLMENT_PAYMENT_AMOUNT,
'field' => $currencies->format($share, true, $order->info['currency'], $order->info['currency_value'])
),
array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_OWNER,
'field' => zen_draw_input_field('inst_cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'], 'id="'.$this->code.'-cc-owner"' . $onFocus),
'tag' => $this->code.'-cc-owner'),

array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_NUMBER,
'field' => zen_draw_input_field('inst_cc_number', '', 'id="' . $this->code . '-cc-number"' . $onFocus),
'tag' => $this->code . '-cc-number'),
array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_EXPIRES,
'field' => zen_draw_pull_down_menu('inst_cc_expires_month', $expires_month, '', 'id="'.$this->code.'-cc-expires-month"' . $onFocus) . ' ' . zen_draw_pull_down_menu('inst_cc_expires_year', $expires_year, '', 'id="'.$this->code.'-cc-expires-year"'.$onFocus),
'tag' => $this->code.'-cc-expires-month')
));

if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$selection['fields'][] = array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_CVV,
'field' => zen_draw_input_field('inst_cc_cvv', '', 'size="4" maxlength="4" id="'.$this->code.'-cc-cvv"'.$onFocus),
'tag' => $this->code.'-cc-cvv');
}
return $selection;
}
/**
* Evaluates the Credit Card Type for acceptance and the validity of the Credit Card Number & Expiration Date
*
*/
function pre_confirmation_check() {
global $_POST, $messageStack;
/**
* Load the cc_validation class
*/
include(DIR_WS_CLASSES . 'cc_validation.php');

$cc_validation = new cc_validation();
$result = $cc_validation->validate($_POST['inst_cc_number'], $_POST['inst_cc_expires_month'], $_POST['inst_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 . '&cc_owner=' . urlencode($_POST['inst_cc_owner']) . '&cc_expires_month=' . $_POST['inst_cc_expires_month'] . '&cc_expires_year=' . $_POST['inst_cc_expires_year'];

$messageStack->add_session('checkout_payment', $error . '<!-- ['.$this->code.'] -->', 'error');
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;
}
/**
* Display Credit Card Information on the Checkout Confirmation Page
*
* @return array
*/
function confirmation() {
global $_POST;

$confirmation = array('title' => $this->title . ': ' . $this->cc_card_type,
'fields' => array(

array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_OWNER,
'field' => $_POST['inst_cc_owner']),
array('title' => MODULE_PAYMENT_INSTALLMENT_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_INSTALLMENT_TEXT_CREDIT_CARD_EXPIRES,
'field' => strftime('%B, %Y', mktime(0,0,0,$_POST['inst_cc_expires_month'], 1, '20' . $_POST['inst_cc_expires_year'])))));

if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$confirmation['fields'][] = array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_CVV,
'field' => $_POST['inst_cc_cvv']);
}
return $confirmation;
}
/**
* Build the data and actions to process when the "Submit" button is pressed on the order-confirmation screen.
* This sends the data to the payment gateway for processing.
* (These are hidden fields on the checkout confirmation page)
*
* @return string
*/
function process_button() {
global $_POST;

$process_button_string = zen_draw_hidden_field('inst_cc_owner', $_POST['inst_cc_owner']) .
zen_draw_hidden_field('inst_cc_expires', $_POST['inst_cc_expires_month'] . $_POST['inst_cc_expires_year']) .
zen_draw_hidden_field('inst_cc_type', $this->cc_card_type) .
zen_draw_hidden_field('inst_cc_number', $this->cc_card_number);
if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$process_button_string .= zen_draw_hidden_field('inst_cc_cvv', $_POST['inst_cc_cvv']);
}

return $process_button_string;
}
/**
* Store the CC info to the order
*
*/
function before_process() {
global $_POST, $order;

if (defined('MODULE_PAYMENT_INSTALLMENT_STORE_NUMBER') && MODULE_PAYMENT_INSTALLMENT_STORE_NUMBER == 'True') {
$order->info['cc_number'] = $_POST['inst_cc_number'];
}
$order->info['cc_expires'] = $_POST['inst_cc_expires'];
$order->info['cc_type'] = $_POST['inst_cc_type'];
$order->info['cc_owner'] = $_POST['inst_cc_owner'];
$order->info['cc_cvv'] = $_POST['inst_cc_cvv'];

$len = strlen($_POST['inst_cc_number']);
$this->cc_middle = substr($_POST['inst_cc_number'], 4, ($len-8));
if ( (defined('MODULE_PAYMENT_INSTALLMENT_EMAIL')) && (zen_validate_email(MODULE_PAYMENT_INSTALLMENT_EMAIL)) ) {
$order->info['cc_number'] = substr($_POST['inst_cc_number'], 0, 4) . str_repeat('X', (strlen($_POST['inst_cc_number']) - 8)) . substr($_POST['inst_cc_number'], -4);
}
}
/**
* Send the collected information via email to the store owner, storing outer digits and emailing middle digits
*
*/
function after_process() {
global $insert_id;

$message = sprintf(MODULE_PAYMENT_INSTALLMENT_TEXT_MIDDLE_DIGITS_MESSAGE, $insert_id, $this->cc_middle);
$html_msg['EMAIL_MESSAGE_HTML'] = str_replace("\n\n",'<br />',$message);

if ( (defined('MODULE_PAYMENT_INSTALLMENT_EMAIL')) && (zen_validate_email(MODULE_PAYMENT_INSTALLMENT_EMAIL)) ) {
zen_mail(MODULE_PAYMENT_INSTALLMENT_EMAIL, MODULE_PAYMENT_INSTALLMENT_EMAIL, SEND_EXTRA_CC_EMAILS_TO_SUBJECT . $insert_id, $message, STORE_NAME, EMAIL_FROM, $html_msg, 'cc_middle_digs');
} else {
$message = MODULE_PAYMENT_INSTALLMENT_TEXT_EMAIL_WARNING . $message;
$html_msg['EMAIL_MESSAGE_HTML'] = str_replace("\n\n",'<br />',$message);
zen_mail(EMAIL_FROM, EMAIL_FROM, MODULE_PAYMENT_INSTALLMENT_TEXT_EMAIL_ERROR . SEND_EXTRA_CC_EMAILS_TO_SUBJECT . $insert_id, $message, STORE_NAME, EMAIL_FROM, $html_msg, 'cc_middle_digs');
}
}
/**
* Store additional order information
*
* @param int $zf_order_id
*/
function after_order_create($zf_order_id) {
global $db, $order;
if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$db->execute("update " . TABLE_ORDERS . " set cc_cvv ='" . $order->info['cc_cvv'] . "' where orders_id = '" . $zf_order_id ."'");
}
}
/**
* Used to display error message details
*
* @return array
*/
function get_error() {
global $_GET;

$error = array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_ERROR,
'error' => stripslashes(urldecode($_GET['error'])));

return $error;
}
/**
* Check to see whether module is installed
*
* @return boolean
*/
function check() {
global $db;
if (!isset($this->_check)) {
$check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_INSTALLMENT_STATUS'");
$this->_check = $check_query->RecordCount();
}
return $this->_check;
}
/**
* Install the payment module and its configuration settings
*
*/
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 Module', 'MODULE_PAYMENT_INSTALLMENT_STATUS', 'True', 'Do you want to accept instalment payments by credit card?', '6', '130', '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 ('Split Credit Card Email Address', 'MODULE_PAYMENT_INSTALLMENT_EMAIL', '" . STORE_OWNER_EMAIL_ADDRESS . "', 'If an email address is entered, the middle digits of the credit card number will be sent to the email address (the outside digits are stored in the database with the middle digits censored)', '6', '131', 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 ('Collect & store the CVV number', 'MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV', 'True', 'Do you want to collect the CVV number. Note: If you do the CVV number will be stored in the database in an encoded format.', '6', '132', '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, set_function, date_added) values ('Store the Credit Card Number', 'MODULE_PAYMENT_INSTALLMENT_STORE_NUMBER', 'False', 'Do you want to store the Credit Card Number?<br /><br /><strong>WARNING: The Credit Card Number will be stored unenecrypted, and as such may represent a security problem.</strong>', '6', '133', '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 ('Sort order of display', 'MODULE_PAYMENT_INSTALLMENT_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '134' , 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_INSTALLMENT_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '135', '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, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_INSTALLMENT_ORDER_STATUS_ID', '1', 'Set the status of orders made with this payment module to this value', '6', '136', '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, date_added) values ('Number of Payments', 'MODULE_PAYMENT_INSTALLMENT_NUMBER_PAYMENTS', '6', 'Total/Number of Payments = monthly payment', '6', '137', now())");
}
/**
* Remove the module and all its settings
*
*/
function remove() {
global $db;
$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key like 'MODULE_PAYMENT_INSTALLMENT_%'");
}
/**
* Internal list of configuration keys used for configuration of the module
*
* @return array
*/
function keys() {
return array('MODULE_PAYMENT_INSTALLMENT_STATUS', 'MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV', 'MODULE_PAYMENT_INSTALLMENT_EMAIL', 'MODULE_PAYMENT_INSTALLMENT_ZONE', 'MODULE_PAYMENT_INSTALLMENT_ORDER_STATUS_ID', 'MODULE_PAYMENT_INSTALLMENT_SORT_ORDER', 'MODULE_PAYMENT_INSTALLMENT_NUMBER_PAYMENTS');
}
}
?>
[/PHP]
20 Jan 2011, 22:42
#17
ajeh avatar

ajeh

Oba-san

Join Date:
Sep 2003
Posts:
62,757
Plugin Contributions:
1

Re: minimum amount

Add this line above it and see what comes up on the checkout_payment page ...
echo 'I SEE TOTAL: ' . $order->info['total'] . '<br>';


NOTE: this will distort your display ...
21 Jan 2011, 01:11
#18
limelites avatar

limelites

Totally Zenned

Join Date:
Jan 2009
Posts:
2,085
Plugin Contributions:
0

Re: minimum amount

I've added it to line 38 but it appears to have done nothing. Nothing at all. Am I looking at the wrong file or something?

Here's the contents of the file with the new line inserted:

[PHP]<?php

class installment extends base {
/**
* $code determines the internal 'code' name used to designate "this" payment module
*
* @var string
*/
var $code;
/**
* $title is the displayed name for this payment method
*
* @var string
*/
var $title;
/**
* $description is a soft name for this payment method
*
* @var string
*/
var $description;
/**
* $enabled determines whether this module shows or not... in catalog.
*
* @var boolean
*/
var $enabled;
/**
* @return installment
*/
function installment() {
global $order;
$this->code = 'installment';
$this->title = MODULE_PAYMENT_INSTALLMENT_TEXT_TITLE;
$this->description = MODULE_PAYMENT_INSTALLMENT_TEXT_DESCRIPTION;
$this->sort_order = MODULE_PAYMENT_INSTALLMENT_SORT_ORDER;
$this->enabled = ((MODULE_PAYMENT_INSTALLMENT_STATUS == 'True') ? true : false);
echo 'I SEE TOTAL: ' . $order->info['total'] . '<br>';
if (!IS_ADMIN_FLAG && $order->info['total'] < 100.00) {
$this->enabled = false;
}

if ($this->enabled) {
if (ENABLE_SSL != 'true')
$this->enabled = false;
}

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

$this->num_payments = MODULE_PAYMENT_INSTALLMENT_NUMBER_PAYMENTS;

if (is_object($order)) $this->update_status();
}
/**
* calculate zone matches and flag settings to determine whether this module should display to customers or not
*
*/
function update_status() {
global $order, $db;

if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_INSTALLMENT_ZONE > 0) ) {
$check_flag = false;
$check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_INSTALLMENT_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
while (!$check->EOF) {
if ($check->fields['zone_id'] < 1) {
$check_flag = true;
break;
} elseif ($check->fields['zone_id'] == $order->billing['zone_id']) {
$check_flag = true;
break;
}
$check->MoveNext();
}

if ($check_flag == false) {
$this->enabled = false;
}
}
}
/**
* JS validation which does error-checking of data-entry if this module is selected for use
* (Number, Owner, and CVV Lengths)
*
* @return string
*/
function javascript_validation() {
$js = ' if (payment_value == "' . $this->code . '") {' . "\n" .
' var cc_owner = document.checkout_payment.inst_cc_owner.value;' . "\n" .
' var cc_number = document.checkout_payment.inst_cc_number.value;' . "\n";

if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$js .= ' var cc_cvv = document.checkout_payment.inst_cc_cvv.value;' . "\n";
}

$js .= ' if (cc_owner == "" || cc_owner.length < ' . CC_OWNER_MIN_LENGTH . ') {' . "\n" .
' error_message = error_message + "' . MODULE_PAYMENT_INSTALLMENT_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_INSTALLMENT_TEXT_JS_CC_NUMBER . '";' . "\n" .
' error = 1;' . "\n" .
' }' . "\n";

if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$js .= ' if (cc_cvv == "" || cc_cvv.length < ' . CC_CVV_MIN_LENGTH . ') {' . "\n" .
' error_message = error_message + "' . MODULE_PAYMENT_INSTALLMENT_TEXT_JS_CC_CVV . '";' . "\n" .
' error = 1;' . "\n" .
' }' . "\n";
}

$js .= ' }' . "\n";
return $js;
}
/**
* Builds set of input fields for collecting cc info
*
* @return array
*/
function compute_share() {
global $order;
return $order->info['total']/$this->num_payments;
}

function selection() {
global $order;
global $currencies;
$share = $this->compute_share();
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)));
}
$explanation_text = sprintf(MODULE_PAYMENT_INSTALLMENT_TEXT_EXPLAIN_VERBAGE, $this->num_payments);

$explanation = '<a href="javascript:alert(\'' . $explanation_text . '\')">' . MODULE_PAYMENT_INSTALLMENT_TEXT_EXPLAIN_DETAILS . '</a>';

$onFocus = ' onfocus="methodSelect(\'pmt-' . $this->code . '\')"';

$selection = array('id' => $this->code,
'module' => $this->title,
'fields' => array(
array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_EXPLAIN_TITLE,
'field' => $explanation
),
array('title' => MODULE_PAYMENT_INSTALLMENT_PAYMENT_AMOUNT,
'field' => $currencies->format($share, true, $order->info['currency'], $order->info['currency_value'])
),
array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_OWNER,
'field' => zen_draw_input_field('inst_cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'], 'id="'.$this->code.'-cc-owner"' . $onFocus),
'tag' => $this->code.'-cc-owner'),

array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_NUMBER,
'field' => zen_draw_input_field('inst_cc_number', '', 'id="' . $this->code . '-cc-number"' . $onFocus),
'tag' => $this->code . '-cc-number'),
array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_EXPIRES,
'field' => zen_draw_pull_down_menu('inst_cc_expires_month', $expires_month, '', 'id="'.$this->code.'-cc-expires-month"' . $onFocus) . ' ' . zen_draw_pull_down_menu('inst_cc_expires_year', $expires_year, '', 'id="'.$this->code.'-cc-expires-year"'.$onFocus),
'tag' => $this->code.'-cc-expires-month')
));

if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$selection['fields'][] = array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_CVV,
'field' => zen_draw_input_field('inst_cc_cvv', '', 'size="4" maxlength="4" id="'.$this->code.'-cc-cvv"'.$onFocus),
'tag' => $this->code.'-cc-cvv');
}
return $selection;
}
/**
* Evaluates the Credit Card Type for acceptance and the validity of the Credit Card Number & Expiration Date
*
*/
function pre_confirmation_check() {
global $_POST, $messageStack;
/**
* Load the cc_validation class
*/
include(DIR_WS_CLASSES . 'cc_validation.php');

$cc_validation = new cc_validation();
$result = $cc_validation->validate($_POST['inst_cc_number'], $_POST['inst_cc_expires_month'], $_POST['inst_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 . '&cc_owner=' . urlencode($_POST['inst_cc_owner']) . '&cc_expires_month=' . $_POST['inst_cc_expires_month'] . '&cc_expires_year=' . $_POST['inst_cc_expires_year'];

$messageStack->add_session('checkout_payment', $error . '<!-- ['.$this->code.'] -->', 'error');
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;
}
/**
* Display Credit Card Information on the Checkout Confirmation Page
*
* @return array
*/
function confirmation() {
global $_POST;

$confirmation = array('title' => $this->title . ': ' . $this->cc_card_type,
'fields' => array(

array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_OWNER,
'field' => $_POST['inst_cc_owner']),
array('title' => MODULE_PAYMENT_INSTALLMENT_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_INSTALLMENT_TEXT_CREDIT_CARD_EXPIRES,
'field' => strftime('%B, %Y', mktime(0,0,0,$_POST['inst_cc_expires_month'], 1, '20' . $_POST['inst_cc_expires_year'])))));

if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$confirmation['fields'][] = array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_CREDIT_CARD_CVV,
'field' => $_POST['inst_cc_cvv']);
}
return $confirmation;
}
/**
* Build the data and actions to process when the "Submit" button is pressed on the order-confirmation screen.
* This sends the data to the payment gateway for processing.
* (These are hidden fields on the checkout confirmation page)
*
* @return string
*/
function process_button() {
global $_POST;

$process_button_string = zen_draw_hidden_field('inst_cc_owner', $_POST['inst_cc_owner']) .
zen_draw_hidden_field('inst_cc_expires', $_POST['inst_cc_expires_month'] . $_POST['inst_cc_expires_year']) .
zen_draw_hidden_field('inst_cc_type', $this->cc_card_type) .
zen_draw_hidden_field('inst_cc_number', $this->cc_card_number);
if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$process_button_string .= zen_draw_hidden_field('inst_cc_cvv', $_POST['inst_cc_cvv']);
}

return $process_button_string;
}
/**
* Store the CC info to the order
*
*/
function before_process() {
global $_POST, $order;

if (defined('MODULE_PAYMENT_INSTALLMENT_STORE_NUMBER') && MODULE_PAYMENT_INSTALLMENT_STORE_NUMBER == 'True') {
$order->info['cc_number'] = $_POST['inst_cc_number'];
}
$order->info['cc_expires'] = $_POST['inst_cc_expires'];
$order->info['cc_type'] = $_POST['inst_cc_type'];
$order->info['cc_owner'] = $_POST['inst_cc_owner'];
$order->info['cc_cvv'] = $_POST['inst_cc_cvv'];

$len = strlen($_POST['inst_cc_number']);
$this->cc_middle = substr($_POST['inst_cc_number'], 4, ($len-8));
if ( (defined('MODULE_PAYMENT_INSTALLMENT_EMAIL')) && (zen_validate_email(MODULE_PAYMENT_INSTALLMENT_EMAIL)) ) {
$order->info['cc_number'] = substr($_POST['inst_cc_number'], 0, 4) . str_repeat('X', (strlen($_POST['inst_cc_number']) - 8)) . substr($_POST['inst_cc_number'], -4);
}
}
/**
* Send the collected information via email to the store owner, storing outer digits and emailing middle digits
*
*/
function after_process() {
global $insert_id;

$message = sprintf(MODULE_PAYMENT_INSTALLMENT_TEXT_MIDDLE_DIGITS_MESSAGE, $insert_id, $this->cc_middle);
$html_msg['EMAIL_MESSAGE_HTML'] = str_replace("\n\n",'<br />',$message);

if ( (defined('MODULE_PAYMENT_INSTALLMENT_EMAIL')) && (zen_validate_email(MODULE_PAYMENT_INSTALLMENT_EMAIL)) ) {
zen_mail(MODULE_PAYMENT_INSTALLMENT_EMAIL, MODULE_PAYMENT_INSTALLMENT_EMAIL, SEND_EXTRA_CC_EMAILS_TO_SUBJECT . $insert_id, $message, STORE_NAME, EMAIL_FROM, $html_msg, 'cc_middle_digs');
} else {
$message = MODULE_PAYMENT_INSTALLMENT_TEXT_EMAIL_WARNING . $message;
$html_msg['EMAIL_MESSAGE_HTML'] = str_replace("\n\n",'<br />',$message);
zen_mail(EMAIL_FROM, EMAIL_FROM, MODULE_PAYMENT_INSTALLMENT_TEXT_EMAIL_ERROR . SEND_EXTRA_CC_EMAILS_TO_SUBJECT . $insert_id, $message, STORE_NAME, EMAIL_FROM, $html_msg, 'cc_middle_digs');
}
}
/**
* Store additional order information
*
* @param int $zf_order_id
*/
function after_order_create($zf_order_id) {
global $db, $order;
if (MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV == 'True') {
$db->execute("update " . TABLE_ORDERS . " set cc_cvv ='" . $order->info['cc_cvv'] . "' where orders_id = '" . $zf_order_id ."'");
}
}
/**
* Used to display error message details
*
* @return array
*/
function get_error() {
global $_GET;

$error = array('title' => MODULE_PAYMENT_INSTALLMENT_TEXT_ERROR,
'error' => stripslashes(urldecode($_GET['error'])));

return $error;
}
/**
* Check to see whether module is installed
*
* @return boolean
*/
function check() {
global $db;
if (!isset($this->_check)) {
$check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_INSTALLMENT_STATUS'");
$this->_check = $check_query->RecordCount();
}
return $this->_check;
}
/**
* Install the payment module and its configuration settings
*
*/
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 Module', 'MODULE_PAYMENT_INSTALLMENT_STATUS', 'True', 'Do you want to accept instalment payments by credit card?', '6', '130', '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 ('Split Credit Card Email Address', 'MODULE_PAYMENT_INSTALLMENT_EMAIL', '" . STORE_OWNER_EMAIL_ADDRESS . "', 'If an email address is entered, the middle digits of the credit card number will be sent to the email address (the outside digits are stored in the database with the middle digits censored)', '6', '131', 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 ('Collect & store the CVV number', 'MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV', 'True', 'Do you want to collect the CVV number. Note: If you do the CVV number will be stored in the database in an encoded format.', '6', '132', '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, set_function, date_added) values ('Store the Credit Card Number', 'MODULE_PAYMENT_INSTALLMENT_STORE_NUMBER', 'False', 'Do you want to store the Credit Card Number?<br /><br /><strong>WARNING: The Credit Card Number will be stored unenecrypted, and as such may represent a security problem.</strong>', '6', '133', '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 ('Sort order of display', 'MODULE_PAYMENT_INSTALLMENT_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '134' , 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_INSTALLMENT_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '135', '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, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_INSTALLMENT_ORDER_STATUS_ID', '1', 'Set the status of orders made with this payment module to this value', '6', '136', '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, date_added) values ('Number of Payments', 'MODULE_PAYMENT_INSTALLMENT_NUMBER_PAYMENTS', '6', 'Total/Number of Payments = monthly payment', '6', '137', now())");
}
/**
* Remove the module and all its settings
*
*/
function remove() {
global $db;
$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key like 'MODULE_PAYMENT_INSTALLMENT_%'");
}
/**
* Internal list of configuration keys used for configuration of the module
*
* @return array
*/
function keys() {
return array('MODULE_PAYMENT_INSTALLMENT_STATUS', 'MODULE_PAYMENT_INSTALLMENT_COLLECT_CVV', 'MODULE_PAYMENT_INSTALLMENT_EMAIL', 'MODULE_PAYMENT_INSTALLMENT_ZONE', 'MODULE_PAYMENT_INSTALLMENT_ORDER_STATUS_ID', 'MODULE_PAYMENT_INSTALLMENT_SORT_ORDER', 'MODULE_PAYMENT_INSTALLMENT_NUMBER_PAYMENTS');
}
}
?>
[/PHP]
21 Jan 2011, 01:16
#19
limelites avatar

limelites

Totally Zenned

Join Date:
Jan 2009
Posts:
2,085
Plugin Contributions:
0

Re: minimum amount

Ajeh, I feel like an idiot! I've been editing the wrong file!!

When I went back to post #9 and made the changes to the correct file, sure enough it worked an absolute treat!

Thank you again for helping me out and please accept my apologies for messing with the wrong file....

I owe you a coffee!
21 Jan 2011, 01:32
#20
ajeh avatar

ajeh

Oba-san

Join Date:
Sep 2003
Posts:
62,757
Plugin Contributions:
1

Re: minimum amount

Thanks for the update that this is now working correctly for you ...

Hate the old updating the wrong file trick ... :lamo: