Example #1
0
function fflcommerce_process_checkout()
{
    if (!is_checkout() || is_fflcommerce_single_page(FFLCOMMERCE_PAY)) {
        return;
    }
    if (count(fflcommerce_cart::get_cart()) == 0) {
        wp_safe_redirect(get_permalink(fflcommerce_get_page_id('cart')));
        exit;
    }
    /** @var fflcommerce_checkout $_checkout */
    $_checkout = fflcommerce_checkout::instance();
    $result = $_checkout->process_checkout();
    if (isset($result['result']) && $result['result'] === 'success') {
        wp_safe_redirect(apply_filters('fflcommerce_is_ajax_payment_successful', $result['redirect']));
        exit;
    }
    if (isset($result['redirect'])) {
        wp_safe_redirect(get_permalink($result['redirect']));
        exit;
    }
}
Example #2
0
function fflcommerce_pay_action()
{
    if (!is_fflcommerce_single_page(FFLCOMMERCE_PAY)) {
        return;
    }
    if (isset($_GET['pay_for_order']) && isset($_GET['order']) && isset($_GET['order_id'])) {
        // Pay for existing order
        $order_key = urldecode($_GET['order']);
        $order_id = (int) $_GET['order_id'];
        $order = new fflcommerce_order($order_id);
        if ($order->id == $order_id && $order->order_key == $order_key && $order->status == 'pending') {
            // Set customer location to order location
            if ($order->billing_country) {
                fflcommerce_customer::set_country($order->billing_country);
            }
            if ($order->billing_state) {
                fflcommerce_customer::set_state($order->billing_state);
            }
            if ($order->billing_postcode) {
                fflcommerce_customer::set_postcode($order->billing_postcode);
            }
            // Pay form was posted - process payment
            if (isset($_POST['pay']) && fflcommerce::verify_nonce('pay')) {
                // Update payment method
                if ($order->order_total > 0) {
                    $payment_method = fflcommerce_clean($_POST['payment_method']);
                    $data = (array) maybe_unserialize(get_post_meta($order_id, 'order_data', true));
                    $data['payment_method'] = $payment_method;
                    update_post_meta($order_id, 'order_data', $data);
                    $available_gateways = fflcommerce_payment_gateways::get_available_payment_gateways();
                    $result = $available_gateways[$payment_method]->process_payment($order_id);
                    // Redirect to success/confirmation/payment page
                    if ($result['result'] == 'success') {
                        wp_safe_redirect($result['redirect']);
                        exit;
                    }
                } else {
                    // No payment was required for order
                    $order->payment_complete();
                    // filter redirect page
                    $checkout_redirect = apply_filters('fflcommerce_get_checkout_redirect_page_id', fflcommerce_get_page_id('thanks'));
                    wp_safe_redirect(get_permalink($checkout_redirect));
                    exit;
                }
            }
        } elseif ($order->status != 'pending') {
            fflcommerce::add_error(__('Your order has already been paid for. Please contact us if you need assistance.', 'fflcommerce'));
        } else {
            fflcommerce::add_error(__('Invalid order.', 'fflcommerce'));
        }
    } else {
        // Pay for order after checkout step
        if (isset($_GET['order'])) {
            $order_id = $_GET['order'];
        } else {
            $order_id = 0;
        }
        if (isset($_GET['key'])) {
            $order_key = $_GET['key'];
        } else {
            $order_key = '';
        }
        if ($order_id > 0) {
            $order = new fflcommerce_order($order_id);
            if ($order->order_key != $order_key || $order->status != 'pending') {
                wp_safe_redirect(apply_filters('fflcommerce_get_myaccount_page_id', get_permalink(fflcommerce_get_page_id('myaccount'))));
                exit;
            }
        } else {
            wp_safe_redirect(apply_filters('fflcommerce_get_myaccount_page_id', get_permalink(fflcommerce_get_page_id('myaccount'))));
            exit;
        }
    }
}
Example #3
0
    fflcommerce_render('shortcode/my_account/change_password', array());
}
function get_fflcommerce_view_order()
{
    return fflcommerce_shortcode_wrapper('fflcommerce_view_order');
}
function fflcommerce_view_order()
{
    $options = FFLCommerce_Base::get_options();
    $order = new fflcommerce_order($_GET['order']);
    fflcommerce_render('shortcode/my_account/view_order', array('order' => $order, 'options' => $options));
}
add_action('template_redirect', function () {
    $isViewOrder = is_fflcommerce_single_page(FFLCOMMERCE_VIEW_ORDER);
    $isEditAddress = is_fflcommerce_single_page(FFLCOMMERCE_EDIT_ADDRESS);
    $isChangePassword = is_fflcommerce_single_page(FFLCOMMERCE_CHANGE_PASSWORD);
    if (($isViewOrder || $isEditAddress || $isChangePassword) && !is_user_logged_in()) {
        wp_safe_redirect(apply_filters('fflcommerce_get_myaccount_page_id', get_permalink(fflcommerce_get_page_id(FFLCOMMERCE_MY_ACCOUNT))));
        exit;
    }
    if ($isViewOrder) {
        if (!isset($_GET['order'])) {
            wp_safe_redirect(apply_filters('fflcommerce_get_myaccount_page_id', get_permalink(fflcommerce_get_page_id('myaccount'))));
            exit;
        }
        $order = new fflcommerce_order($_GET['order']);
        if ($order->user_id != get_current_user_id()) {
            wp_safe_redirect(apply_filters('fflcommerce_get_myaccount_page_id', get_permalink(fflcommerce_get_page_id('myaccount'))));
            exit;
        }
    }
Example #4
0
/**
 * Checks if current page is one of given page types.
 *
 * @param string|array $pages List of page types to check.
 * @return bool Is current page one of provided?
 */
function is_fflcommerce_page($pages)
{
    $result = false;
    $pages = is_array($pages) ? $pages : array($pages);
    foreach ($pages as $page) {
        $result = $result || is_fflcommerce_single_page($page);
    }
    return $result;
}
Example #5
0
 public function is_available()
 {
     return !is_fflcommerce_single_page(FFLCOMMERCE_PAY);
 }