if (!empty($order_info['is_parent_order']) && $order_info['is_parent_order'] == 'Y') { $order_info['child_ids'] = implode(',', db_get_fields("SELECT order_id FROM ?:orders WHERE parent_order_id = ?i", $_REQUEST['order_id'])); } if (!empty($order_info)) { Tygh::$app['view']->assign('order_info', $order_info); } } fn_add_breadcrumb(__('landing_header')); } elseif ($mode == 'process_payment') { if (fn_allow_place_order($cart, $auth) == true) { $order_info = $cart; $order_info['products'] = $cart['products']; $order_info = fn_array_merge($order_info, $cart['user_data']); $order_info['order_id'] = $order_id = TIME . "_" . (!empty($auth['user_id']) ? $auth['user_id'] : 0); unset($order_info['user_data']); list($is_processor_script, $processor_data) = fn_check_processor_script($order_info['payment_id']); if ($is_processor_script) { set_time_limit(300); fn_define('IFRAME_MODE', true); include Registry::get('config.dir.payments') . $processor_data['processor_script']; fn_finish_payment($order_id, $pp_response, array()); fn_order_placement_routines('route', $order_id); } } } if (fn_cart_is_empty($cart) && !isset($force_redirection) && !in_array($mode, array('clear', 'delete', 'cart', 'update', 'apply_coupon', 'shipping_estimation', 'update_shipping', 'complete'))) { fn_set_notification('W', __('cart_is_empty'), __('cannot_proccess_checkout', 'K', 'cannot_proccess_checkout')); return array(CONTROLLER_STATUS_REDIRECT, 'checkout.cart'); } if (!empty($profile_fields)) { Tygh::$app['view']->assign('profile_fields', $profile_fields);
/** * Order payment processing * * @param array $payment payment data * @param int $order_id order ID * @param bool $force_notification force user notification (true - notify, false - do not notify, order status properties will be skipped) */ function fn_start_payment($order_id, $force_notification = array()) { $order_info = fn_get_order_info($order_id); list($is_processor_script, $processor_data) = fn_check_processor_script($order_info['payment_id'], ''); if ($is_processor_script) { set_time_limit(300); $idata = array('order_id' => $order_id, 'type' => 'S', 'data' => TIME); db_query("REPLACE INTO ?:order_data ?e", $idata); $index_script = INDEX_SCRIPT; $mode = MODE; include DIR_PAYMENT_FILES . $processor_data['processor_script']; return fn_finish_payment($order_id, $pp_response, $force_notification); } return false; }
/** * Order payment processing * * @param array $payment payment data * @param int $order_id order ID * @param bool $force_notification force user notification (true - notify, false - do not notify, order status properties will be skipped) * @return bool True on success, false otherwise */ function fn_start_payment($order_id, $force_notification = array(), $payment_info = array()) { $order_info = fn_get_order_info($order_id); if (!empty($order_info['payment_info']) && !empty($payment_info)) { $order_info['payment_info'] = $payment_info; } list($is_processor_script, $processor_data) = fn_check_processor_script($order_info['payment_id']); if ($is_processor_script) { set_time_limit(300); $idata = array('order_id' => $order_id, 'type' => 'S', 'data' => TIME); db_query("REPLACE INTO ?:order_data ?e", $idata); $mode = Registry::get('runtime.mode'); Embedded::leave(); include fn_get_processor_script_path($processor_data['processor_script']); return fn_finish_payment($order_id, $pp_response, $force_notification); } return false; }
/** * Copy of the fn_start_payment - to change MODE to place_order * * @param array $payment payment data * @param int $order_id order ID * @param bool $force_notification force user notification * (true - notify, false - do not notify, order status properties will be skipped) */ function fn_twg_start_payment($order_id, $force_notification = array(), $payment_info) { $order_info = fn_get_order_info($order_id); if (!empty($order_info['payment_info']) && !empty($payment_info)) { $order_info['payment_info'] = $payment_info; } list($is_processor_script, $processor_data) = fn_check_processor_script($order_info['payment_id'], ''); if ($is_processor_script) { set_time_limit(300); $idata = array('order_id' => $order_id, 'type' => 'S', 'data' => TIME); db_query("REPLACE INTO ?:order_data ?e", $idata); $index_script = Registry::get('config.admin_index'); $mode = 'place_order'; // Change mode from 'post' to 'place_order' include Registry::get('config.dir.payments') . $processor_data['processor_script']; return fn_finish_payment($order_id, $pp_response, $force_notification); } return false; }