public function process_payment($order_id)
{
global $woocommerce;
$me = wp_get_current_user();
$order = new WC_Order($order_id);
if ($me->ID == 0) {
$woocommerce->add_error(__('Payment error:', 'woothemes') . __('You must be logged in to use this payment method', 'wc_account_funds'));
return;
}
$funds = get_user_meta($me->ID, 'account_funds', true);
if (!$funds) {
$funds = 0;
}
if ($funds < $order->order_total) {
$woocommerce->add_error(__('Payment error:', 'woothemes') . __('Insufficient account balance', 'wc_account_funds'));
return;
}
// Payment complete
$order->payment_complete();
// deduct amount from account funds
$new_funds = $funds - $order->order_total;
update_user_meta($me->ID, 'account_funds', $new_funds);
// Remove cart
$woocommerce->cart->empty_cart();
// Return thank you page redirect
if (method_exists($order, 'get_checkout_order_received_url')) {
return array('result' => 'success', 'redirect' => $order->get_checkout_order_received_url());
} else {
return array('result' => 'success', 'redirect' => add_query_arg('key', $order->order_key, add_query_arg('order', $order_id, get_permalink(get_option('woocommerce_thanks_page_id')))));
}
}