function fn_paypal_complete_checkout($token, $processor_data, $order_info)
{
    $pp_response['order_status'] = 'F';
    $reason_text = '';
    $paypal_checkout_details = fn_paypal_get_express_checkout_details($processor_data, $token);
    if (fn_paypal_ack_success($paypal_checkout_details)) {
        $result = fn_paypal_do_express_checkout($processor_data, $paypal_checkout_details, $order_info);
        if (fn_paypal_ack_success($result)) {
            $status = $result['PAYMENTINFO_0_PAYMENTSTATUS'];
            $pp_response['transaction_id'] = $result['PAYMENTINFO_0_TRANSACTIONID'];
            if ($status == 'Completed' || $status == 'Processed') {
                $pp_response['order_status'] = 'O';
                $reason_text = 'Accepted, awaiting ipn for processing ';
            } elseif ($status == 'Pending') {
                $pp_response['order_status'] = 'O';
                $reason_text = 'Pending ';
            } else {
                $reason_text = 'Declined ';
            }
            $reason_text = fn_paypal_process_add_fields($result, $reason_text);
            if (!empty($result['L_ERRORCODE0'])) {
                $reason_text .= ', ' . fn_paypal_get_error($result);
            }
        } else {
            $reason_text = fn_paypal_get_error($result);
        }
    } else {
        $reason_text = fn_paypal_get_error($paypal_checkout_details);
    }
    $pp_response['reason_text'] = $reason_text;
    if (fn_check_payment_script($processor_data['processor_script'], $order_info['order_id'])) {
        unset($_SESSION['pp_express_details']);
        fn_finish_payment($order_info['order_id'], $pp_response);
        fn_order_placement_routines('route', $order_info['order_id'], false);
    }
}
Esempio n. 2
0
                $pp_response['reason_text'] = __('payments.realex.bank_error');
            } elseif (floor($realex_response_code / 100) == 3) {
                // Error with Realex Payments systems – generally you can tell the customer to try again later.
                // The resolution time depends on the issue.
                $pp_response['order_status'] = $realex_statuses['realex_error'];
                $pp_response['reason_text'] = __('payments.realex.realex_error');
            } elseif (floor($realex_response_code / 100) == 5) {
                // Incorrect XML message formation or content. These are either development errors,
                // configuration errors or customer errors
                $pp_response['order_status'] = $realex_statuses['incorrect_request'];
                $pp_response['reason_text'] = __('payments.realex.incorrect_request');
            } elseif (floor($realex_response_code / 100) == 6) {
                // Client deactivated – your Realex account has been suspended. Contact Realex support for further information.
                $pp_response['order_status'] = $realex_statuses['connector_error'];
                $pp_response['reason_text'] = __('payments.realex.connector_error');
            }
            fn_finish_payment($_REQUEST['order_id'], $pp_response);
            if ($realex_response_code == '00') {
                $result = "<strong>Your transaction was successful</strong><br>To complete your order you must follow the link below.<br> Click <a href='" . fn_url("payment_notification.notify&payment=realex_redirect&order_id={$_REQUEST['order_id']}", AREA, 'current') . "'>here</a> to complete checkout";
            } else {
                $result = "<strong>Your transaction was unsuccessful.</strong><br> There was a problem with your order, please return to the checkout and try again.<br>Click <a href='" . fn_url("payment_notification.cancel&payment=realex_redirect&order_id={$_REQUEST['order_id']}", AREA, 'current') . "'>here</a> to return";
            }
            echo $result;
            exit;
        }
    } elseif ($mode == 'notify') {
        fn_order_placement_routines('route', $_REQUEST['order_id'], false);
    } elseif ($mode == 'cancel') {
        fn_order_placement_routines('checkout_redirect', $_REQUEST['order_id'], false);
    }
}
Esempio n. 3
0
            die('Access denied');
        }
        fn_set_notification('W', __('important'), __('text_transaction_cancelled'));
        fn_order_placement_routines('route', Tygh::$app['session']['order_id'], false);
    } elseif ($mode == 'decline') {
        if (!isset(Tygh::$app['session']['order_id'])) {
            die('Access denied');
        }
        fn_set_notification('E', '', __('text_order_placed_error'));
        fn_order_placement_routines('route', Tygh::$app['session']['order_id'], false);
    } elseif ($mode == 'refer') {
        if (!isset(Tygh::$app['session']['order_id'])) {
            die('Access denied');
        }
        fn_set_notification('W', __('important'), $processor_response['REFER']);
        fn_order_placement_routines('route', Tygh::$app['session']['order_id'], false);
    }
} else {
    $post_url = $processor_data['processor_params']['mode'] == 'test' ? 'https://test.pay4later.com/credit_app/' : 'https://secure.pay4later.com/credit_app/';
    $_order_id = $order_info['repaid'] ? $order_id . '_' . $order_info['repaid'] : $order_id;
    $order_description = __('order') . " #{$order_id}";
    Tygh::$app['session']['order_id'] = $order_id;
    $post_data = array('Identification[api_key]' => $processor_data['processor_params']['merchant_key'], 'Identification[RetailerUniqueRef]' => $_order_id, 'Identification[InstallationID]' => $processor_data['processor_params']['installation_id'], 'Goods[0][Description]' => $order_description, 'Goods[0][Quantity]' => '1', 'Goods[0][Price]' => $order_info['total'], 'Finance[Code]' => $processor_data['processor_params']['finance_product_code'], 'Finance[Deposit]' => $processor_data['processor_params']['deposit_amount']);
    fn_create_payment_form($post_url, $post_data, 'Pay4Later');
}
exit;
function fn_pay4later_order_placement_routines()
{
    Tygh::$app['session']['cart'] = array('user_data' => !empty(Tygh::$app['session']['cart']['user_data']) ? Tygh::$app['session']['cart']['user_data'] : array(), 'profile_id' => !empty(Tygh::$app['session']['cart']['profile_id']) ? Tygh::$app['session']['cart']['profile_id'] : 0, 'user_id' => !empty(Tygh::$app['session']['cart']['user_id']) ? Tygh::$app['session']['cart']['user_id'] : 0);
    Tygh::$app['session']['shipping_rates'] = array();
    unset(Tygh::$app['session']['shipping_hash']);
Esempio n. 4
0
*                                                                          *
* This  is  commercial  software,  only  users  who have purchased a valid *
* license  and  accept  to the terms of the  License Agreement can install *
* and use this program.                                                    *
*                                                                          *
****************************************************************************
* PLEASE READ THE FULL TEXT  OF THE SOFTWARE  LICENSE   AGREEMENT  IN  THE *
* "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE.            *
****************************************************************************/
use Tygh\Registry;
if (!defined('BOOTSTRAP')) {
    die('Access denied');
}
if (defined('PAYMENT_NOTIFICATION')) {
    if ($mode == 'notify') {
        fn_order_placement_routines('route', $_REQUEST['order_id']);
    } elseif ($mode == 'process') {
        $pp_response = array('order_status' => 'F', 'pp_response' => '', 'reason_text' => '');
        $order_id = $_REQUEST['order_id'];
        if (!empty($_REQUEST['payment_number'])) {
            $pp_response['transaction_id'] = $_REQUEST['payment_number'];
            $conf_key = db_get_field("SELECT data FROM ?:order_data WHERE type = 'E' AND order_id = ?i", $order_id);
            if (empty($conf_key) || $conf_key != $_REQUEST['conf_key']) {
                $pp_response['reason_text'] .= 'Confirmation key does not match; ';
            } else {
                db_query("DELETE FROM ?:order_data WHERE type = 'E' AND order_id = ?i", $order_id);
                $pp_response['order_status'] = 'P';
            }
        } else {
            $pp_response['reason_text'] .= 'Payment number is empty; ';
        }
Esempio n. 5
0
        exit;
    }
} elseif (defined('PAYMENT_NOTIFICATION')) {
    if (!defined('BOOTSTRAP')) {
        die('Access denied');
    }
    if ($mode == 'process') {
        $order_id = intval($_REQUEST['ref']);
        fn_order_placement_routines('route', $order_id, false);
    } elseif ($mode == 'cancel') {
        $params = array();
        parse_str(base64_decode($_REQUEST['divers']), $params);
        $pp_response['order_status'] = 'N';
        $pp_response['reason_text'] = __('text_transaction_cancelled');
        fn_finish_payment($params['order_id'], $pp_response, false);
        fn_order_placement_routines('route', $params['order_id'], false);
    }
} else {
    if (!defined('BOOTSTRAP')) {
        die('Access denied');
    }
    // Params
    $url = array('psc' => 'https://billing.paysite-cash.biz', 'ep' => 'https://secure.easy-pay.net');
    $site_id = $processor_data['processor_params']['site_id'];
    $currency = $processor_data['processor_params']['currency'];
    $processor = $processor_data['processor_params']['processor'];
    $test = $processor_data['processor_params']['mode'];
    $debug = $processor_data['processor_params']['debug'];
    $nocurrencies = $processor_data['processor_params']['nocurrencies'];
    $order_id = $order_info['order_id'];
    $email = $order_info['email'];
Esempio n. 6
0
        exit;
    } elseif ($mode == 'auth' && !empty(Tygh::$app['session']['cmpi']['order_id'])) {
        $view = Tygh::$app['view'];
        $view->assign('order_action', __('placing_order'));
        $view->display('views/orders/components/placing_order.tpl');
        fn_flush();
        fn_cmpi_authenticate();
        if (Tygh::$app['session']['cmpi']['signature'] == 'Y' && in_array(Tygh::$app['session']['cmpi']['pares'], array('Y', 'A', 'U'))) {
            define('DO_DIRECT_PAYMENT', true);
        } else {
            Tygh::$app['session']['cmpi']['auth_error'] = true;
            fn_set_notification('E', __('authentication_failed'), __('text_authentication_failed_message'));
        }
        define('CMPI_PROCESSED', true);
        fn_start_payment(Tygh::$app['session']['cmpi']['order_id']);
        fn_order_placement_routines('route', Tygh::$app['session']['cmpi']['order_id']);
        exit;
    }
}
/**
 * Make cmpi_lookup request to 3-D Secure sevice provider
 *
 * @param array $processor_data Payment processor data
 * @param array $order_info Order information
 * @return boolean true
 */
