* @copyright 2007-2011 PrestaShop SA * @version Release: $Revision: 7732 $ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ include(dirname(__FILE__).'/../../config/config.inc.php'); include(dirname(__FILE__).'/moneybookers.php'); $moneyBookers = new MoneyBookers(); $errors = array(); /* Check for mandatory fields */ $requiredFields = array('status', 'md5sig', 'merchant_id', 'pay_to_email', 'mb_amount', 'mb_transaction_id', 'currency', 'amount', 'transaction_id', 'pay_from_email', 'mb_currency'); foreach ($requiredFields AS $field) if (!isset($_POST[$field])) $errors[] = 'Missing field '.$field; /* Check for MD5 signature */ $md5 = strtoupper(md5($_POST['merchant_id'].$_POST['transaction_id'].strtoupper(md5(Configuration::get('MB_SECRET_WORD'))).$_POST['mb_amount'].$_POST['mb_currency'].$_POST['status'])); if ($md5 != $_POST['md5sig']) $errors[] = 'Please double-check your Moneybookers account to make sure you have received the payment (Yours / MB) ['.$md5.'] ['.$_POST['md5sig'].']'; $message = ''; foreach ($_POST AS $key => $value) $message .= $key.': '.$value."\n"; if (sizeof($errors)) { $message .= sizeof($errors).' error(s):'."\n"; /* Force status to 1 - ERROR ! */ $_POST['status'] = 1; } foreach ($errors AS $error) $message .= $error."\n"; $message = nl2br(strip_tags($message)); $id_cart = (int)(substr($_POST['transaction_id'], 0, strpos($_POST['transaction_id'], '_'))); $secure_cart = explode('_', $_POST['transaction_id']); $status = (int)($_POST['status']); if (!isset($secure_cart[2])) $secure_cart[2] = 'KO'; switch ($status) { /* Bankwire */ case 0: $moneyBookers->validateOrder((int)($secure_cart[0]), Configuration::get('PS_OS_BANKWIRE'), (float)($_POST['amount']), $moneyBookers->displayName, $message, array(), NULL, false, $secure_cart[2]); break; /* Payment OK */ case 2: $moneyBookers->validateOrder((int)($secure_cart[0]), Configuration::get('PS_OS_PAYMENT'), (float)($_POST['amount']), $moneyBookers->displayName, $message, array(), NULL, false, $secure_cart[2]); break; /* Unknown or error */ default: $moneyBookers->validateOrder((int)($secure_cart[0]), Configuration::get('PS_OS_ERROR'), 0, $moneyBookers->displayName, $message, array(), NULL, false, $secure_cart[2]); break; }