uc_free_order.module in UC Free Order Payment Method 7
Same filename and directory in other branches
Adds a payment method to handle free orders.
File
uc_free_order.moduleView source
<?php
/**
* @file
* Adds a payment method to handle free orders.
*/
/**
* Implementation of hook_permission().
*/
function uc_free_order_permission() {
return array(
'test free order' => array(
'title' => t('Test Free Order Functionality'),
),
);
}
/**
* Implementation of hook_uc_payment_method().
*/
function uc_free_order_uc_payment_method() {
$methods['freeorder'] = array(
'name' => t('Free order'),
'title' => t('Free order - payment not necessary.'),
'desc' => t('Allow customers with $0 order totals to checkout without paying.'),
'callback' => 'uc_uc_payment_method_free_order',
'checkout' => TRUE,
'no_gateway' => TRUE,
'weight' => 1,
);
return $methods;
}
/**
* Implementation of hook_form_FORM_ID_alter().
*/
function uc_free_order_form_uc_cart_checkout_form_alter(&$form, &$form_state, $form_id) {
if (!user_access('test free order')) {
return;
}
$order = $form['panes']['payment']['line_items']['#order'];
$subtotal = $order->order_total;
//line_items[0]['amount']; //gets the order total, $order->order_total is always 0
if ($subtotal >= 0.01) {
unset($form['panes']['payment']['payment_method']['#options']['freeorder']);
return;
}
$free_order = $form['panes']['payment']['payment_method']['#options']['freeorder'];
$form['panes']['payment']['payment_method']['#options'] = array(
'freeorder' => $free_order,
);
}
function uc_free_order_form_uc_cart_checkout_review_form_alter(&$form, &$form_state, $form_id) {
$order = uc_order_load($_SESSION['cart_order']);
if ($order->payment_method != 'freeorder') {
return;
}
if ($order->order_total >= 0.01) {
drupal_set_message(t('We cannot process your order without payment.'), 'error');
drupal_goto('cart/checkout');
}
}
// Handles the free order payment method.
function uc_uc_payment_method_free_order($op, &$order) {
if ($op == 'cart-details') {
return array(
'#markup' => t('Continue with checkout to complete your free order.'),
);
uc_payment_enter($order->order_id, 'freeorder', 0, 0, NULL, t('Checkout completed for a free order.'));
}
}
Functions
Name![]() |
Description |
---|---|
uc_free_order_form_uc_cart_checkout_form_alter | Implementation of hook_form_FORM_ID_alter(). |
uc_free_order_form_uc_cart_checkout_review_form_alter | |
uc_free_order_permission | Implementation of hook_permission(). |
uc_free_order_uc_payment_method | Implementation of hook_uc_payment_method(). |
uc_uc_payment_method_free_order |