function fn_cmpi_lookup($processor_data, $order_info, $mode = '')
{
    unset(Tygh::$app['session']['cmpi']);
    $amount = preg_replace('/\\D/', '', $order_info['total']);
    // array with ISO codes of currencies. //TODO: move to database.
Esempio n. 7
0
                }
            } else {
                $pp_response['order_status'] = 'P';
            }
            fn_finish_payment($order_id, $pp_response);
            exit;
        } elseif ($mode == 'finish') {
            $order_info = fn_get_order_info($order_id);
            if ($order_info['status'] == 'O') {
                $pp_response = array();
                $pp_response['order_status'] = 'F';
                $pp_response['reason_text'] = fn_get_lang_var('merchant_response_was_not_received');
                $pp_response['transaction_id'] = '';
                fn_finish_payment($order_id, $pp_response);
            }
            fn_order_placement_routines($order_id, false);
        }
    }
} else {
    $current_location = Registry::get('config.current_location');
    $lang_code = CART_LANGUAGE == 'TH' ? 'TH' : 'EN';
    $sess = '&' . SESS_NAME . '=' . Session::get_id();
    $_SESSION['thaiepay_refno'] = $order_id;
    echo <<<EOT
<html>
<body onLoad="document.process.submit();">
<form method="post" action="https://www.thaiepay.com/epaylink/payment.aspx" name="process">
\t<input type="hidden" name="refno" value="{$order_id}">
\t<input type="hidden" name="merchantid" value="{$processor_data['params']['merchantid']}">
\t<input type="hidden" name="customeremail" value="{$order_info['email']}">
\t<input type="hidden" name="productdetail" value="{$processor_data['params']['details']}">
Esempio n. 8
0
        exit;
    } elseif ($mode == 'auth' && !empty($_SESSION['cmpi']['order_id'])) {
        $view = Tygh::$app['view'];
        $view->assign('order_action', __('placing_order'));
        $view->display('views/orders/components/placing_order.tpl');
        fn_flush();
        fn_cmpi_authenticate();
        if ($_SESSION['cmpi']['signature'] == 'Y' && in_array($_SESSION['cmpi']['pares'], array('Y', 'A', 'U'))) {
            define('DO_DIRECT_PAYMENT', true);
        } else {
            $_SESSION['cmpi']['auth_error'] = true;
            fn_set_notification('E', __('authentication_failed'), __('text_authentication_failed_message'));
        }
        define('CMPI_PROCESSED', true);
        fn_start_payment($_SESSION['cmpi']['order_id']);
        fn_order_placement_routines('route', $_SESSION['cmpi']['order_id']);
        exit;
    }
}
/**
 * Make cmpi_lookup request to 3-D Secure sevice provider
 *
 * @param array $processor_data Payment processor data
 * @param array $order_info Order information
 * @return boolean true
 */
