$so = new SCFields(Tools::getValue('DELIVERYMODE'));
}
/* api 4.0 */
/* Init the Display */
$display = new BWDisplay();
$display->setTemplate(dirname(__FILE__) . '/views/templates/front/error.tpl');
$errors_list = array();
$redirect = __PS_BASE_URI__ . (version_compare(_PS_VERSION_, '1.5', '<') ? 'order.php?' : 'index.php?controller=order&');
$so->context->smarty->assign('so_url_back', $redirect);
$return = array();
/* If error code not defined or empty / null */
$errors_codes = ($tab = Tools::getValue('ERRORCODE')) ? explode(' ', trim($tab)) : array();
/* If no required error code, start to get the POST data */
if (!$so->checkErrors($errors_codes, SCError::REQUIRED)) {
    foreach ($_POST as $key => $val) {
        if ($so->isAvailableFields($key)) {
            if (!isset($_POST['CHARSET'])) {
                /* only way to know if api is 3.0 to get encode for accentued chars in key calculation */
                $return[strtoupper($key)] = utf8_encode(stripslashes($val));
            } else {
                $return[strtoupper($key)] = stripslashes($val);
            }
        }
    }
    /* GET parameter, the only one */
    $return['TRRETURNURLKO'] = Tools::getValue('trReturnUrlKo');
    /* api 3.0 mobile */
    if (!$return['TRRETURNURLKO']) {
        $return['TRRETURNURLKO'] = Tools::getValue('TRRETURNURLKO');
    }
    /* api 4.0 */
 *
 * ---------------------------------------------------------------------------------
 */
include '../../config/config.inc.php';
include '../../init.php';
include '../../header.php';
require_once _PS_MODULE_DIR_ . 'socolissimo/socolissimo.php';
require_once _PS_MODULE_DIR_ . 'socolissimo/classes/SCFields.php';
$validReturn = array('PUDOFOID', 'CECIVILITY', 'CENAME', 'CEFIRSTNAME', 'CECOMPANYNAME', 'CEEMAIL', 'CEPHONENUMBER', 'DELIVERYMODE', 'CEADRESS1', 'CEADRESS2', 'CEADRESS3', 'CEADRESS4', 'CEZIPCODE', 'CEDOORCODE1', 'CEDOORCODE2', 'CEENTRYPHONE', 'DYPREPARATIONTIME', 'DYFORWARDINGCHARGES', 'ORDERID', 'SIGNATURE', 'ERRORCODE', 'TRPARAMPLUS', 'TRCLIENTNUMBER', 'PRID', 'PRNAME', 'PRCOMPLADRESS', 'PRADRESS1', 'PRADRESS2', 'PRZIPCODE', 'PRTOWN', 'CETOWN', 'TRADERCOMPANYNAME', 'CEDELIVERYINFORMATION', 'CEDOORCODE1', 'CEDOORCODE2');
//list of non-blocking error
$nonBlockingError = array(133, 131, 517, 516, 515, 514, 513, 512, 511, 510, 509, 508, 507, 506, 505, 504, 503, 502, 501);
$so = new Socolissimo();
$so_fields = new SCFields(Tools::getValue('DELIVERYMODE'));
$return = array();
foreach ($_POST as $key => $val) {
    if ($so_fields->isAvailableFields($key)) {
        $return[strtoupper($key)] = stripslashes($val);
    }
}
$return['TRRETURNURLKO'] = Tools::getValue('TRRETURNURLKO');
if (isset($return['SIGNATURE']) and isset($return['CENAME']) and isset($return['DYPREPARATIONTIME']) and isset($return['DYFORWARDINGCHARGES']) and isset($return['TRCLIENTNUMBER']) and isset($return['ORDERID']) and isset($return['TRCLIENTNUMBER'])) {
    if (!isset($return['ERRORCODE']) or $return['ERRORCODE'] == NULL or in_array($return['ERRORCODE'], $nonBlockingError)) {
        if ($so_fields->isCorrectSignKey($return['SIGNATURE'], $return)) {
            global $cookie;
            if (isset($cookie) or is_object($cookie)) {
                if (saveOrderShippingDetails(intval($cookie->id_cart), intval($return['TRCLIENTNUMBER']), $return, $so_fields)) {
                    $TRPARAMPLUS = explode('|', $return['TRPARAMPLUS']);
                    if (count($TRPARAMPLUS) > 1) {
                        $cart->id_carrier = (int) $TRPARAMPLUS[0];
                        if ($TRPARAMPLUS[1] == "true" || $TRPARAMPLUS[1] == 1) {
                            // value can be "undefined" or "not checked"