function fn_cmpi_lookup($processor_data, $order_info, $mode = '')
{
    unset($_SESSION['cmpi']);
    $amount = preg_replace('/\\D/', '', $order_info['total']);
    // array with ISO codes of currencies. //TODO: move to database.
                                        break;
                                    }
                                }
                            } else {
                                $error = true;
                            }
                        } else {
                            $error = true;
                        }
                        if ($error) {
                            fn_set_notification('E', __('error'), __('error_status_not_changed'));
                        }
                    }
                }
            }
            fn_order_placement_routines($action, $order_id, $notification_rules, true);
        } else {
            return array(CONTROLLER_STATUS_REDIRECT, "order_management.{$_suffix}");
        }
    }
    return array(CONTROLLER_STATUS_OK, "order_management.{$_suffix}");
}
if ($mode == 'customer_info') {
    if (!empty($_REQUEST['profile_id'])) {
        $user_data = fn_get_user_info($customer_auth['user_id'], true, $_REQUEST['profile_id']);
        Registry::get('view')->assign('user_data', $user_data);
    }
    return array(CONTROLLER_STATUS_OK, "order_management.{$_suffix}");
}
// Delete discount coupon
if ($mode == 'delete_coupon') {
Esempio n. 10
0
                        $pp_response['order_status'] = 'P';
                        $pp_response['transaction_id'] = $process->getPaymentId();
                        $pp_response['reason_text'] = __("rus_payments.yandex_money_payer") . ": " . $process->getPayer() . "; " . __("rus_payments.yandex_money_payee") . ": " . $process->getPayee();
                    } else {
                        $pp_response['reason_text'] = __("rus_payments.yandex_money_" . $process->getError());
                    }
                } else {
                    if ($request->getError() == 'ext_action_required') {
                        $pp_response['reason_text'] = __("rus_payments.yandex_money_" . $request->getError(), array("[ext_action_uri]" => $request->getExtActionUri()));
                    } else {
                        $pp_response['reason_text'] = __("rus_payments.yandex_money_" . $request->getError());
                    }
                }
            } else {
                $pp_response['reason_text'] = __("rus_payments.yandex_money_" . $receiveTokenResp->getError());
            }
            fn_finish_payment($order_info['order_id'], $pp_response);
        }
        fn_order_placement_routines('route', $order_info['order_id'], false);
    }
} else {
    $scope = "payment.to-account(\"" . $processor_data['processor_params']['payee_id'] . "\",\"account\").limit(," . $order_info['total'] . ")";
    $redirect_url = fn_url("payment_notification.process?payment=yandex_p2p&order_id=" . $order_info['order_id']);
    $authUri = Client::authorizeUri($processor_data['processor_params']['client_id'], $redirect_url, $scope);
    fn_create_payment_form($authUri, array(), 'Yandex.P2P', false);
}
function fn_yandex_money_is_test_mode($processor_data)
{
    return !empty($processor_data['processor_params']['test_mode']) && $processor_data['processor_params']['test_mode'] == 'Y';
}
exit;
Esempio n. 11
0
        exit;
    } elseif ($mode == 'result') {
        if (fn_check_payment_script('ogone_web.php', $_REQUEST['order_id'])) {
            $order_info = fn_get_order_info($_REQUEST['order_id'], true);
            if ($order_info['status'] == 'N') {
                fn_change_order_status($_REQUEST['order_id'], 'O', '', false);
            }
        }
        fn_order_placement_routines($_REQUEST['order_id'], false);
    } elseif ($mode == 'cancel') {
        if (fn_check_payment_script('ogone_web.php', $_REQUEST['order_id'])) {
            $pp_response = array();
            $pp_response['order_status'] = 'N';
            $pp_response['reason_text'] = fn_get_lang_var('text_transaction_cancelled');
            fn_finish_payment($_REQUEST['order_id'], $pp_response);
            fn_order_placement_routines($_REQUEST['order_id'], false);
        }
    }
} else {
    $pp_merch = $processor_data['params']['pspid'];
    $pp_secret = $processor_data['params']['sha_sign'];
    $pp_curr = $processor_data['params']['currency'];
    $pp_test = $processor_data['params']['mode'] == 'test' ? "https://secure.ogone.com:443/ncol/test/orderstandard.asp" : "https://secure.ogone.com:443/ncol/prod/orderstandard.asp";
    $ordr = $order_id . '_' . fn_date_format(time(), '%H:%M:%S');
    $ordr = $order_info['repaid'] ? $ordr . '_' . $order_info['repaid'] : $ordr;
    $langs = array("EN" => "en_US", "FR" => "fr_FR", "NL" => "nl_NL", "IT" => "it_IT", "DE" => "de_DE", "ES" => "es_ES", "NO" => "no_NO");
    $post = array();
    $post["amount"] = 100 * $order_info["total"];
    $post["email"] = trim(substr($order_info['email'], 0, 50));
    $post["owneraddress"] = trim(substr(trim($order_info['b_address'] . (!empty($order_info['b_address_2']) ? " ; " . $order_info['b_address_2'] : '')), 0, 35));
    $post["ownertown"] = trim(substr($order_info['b_city'], 0, 25));
Esempio n. 12
0
* and use this program.                                                    *
*                                                                          *
****************************************************************************
* PLEASE READ THE FULL TEXT  OF THE SOFTWARE  LICENSE   AGREEMENT  IN  THE *
* "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE.            *
****************************************************************************/
//
// $Id: google_checkout.php 10329 2010-08-03 14:46:04Z klerik $
//
if (!defined('AREA')) {
    die('Access denied');
}
$index_script = Registry::get('customer_index');
if (defined('PAYMENT_NOTIFICATION')) {
    if (!empty($_SESSION['order_id'])) {
        fn_order_placement_routines($_SESSION['order_id']);
    } else {
        fn_set_notification('E', fn_get_lang_var('error'), fn_get_lang_var('order_was_not_placed'));
        fn_redirect(Registry::get('config.http_location') . "/{$index_script}?dispatch=checkout.cart");
    }
} elseif (!empty($_payment_id) && !fn_cart_is_empty($cart) && $processor_data['params']['policy_agreement'] == 'Y') {
    $return_url = Registry::get('config.current_location') . "/{$index_script}?dispatch=payment_notification.notify&amp;payment=google_checkout&amp;" . SESS_NAME . '=' . Session::get_id();
    $edit_cart_url = Registry::get('config.current_location') . "/{$index_script}?dispatch=checkout.cart";
    $calculation_url = ($processor_data["params"]["test"] == 'N' ? Registry::get('config.https_location') : Registry::get('config.current_location')) . "/payments/google_calculations.php";
    $_currency = $processor_data['params']['currency'];
    $base_domain = 'https://' . ($processor_data['params']['test'] == 'N' ? 'checkout.google.com' : 'sandbox.google.com/checkout');
    $base_url = $base_domain . '/cws/v2/Merchant/' . $processor_data['params']['merchant_id'];
    $checkout_url = $base_url . '/checkout';
    $request_url = $base_url . '/request';
    // Form XML array with cart items
    $_items = '';
Esempio n. 13
0
        $params = fn_payway_decrypt_parameters($processor_data['params']['encryption_key'], $_REQUEST['EncryptedParameters'], $_REQUEST['Signature']);
        if (!empty($params)) {
            $status = db_get_field("SELECT status FROM ?:orders WHERE order_id = ?i", $params['payment_reference']);
            if ($status == 'O') {
                if (!empty($params['bank_reference'])) {
                    $pp_response["order_status"] = 'P';
                    $pp_response["reason_text"] = "Authorization code: " . $params['bank_reference'];
                } else {
                    $pp_response["order_status"] = 'F';
                }
                $pp_response['transaction_id'] = $params['payment_number'];
                if (fn_check_payment_script('westpac.php', $params['payment_reference'])) {
                    fn_finish_payment($params['payment_reference'], $pp_response, false);
                }
            }
            fn_order_placement_routines($params['payment_reference']);
        }
    }
    exit;
} else {
    $merchant_id = $processor_data['params']['mode'] == 'test' ? 'TEST' : $processor_data['params']['merchant_id'];
    $biller_code = $processor_data['params']['biller_code'];
    echo <<<EOT
<html>
<body onLoad="javascript: document.process.submit();">
<form method="post" action="https://www.payway.com.au/MakePayment" name="process">
\t<input type="hidden" name="merchant_id" value="{$merchant_id}">
\t<input type="hidden" name="biller_code" value="{$biller_code}">

EOT;
    // Products
Esempio n. 14
0
function fn_manageState($state, $idstate, $mode, $orderId, $payNLTransactionID, $processor_data)
{
    switch ($state) {
        case 'PENDING':
            if ($mode == 'exchange') {
                echo 'TRUE| state:PENDING, orderId:' . $orderId . ', transactionId:' . $payNLTransactionID . ',idState:' . $idstate . ', service_id:' . $processor_data['processor_params']['service_id'] . ',token_api:' . $processor_data['processor_params']['token_api'] . ',statuses:' . print_r($processor_data['processor_params']['statuses'], true);
            } else {
                fn_order_placement_routines('route', $orderId);
            }
            die;
            break;
        case 'PAID':
            $payData = fn_paynl_getInfo($payNLTransactionID, $processor_data);
            $pp_response = array('order_status' => $idstate, 'naam' => $payData['paymentDetails']['identifierName'], 'rekening' => $payData['paymentDetails']['identifierPublic']);
            if ($mode == 'exchange') {
                echo 'TRUE| orderId=' . $orderId . ', transactionId=' . $payNLTransactionID . ',idState:' . $idstate . ', service_id:' . $processor_data['processor_params']['service_id'] . ',token_api:' . $processor_data['processor_params']['token_api'] . ',statuses:' . print_r($processor_data['processor_params']['statuses'], true);
                fn_finish_payment($orderId, $pp_response, true);
                fn_updatePayTransaction($payNLTransactionID, 'PAID');
                die;
            } else {
                fn_order_placement_routines('route', $orderId);
            }
            break;
        case 'CANCEL':
            if ($mode == 'exchange') {
                echo 'TRUE| CANCEL orderId=' . $orderId . ', transactionId=' . $payNLTransactionID . ',idState:' . $idstate . ', service_id:' . $processor_data['processor_params']['service_id'] . ',token_api:' . $processor_data['processor_params']['token_api'] . ',statuses:' . print_r($processor_data['processor_params']['statuses'], true);
                fn_updatePayTransaction($payNLTransactionID, 'CANCEL');
                die;
            } else {
                fn_updatePayTransaction($payNLTransactionID, 'CANCEL');
                fn_change_order_status($orderId, $idstate, '', false);
                fn_order_placement_routines('route', $orderId);
            }
            break;
        case 'CHECKAMOUNT':
            if ($mode == 'exchange') {
                echo 'TRUE| CHECKAMOUNT orderId=' . $orderId . ', transactionId=' . $payNLTransactionID . ',idState:' . $idstate . ', service_id:' . $processor_data['processor_params']['service_id'] . ',token_api:' . $processor_data['processor_params']['token_api'] . ',statuses:' . print_r($processor_data['processor_params']['statuses'], true);
                fn_updatePayTransaction($payNLTransactionID, 'CHECKAMOUNT');
                die;
            } else {
                fn_updatePayTransaction($payNLTransactionID, 'CHECKAMOUNT');
                fn_change_order_status($orderId, $idstate, '', false);
                fn_order_placement_routines('route', $orderId, false);
            }
            break;
        default:
            $pp_response['order_status'] = $processor_data['processor_params']['statuses'][$state];
            fn_updatePayTransaction($payNLTransactionID, 'PENDING');
            fn_change_order_status($orderId, $pp_response['order_status'], '', false);
            break;
    }
}
Esempio n. 15
0
 /**
  * Ends 3DSecure transaction.
  * This method is called after bank ACS redirects user back to merchant site.
  *
  * @return array Payment processor response
  */
 protected function end3DSecureTransaction()
 {
     $verifysig_response = simplexml_load_string($this->send3DSecureVerifySignatureRequest($_REQUEST['PaRes']));
     $verifysig_result = (string) $verifysig_response->result;
     $verifysig_3dsecure_status = (string) $verifysig_response->threedsecure->status;
     $success_payment = false;
     $mpi_data = array('cavv' => (string) $verifysig_response->threedsecure->cavv, 'xid' => (string) $verifysig_response->threedsecure->xid, 'eci' => (string) $verifysig_response->threedsecure->eci);
     // Successful authentication
     if ($verifysig_result == '00' && $verifysig_3dsecure_status == 'Y') {
         $this->response['payments.realex.3d_secure_message'] = '3DS Verifysig request: Authentication successful';
         $success_payment = $this->authorizeTransaction(self::TRANSACTION_FULL_3DSECURE, $mpi_data);
     } elseif ($verifysig_result == '00' && $verifysig_3dsecure_status == 'A') {
         $this->response['payments.realex.3d_secure_message'] = '3DS Verifysig request: Cardholder not Enrolled or Authentication Attempt Acknowledged';
         $success_payment = $this->authorizeTransaction(self::TRANSACTION_MERCHANT_3DSECURE, $mpi_data);
     } elseif ($verifysig_result == '00' && $verifysig_3dsecure_status == 'U' && ($this->response['payments.realex.3d_secure_message'] = '3DS Verifysig request: Authentication Unavailable') || $verifysig_result == '00' && $verifysig_3dsecure_status == 'N' && ($this->response['payments.realex.3d_secure_message'] = '3DS Verifysig request: Incorrect Password') || $verifysig_result >= 500 && $verifysig_result < 600 && ($this->response['payments.realex.3d_secure_message'] = '3DS Verifysig request: Invalid response from ACS')) {
         if (!$this->getIsLiabilityShiftRequired()) {
             $success_payment = $this->authorizeTransaction(self::TRANSACTION_NON_3DSECURE, $mpi_data);
         }
     } elseif ($verifysig_result == '110') {
         $this->response['payments.realex.3d_secure_message'] = '3DS Verifysig request: Enrolled but Invalid Response from ACS';
     }
     fn_finish_payment($this->order_info['order_id'], $this->response);
     if ($success_payment) {
         fn_order_placement_routines('route', $this->order_info['order_id'], false);
     } else {
         fn_set_notification('E', false, "Your transaction was unsuccessful. There was a problem with your order, please try again or contact the store administrator.");
         fn_order_placement_routines('checkout_redirect', $this->order_info['order_id'], false);
     }
 }
Esempio n. 16
0
            die('Access denied');
        }
        fn_set_notification('W', __('important'), __('text_transaction_cancelled'));
        fn_order_placement_routines('route', $_SESSION['order_id'], false);
    } elseif ($mode == 'decline') {
        if (!isset($_SESSION['order_id'])) {
            die('Access denied');
        }
        fn_set_notification('E', '', __('text_order_placed_error'));
        fn_order_placement_routines('route', $_SESSION['order_id'], false);
    } elseif ($mode == 'refer') {
        if (!isset($_SESSION['order_id'])) {
            die('Access denied');
        }
        fn_set_notification('W', __('important'), $processor_response['REFER']);
        fn_order_placement_routines('route', $_SESSION['order_id'], false);
    }
} else {
    $post_url = $processor_data['processor_params']['mode'] == 'test' ? 'https://test.pay4later.com/credit_app/' : 'https://secure.pay4later.com/credit_app/';
    $_order_id = $order_info['repaid'] ? $order_id . '_' . $order_info['repaid'] : $order_id;
    $order_description = __('order') . " #{$order_id}";
    $_SESSION['order_id'] = $order_id;
    $post_data = array('Identification[api_key]' => $processor_data['processor_params']['merchant_key'], 'Identification[RetailerUniqueRef]' => $_order_id, 'Identification[InstallationID]' => $processor_data['processor_params']['installation_id'], 'Goods[0][Description]' => $order_description, 'Goods[0][Quantity]' => '1', 'Goods[0][Price]' => $order_info['total'], 'Finance[Code]' => $processor_data['processor_params']['finance_product_code'], 'Finance[Deposit]' => $processor_data['processor_params']['deposit_amount']);
    fn_create_payment_form($post_url, $post_data, 'Pay4Later');
}
exit;
function fn_pay4later_order_placement_routines()
{
    $_SESSION['cart'] = array('user_data' => !empty($_SESSION['cart']['user_data']) ? $_SESSION['cart']['user_data'] : array(), 'profile_id' => !empty($_SESSION['cart']['profile_id']) ? $_SESSION['cart']['profile_id'] : 0, 'user_id' => !empty($_SESSION['cart']['user_id']) ? $_SESSION['cart']['user_id'] : 0);
    $_SESSION['shipping_rates'] = array();
    unset($_SESSION['shipping_hash']);
Esempio n. 17
0
        fn_paypal_get_error($paypal_checkout_details);
    }
    fn_order_placement_routines('checkout_redirect');
} elseif ($mode == 'express') {
    Tygh::$app['session']['cart'] = empty(Tygh::$app['session']['cart']) ? array() : Tygh::$app['session']['cart'];
    $payment_id = empty($_REQUEST['payment_id']) ? Tygh::$app['session']['cart']['payment_id'] : $_REQUEST['payment_id'];
    $is_in_context_order = isset($_REQUEST['in_context_order']) && isset($_REQUEST['in_context']);
    $result = fn_paypal_set_express_checkout($payment_id, 0, array(), Tygh::$app['session']['cart'], AREA, $is_in_context_order);
    $useraction = 'continue';
    $processor_data = fn_get_payment_method_data($payment_id);
    $in_context_checkout = $processor_data['processor_params']['in_context'] == 'Y';
    if (fn_paypal_ack_success($result) && !empty($result['TOKEN'])) {
        if ($in_context_checkout && isset($_REQUEST['in_context'])) {
            header('Content-type: application/json');
            echo json_encode(array('token' => $result['TOKEN']));
            exit;
        } else {
            fn_paypal_payment_form($processor_data, $result['TOKEN']);
        }
    } else {
        // create notification
        fn_paypal_get_error($result);
        if ($in_context_checkout && isset($_REQUEST['in_context'])) {
            header('Content-type: application/json');
            echo json_encode(array('error' => true));
            exit;
        } else {
            fn_order_placement_routines('checkout.cart');
        }
    }
}
Esempio n. 18
0
        $processor_data = fn_get_payment_method_data($order_info['payment_id']);
        $pp_response["transaction_id"] = $_REQUEST['brq_transactions'];
        $pp_response["reason_text"] = urldecode($_REQUEST['brq_statusmessage']);
        $_REQUEST['brq_websitekey'] = $processor_data['processor_params']['merchant_id'];
        $_signature = fn_buckaroo_calculate_signature($_REQUEST, $processor_data["processor_params"]["merchant_key"]);
        if (in_array($_REQUEST['brq_statuscode'], array('190')) && $_REQUEST['brq_signature'] == $_signature) {
            $pp_response['order_status'] = 'P';
        } elseif (in_array($_REQUEST['brq_statuscode'], array('791', '492'))) {
            $pp_response['order_status'] = 'O';
            // still waiting for the response
        } else {
            $pp_response['order_status'] = 'F';
        }
        fn_finish_payment($_REQUEST['brq_invoicenumber'], $pp_response, false);
        $route = $order_info['repaid'] ? 'repay' : 'route';
        fn_order_placement_routines($route, $_REQUEST['brq_invoicenumber']);
    }
} else {
    $currency_coefficient = Registry::get('currencies.' . CART_SECONDARY_CURRENCY . '.coefficient');
    $_order_total = !empty($currency_coefficient) ? $order_info['total'] / floatval($currency_coefficient) : $order_info['total'];
    $return_url = fn_url("payment_notification.notify?payment=ideal_xml", AREA, 'current');
    $params = array('brq_websitekey' => $processor_data['processor_params']['merchant_id'], 'brq_amount' => $_order_total, 'brq_culture' => CART_LANGUAGE, 'brq_currency' => CART_SECONDARY_CURRENCY, 'brq_invoicenumber' => $order_id, 'brq_description' => $processor_data['processor_params']['description'], 'brq_return' => $return_url, 'brq_returnreject' => $return_url, 'brq_returnerror' => $return_url, 'brq_returncancel' => $return_url);
    $params['brq_signature'] = fn_buckaroo_calculate_signature($params, $processor_data['processor_params']['merchant_key']);
    $post_url = empty($processor_data['processor_params']['test']) ? "https://checkout.buckaroo.nl/html/" : "https://testcheckout.buckaroo.nl/html/";
    fn_create_payment_form($post_url, $params, 'Buckaroo server', false);
    exit;
}
function fn_buckaroo_calculate_signature($params, $secret_key)
{
    unset($params['brq_signature']);
    unset($params['dispatch']);
Esempio n. 19
0
$avs = $processor_data['params']['avs'] == '1' ? true : false;
$cvv = $order_info['payment_info']['cvv2'];
require_once 'worldnettps_files/worldnet_tps_xml.php';
$sale = new XmlAuthRequest($processor_data['params']['terminal_id'], $_order_id, $processor_data['params']['currency'], $order_info['total'], $order_info['email'] . " " . $_order_id, $order_info['email'], $order_info['payment_info']['card_number'], $card_type, $expiry_date, $order_info['payment_info']['cardholder_name']);
if ($cvv != "") {
    $sale->SetCvv($cvv);
}
if ($avs) {
    $address1 = $order_info['b_address'];
    $address2 = $order_info['b_city'] . $order_info['b_state'];
    $postcode = $order_info['b_zipcode'];
    $sale->SetAvs($address1, $address2, $postcode);
}
// Perform Auth
$response = $sale->ProcessRequest($processor_data['params']['shared_secret'], false, true);
// Verify response hash
$hash = md5($processor_data['params']['terminal_id'] . $_order_id . $order_info['total'] . $response->DateTime() . $response->ResponseCode() . $response->ResponseText() . $processor_data['params']['shared_secret']);
$pp_response = array();
if ($response->Hash() != $hash) {
    $pp_response['order_status'] = "D";
    $pp_response["reason_text"] = fn_get_lang_var('worldnettps_hash_error');
} elseif ($response->IsError()) {
    $pp_response['order_status'] = "D";
    $pp_response["reason_text"] = $response->ErrorString();
} else {
    $pp_response['order_status'] = $response->ResponseCode() == "A" ? "P" : "D";
    $pp_response["reason_text"] = $response->ResponseText();
}
fn_finish_payment($order_id, $pp_response, false);
fn_order_placement_routines($order_info['order_id']);
Esempio n. 20
0
                }
            } else {
                $pp_response['order_status'] = 'P';
            }
            fn_finish_payment($order_id, $pp_response);
            exit;
        } elseif ($mode == 'finish') {
            $order_info = fn_get_order_info($order_id);
            if ($order_info['status'] == 'O') {
                $pp_response = array();
                $pp_response['order_status'] = 'F';
                $pp_response['reason_text'] = __('merchant_response_was_not_received');
                $pp_response['transaction_id'] = '';
                fn_finish_payment($order_id, $pp_response);
            }
            fn_order_placement_routines('route', $order_id, false);
        }
    }
} else {
    $current_location = Registry::get('config.current_location');
    $lang_code = CART_LANGUAGE == 'th' ? 'TH' : 'EN';
    $sess = '&' . Session::getName() . '=' . Session::getId();
    $_SESSION['thaiepay_refno'] = $order_id;
    $return_url = fn_url("payment_notification.finish?payment=thaiepay&refno={$order_id}{$sess}", AREA, 'current');
    echo <<<EOT
<form method="post" action="https://www.thaiepay.com/epaylink/payment.aspx" name="process">
    <input type="hidden" name="refno" value="{$order_id}">
    <input type="hidden" name="merchantid" value="{$processor_data['processor_params']['merchantid']}">
    <input type="hidden" name="customeremail" value="{$order_info['email']}">
    <input type="hidden" name="productdetail" value="{$processor_data['processor_params']['details']}">
    <input type="hidden" name="total" value="{$order_info['total']}">
Esempio n. 21
0
        } else {
            if (fn_allowed_for('MULTIVENDOR') && fn_take_payment_surcharge_from_vendor($order_info['products'])) {
                $update_order['total'] = fn_format_price($order_info['total']);
            } else {
                $update_order['total'] = fn_format_price($order_info['total'] - $order_info['payment_surcharge']);
            }
            $update_order['payment_surcharge'] = 0;
        }
        fn_set_hook('repay_order', $order_info, $update_order, $payment, $payment_info);
        db_query('UPDATE ?:orders SET ?u WHERE order_id = ?i', $update_order, $_REQUEST['order_id']);
        // Change order status back to Open and restore amount.
        fn_change_order_status($order_info['order_id'], STATUSES_ORDER, $order_info['status'], fn_get_notification_rules(array(), false));
        $_SESSION['cart']['placement_action'] = 'repay';
        // Process order (payment)
        fn_start_payment($order_info['order_id'], array(), $payment_info);
        fn_order_placement_routines('repay', $order_info['order_id'], array(), true);
    }
    return array(CONTROLLER_STATUS_OK, 'orders.details?order_id=' . $_REQUEST['order_id']);
}
fn_add_breadcrumb(__('orders'), $mode == 'search' ? '' : "orders.search");
//
// Show invoice
//
if ($mode == 'invoice') {
    fn_add_breadcrumb(__('order') . ' #' . $_REQUEST['order_id'], "orders.details?order_id={$_REQUEST['order_id']}");
    fn_add_breadcrumb(__('invoice'));
    Registry::get('view')->assign('order_info', fn_get_order_info($_REQUEST['order_id']));
    //
    // Show invoice on separate page
    //
} elseif ($mode == 'print_invoice') {
    if (!fn_check_payment_script('itransact_split_form.php', $order_id, $processor_data)) {
        exit;
    }
    $order_info = fn_get_order_info($order_id);
    $pp_response = array();
    $check_cntrl = md5('CNTRL_VALUE' . $order_id . $processor_data['params']['merchant_name'] . $order_info['total'] . $processor_data['params']['secret_key']);
    if (!empty($_REQUEST['xid']) && preg_match("/\\d+/", $_REQUEST['xid']) && $check_cntrl == $_REQUEST['cntrl']) {
        $pp_response['order_status'] = 'P';
        $pp_response['reason_text'] = fn_get_lang_var('transaction_approved');
        $pp_response['transaction_id'] = $_REQUEST['xid'];
    } else {
        $pp_response['order_status'] = 'F';
        $pp_response['reason_text'] = fn_get_lang_var('transaction_declined');
    }
    fn_finish_payment($order_id, $pp_response);
    fn_order_placement_routines($order_id);
    exit;
} else {
    $post = array();
    $post['vendor_id'] = $processor_data['params']['vendor_id'];
    $post['mername'] = $processor_data['params']['merchant_name'];
    $post['cntrl'] = md5('CNTRL_VALUE' . $order_id . $post['mername'] . $order_info['total'] . $processor_data['params']['secret_key']);
    $images = array('visaimage', 'mcimage', 'ameximage', 'discimage', 'dinerimage');
    foreach ($images as $im) {
        $post[$im] = 1;
    }
    $current_location = Registry::get('config.current_location');
    $post['ret_addr'] = "{$current_location}/{$index_script}?dispatch=payment_notification.notify&payment=itransact_split_form&order_id={$order_id}";
    // filling order cost
    $post['item_1_desc'] = fn_get_lang_var('order_id') . ': ' . $processor_data['params']['order_prefix'] . $order_id . ($order_info['repaid'] ? "_{$order_info['repaid']}" : '');
    $post['item_1_cost'] = $order_info['total'];
Esempio n. 23
0
*                                                                          *
****************************************************************************
* PLEASE READ THE FULL TEXT  OF THE SOFTWARE  LICENSE   AGREEMENT  IN  THE *
* "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE.            *
****************************************************************************/
if (!defined('BOOTSTRAP')) {
    die('Access denied');
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($mode == 'process_embedded') {
        if (!empty($_REQUEST['data'])) {
            $data = json_decode($_REQUEST['data'], true);
            if (!empty($data)) {
                fn_create_payment_form($data['submit_url'], $data['data'], $data['payment_name'], $data['exclude_empty_values'], $data['method']);
            }
        }
        exit;
    }
}
if (!empty($_REQUEST['payment'])) {
    define('PAYMENT_NOTIFICATION', true);
    $payment = fn_basename($_REQUEST['payment']);
    if (fn_check_prosessor_status($payment)) {
        $payment_script = fn_get_processor_script_path($payment . '.php');
        if (in_array($mode, array('checkout_redirect', 'index_redirect'))) {
            fn_order_placement_routines($mode);
        } elseif (is_file($payment_script)) {
            include $payment_script;
        }
    }
}
Esempio n. 24
0
    }
    fn_order_placement_routines('checkout_redirect');
} elseif ($mode == 'place_order' && !empty($_SESSION['pp_express_details'])) {
    fn_pp_save_mode($order_info);
    $token = $_SESSION['pp_express_details']['token'];
    fn_paypal_complete_checkout($token, $processor_data, $order_info);
} elseif ($mode == 'place_order' || $mode == 'express' || $mode == 'repay') {
    if (!defined('BOOTSTRAP')) {
        require './init_payment.php';
        $_SESSION['cart'] = empty($_SESSION['cart']) ? array() : $_SESSION['cart'];
    }
    $payment_id = empty($_REQUEST['payment_id']) ? $_SESSION['cart']['payment_id'] : $_REQUEST['payment_id'];
    if ($mode == 'express') {
        $result = fn_paypal_set_express_checkout($payment_id, 0, array(), $_SESSION['cart']);
        $useraction = 'continue';
    } else {
        $result = fn_paypal_set_express_checkout($payment_id, $order_id, $order_info);
        $useraction = "commit";
    }
    if (fn_paypal_ack_success($result) && !empty($result['TOKEN'])) {
        $processor_data = fn_get_payment_method_data($payment_id);
        fn_paypal_payment_form($processor_data, $result['TOKEN']);
    } else {
        fn_paypal_get_error($result);
        if ($mode == 'express') {
            fn_order_placement_routines('checkout.cart');
        } else {
            fn_order_placement_routines('checkout_redirect');
        }
    }
}
Esempio n. 25
0
/**
 * Place order handler
 *
 * @param  array $cart   Cart
 * @param  array $auth   Auth
 * @param  array $params Params
 * @return str
 */
function fn_checkout_place_order(&$cart, &$auth, $params)
{
    // Prevent unauthorized access
    if (empty($cart['user_data']['email'])) {
        return PLACE_ORDER_STATUS_DENIED;
    }
    // Prevent using disabled payment method by challenging HTTP data
    if (!empty($params['payment_id'])) {
        $cart['payment_id'] = $params['payment_id'];
    }
    if (isset($cart['payment_id'])) {
        $payment_method_data = fn_get_payment_method_data($cart['payment_id']);
        if (!empty($payment_method_data['status']) && $payment_method_data['status'] != 'A') {
            return PLACE_ORDER_STATUS_DENIED;
        }
    }
    // Remove previous failed order
    if (!empty($cart['failed_order_id']) || !empty($cart['processed_order_id'])) {
        $_order_ids = !empty($cart['failed_order_id']) ? $cart['failed_order_id'] : $cart['processed_order_id'];
        foreach ($_order_ids as $_order_id) {
            fn_delete_order($_order_id);
        }
        $cart['rewrite_order_id'] = $_order_ids;
        unset($cart['failed_order_id'], $cart['processed_order_id']);
    }
    if (!empty($params['payment_info'])) {
        $cart['payment_info'] = $params['payment_info'];
    } else {
        $cart['payment_info'] = array();
    }
    if (empty($params['payment_info']) && !empty($cart['extra_payment_info'])) {
        $cart['payment_info'] = empty($cart['payment_info']) ? array() : $cart['payment_info'];
        $cart['payment_info'] = array_merge($cart['extra_payment_info'], $cart['payment_info']);
    }
    unset($cart['payment_info']['secure_card_number']);
    if (!empty($cart['products'])) {
        foreach ($cart['products'] as $cart_id => $product) {
            $_is_edp = db_get_field("SELECT is_edp FROM ?:products WHERE product_id = ?i", $product['product_id']);
            if (fn_check_amount_in_stock($product['product_id'], $product['amount'], empty($product['product_options']) ? array() : $product['product_options'], $cart_id, $_is_edp, 0, $cart) == false) {
                fn_delete_cart_product($cart, $cart_id);
                return PLACE_ORDER_STATUS_TO_CART;
            }
            if (!fn_allowed_for('ULTIMATE:FREE')) {
                $exceptions = fn_get_product_exceptions($product['product_id'], true);
                if (!isset($product['options_type']) || !isset($product['exceptions_type'])) {
                    $product = array_merge($product, db_get_row('SELECT options_type, exceptions_type FROM ?:products WHERE product_id = ?i', $product['product_id']));
                }
                if (!fn_is_allowed_options_exceptions($exceptions, $product['product_options'], $product['options_type'], $product['exceptions_type'])) {
                    fn_set_notification('E', __('notice'), __('product_options_forbidden_combination', array('[product]' => $product['product'])));
                    fn_delete_cart_product($cart, $cart_id);
                    return PLACE_ORDER_STATUS_TO_CART;
                }
                if (!fn_is_allowed_options($product)) {
                    fn_set_notification('E', __('notice'), __('product_disabled_options', array('[product]' => $product['product'])));
                    fn_delete_cart_product($cart, $cart_id);
                    return PLACE_ORDER_STATUS_TO_CART;
                }
            }
        }
    }
    list($order_id, $process_payment) = fn_place_order($cart, $auth);
    // Clean up saved shipping rates
    unset($_SESSION['product_groups']);
    if (!empty($order_id)) {
        if (empty($params['skip_payment']) && $process_payment == true || !empty($params['skip_payment']) && empty($auth['act_as_user'])) {
            // administrator, logged in as customer can skip payment
            $payment_info = !empty($cart['payment_info']) ? $cart['payment_info'] : array();
            fn_start_payment($order_id, array(), $payment_info);
        }
        fn_order_placement_routines('route', $order_id);
        return PLACE_ORDER_STATUS_OK;
    } else {
        return PLACE_ORDER_STATUS_TO_CART;
    }
}
Esempio n. 26
0
        exit;
    } else {
        Tygh::$app['session']['reference_id'] = $reference_id;
    }
    $_order_id = db_get_field('SELECT order_id FROM ?:order_data WHERE type = ?s AND data = ?s', 'E', $transaction_id);
    if (!empty($_order_id)) {
        exit;
    }
    Tygh::$app['session']['order_id'] = empty(Tygh::$app['session']['order_id']) ? array() : Tygh::$app['session']['order_id'];
    $order_id =& Tygh::$app['session']['order_id'];
    $order_id = fn_prepare_to_place_order($xml, $cart, $auth);
    $pp_response = array('transaction_id' => $transaction_id);
    $data = array('order_id' => $order_id, 'type' => 'E', 'data' => $transaction_id);
    db_query("REPLACE INTO ?:order_data ?e", $data);
    fn_update_order_payment_info($order_id, $pp_response);
    fn_order_placement_routines('route', $order_id);
} elseif ($message_recognizer == 'OrderCancelledNotification') {
    // Customer cancel this order on the Amazon side. We need to cancel the order in the shop
    list($amazon_sess_id, $payment_id) = explode(';', base64_decode((string) $xml->ProcessedOrder->ProcessedOrderItems->ProcessedOrderItem->CartCustomData->ClientRequestId));
    $processor_data = fn_get_payment_method_data($payment_id);
    // If we use the signed cart, validate the request
    if (!fn_amazon_validate_request($processor_data, $_POST)) {
        die('Access denied');
    }
    $transaction_id = (string) $xml->ProcessedOrder->AmazonOrderID;
    $order_id = db_get_field('SELECT order_id FROM ?:order_data WHERE type = ?s AND data = ?s', 'E', $transaction_id);
    if (!empty($order_id)) {
        fn_change_order_status($order_id, 'I');
    }
} elseif ($message_recognizer == 'OrderReadyToShipNotification') {
    // Order was processed by Amazon. We need to process the order in the shop
Esempio n. 27
0
        /*получаем время */
        $delivery_time = db_get_field("SELECT time_to_delivery FROM  `cscart_orders` WHERE  `order_id` ='{$dev_o_id}' LIMIT 0 , 30");
        list($order_id, $process_payment) = fn_place_order($cart, $customer_auth, $action);
        //апдейтим с помощью функции
        db_query("UPDATE  `korzin_db`.`cscart_orders` SET  `date_to_delivery` =  '{$delivery_date}',\n\t\t\t\t\t\t\t`time_to_delivery` =  '{$delivery_time}' WHERE  `cscart_orders`.`order_id` ='{$dev_o_id}' LIMIT 1");
        //апдейтим поля в ручную
        if (!empty($order_id)) {
            if ($action != 'save') {
                $view->assign('order_action', fn_get_lang_var('placing_order'));
                $view->display('views/orders/components/placing_order.tpl');
                fn_flush();
            }
            if ($process_payment == true) {
                fn_start_payment($order_id, fn_get_notification_rules($_REQUEST));
            }
            fn_order_placement_routines($order_id, fn_get_notification_rules($_REQUEST), true, $action);
        } else {
            return array(CONTROLLER_STATUS_REDIRECT, "order_management.summary");
        }
    }
    return array(CONTROLLER_STATUS_OK, "order_management{$_suffix}");
}
// Delete discount coupon
if ($mode == 'delete_coupon') {
    unset($cart['coupons'][$_REQUEST['c_id']], $cart['pending_coupon']);
    return array(CONTROLLER_STATUS_REDIRECT, "order_management.totals");
}
//
// Edit order
//
if ($mode == 'edit' && !empty($_REQUEST['order_id'])) {