diff --git a/modules/paybox/direct_paiement.php b/modules/paybox/direct_paiement.php index 66bfa972..562dd0fe 100644 --- a/modules/paybox/direct_paiement.php +++ b/modules/paybox/direct_paiement.php @@ -132,185 +132,181 @@ $values = array( 'd' => $paybox_card['date'], ); -if ($code_reponse[1] == "00000" || $code_reponse[0] == "00000") { - // payment success +// payment success - if ((!isset($autorisation[1]) || empty($autorisation[1]))) - { - Logger::addLog('No autorisation number', 4); - die('No autorisation number'); - } - // Wrong authorization number in live mode - if ($autorisation[1] == 'XXXXXX' && $test_mode === 1) { - $error .= '- error payment - wrong authorization number
'."\n"; - } +if ((!isset($autorisation[1]) || empty($autorisation[1]))) +{ + Logger::addLog('No autorisation number', 4); + die('No autorisation number'); +} +// Wrong authorization number in live mode +if ($autorisation[1] == 'XXXXXX' && $test_mode === 1) { + $error .= '- error payment - wrong authorization number
'."\n"; +} - if ($id_order = (int)Order::getOrderByCartId($cart->id)) - { - $paybox->saveInformationPaiement($values); - - if (empty($error)) - { - $order = new Order($id_order); - $order->valid = 1; - $order->total_paid_real = $values['m'] / 100; - $order->update(); - - if ($order->getCurrentState() != _PS_OS_PAYMENT_) - { - $products = $cart->getProducts(); - foreach ($products as $product) - { - Product::updateQuantity($product); - Hook::updateQuantity($product, $order); - } - } - - $history = new OrderHistory(); - $history->id_order = $id_order; - $history->changeIdOrderState((int)_PS_OS_PAYMENT_, $id_order); - $history->addWithemail(true, array()); - - $order_message = ''; - foreach ($values as $key => $value) { - $order_message .= $key.': '.$value.'
'; - } - - if (isset($order_message) && !empty($order_message)) - { - $msg = new Message(); - $message = $order_message; - if (Validate::isCleanHtml($order_message)) - { - $msg->message = $order_message; - $msg->id_order = (int)$order->id; - $msg->private = 1; - $msg->add(); - } - } - } - die($error); - } - - $total_paid = $values['m'] / 100; - - if ($test_mode === 0) - { - if (empty($error) && $code_reponse[1] == '00000') - { - $error = '***TEST*** : Validated Payment
'."\n"; - $statut = _PS_OS_PAYMENT_; - } - else - { - $error = '***TEST*** : Invalid Payment
'."\n".$error; - $statut = _PS_OS_ERROR_; - } - } - elseif ($test_mode === 1) - { - if ($code_reponse[1] == '00000' && empty($error)){ - $statut = _PS_OS_PAYMENT_; - } - else - { - $statut = _PS_OS_ERROR_; - } - } - - switch ($code_reponse[1]) - { - case '00001': - $error .= 'Connection to the authorization center failed or an internal error occurred
'."\n"; - break; - case '00003': - $error .= 'Paybox error
'."\n"; - break; - case '00004': - $error .= 'Card number invalid or visual cryptogram invalid
'."\n"; - break; - case '00006': - $error .= 'Access refused or site/rank/identifier incorrect
'."\n"; - break; - case '00008': - $error .= 'Incorrect expiry date.
'."\n"; - break; - case '00009': - $error .= 'Error when during subscriber creation
'."\n"; - break; - case '00010': - $error .= 'Unknown currency
'."\n"; - break; - case '00011': - $error .= 'Amount incorrect
'."\n"; - break; - case '00015': - $error .= 'Payment already done
'."\n"; - break; - case '00016': - $error .= 'Subscriber already exists
'."\n"; - break; - case '00021': - $error .= 'Not authorized bin card
'."\n"; - break; - case '00029': - $error .= 'Not the same card used for the first payment.
'."\n"; - break; - case '00030': - $error .= 'Time-out > 15 mn before validation by the buyer when the buyer is on the page of payments of PAYBOX
'."\n"; - break; - case '00031': - case '00032': - $error .= 'Reserved
'."\n"; - break; - case '00033': - $error .= 'Unauthorized country code of the IP address of the cardholder’s browser
'."\n"; - break; - case '00040': - $error .= 'Operation without 3DSecure authentication, blocked by the fraud filter.
'."\n"; - break; - case '99999': - $error .= 'Payment waiting confirmation from the issuer
'."\n"; - break; - case '00000': - default: - $error .= 'Successful operation
'."\n\n"; - break; - } - - $error .= 'PayBox version: '.$paybox->version."\n".'
POST '.print_r($values, true)."\n".'
GET '.print_r($response, true)."\n"; - $paybox->validateOrder((int)$cart->id, $statut, $total_paid, $paybox->displayName, $error, array(), NULL, false, $customer->secure_key); - - // save info paiement BDD +if ($id_order = (int)Order::getOrderByCartId($cart->id)) +{ $paybox->saveInformationPaiement($values); - if (version_compare(_PS_VERSION_, '1.5.0.0') >= '0') + if (empty($error)) { - $order_id = Order::getOrderByCartId((int)$cart->id); - $order = new Order((int)$order_id); - if ($order_state == _PS_OS_PAYMENT_) + $order = new Order($id_order); + $order->valid = 1; + $order->total_paid_real = $values['m'] / 100; + $order->update(); + + if ($order->getCurrentState() != _PS_OS_PAYMENT_) { - $order->valid = 1; - $order->save(); + $products = $cart->getProducts(); + foreach ($products as $product) + { + Product::updateQuantity($product); + Hook::updateQuantity($product, $order); + } } - $id_order_payment = Db::getInstance()->getValue('SELECT id_order_payment - FROM `'._DB_PREFIX_.'order_payment` - WHERE `order_reference` LIKE \'%'.pSQL($order->reference).'%\''); + $history = new OrderHistory(); + $history->id_order = $id_order; + $history->changeIdOrderState((int)_PS_OS_PAYMENT_, $id_order); + $history->addWithemail(true, array()); - if ($id_order_payment == false) - $order->addOrderPayment($total_paid, null, trim($values['t'])); - else + $order_message = ''; + foreach ($values as $key => $value) { + $order_message .= $key.': '.$value.'
'; + } + + if (isset($order_message) && !empty($order_message)) { - $order_payment = new OrderPayment((int)$id_order_payment); - $order_payment->transaction_id = trim($values['t']); - $order_payment->save(); + $msg = new Message(); + $message = $order_message; + if (Validate::isCleanHtml($order_message)) + { + $msg->message = $order_message; + $msg->id_order = (int)$order->id; + $msg->private = 1; + $msg->add(); + } } } - -} else { - // payment error - mail('marion@antadis.com', '[BBB] Soucis paiement direct reponse globale', json_encode($response)); - return false; + die($error); } + +$total_paid = $values['m'] / 100; + +if ($test_mode === 0) +{ + if (empty($error) && $code_reponse[1] == '00000') + { + $error = '***TEST*** : Validated Payment
'."\n"; + $statut = _PS_OS_PAYMENT_; + } + else + { + $error = '***TEST*** : Invalid Payment
'."\n".$error; + $statut = _PS_OS_ERROR_; + } +} +elseif ($test_mode === 1) +{ + if ($code_reponse[1] == '00000' && empty($error)){ + $statut = _PS_OS_PAYMENT_; + } + else + { + $statut = _PS_OS_ERROR_; + } +} + +switch ($code_reponse[1]) +{ + case '00001': + $error .= 'Connection to the authorization center failed or an internal error occurred
'."\n"; + break; + case '00003': + $error .= 'Paybox error
'."\n"; + break; + case '00004': + $error .= 'Card number invalid or visual cryptogram invalid
'."\n"; + break; + case '00006': + $error .= 'Access refused or site/rank/identifier incorrect
'."\n"; + break; + case '00008': + $error .= 'Incorrect expiry date.
'."\n"; + break; + case '00009': + $error .= 'Error when during subscriber creation
'."\n"; + break; + case '00010': + $error .= 'Unknown currency
'."\n"; + break; + case '00011': + $error .= 'Amount incorrect
'."\n"; + break; + case '00015': + $error .= 'Payment already done
'."\n"; + break; + case '00016': + $error .= 'Subscriber already exists
'."\n"; + break; + case '00021': + $error .= 'Not authorized bin card
'."\n"; + break; + case '00029': + $error .= 'Not the same card used for the first payment.
'."\n"; + break; + case '00030': + $error .= 'Time-out > 15 mn before validation by the buyer when the buyer is on the page of payments of PAYBOX
'."\n"; + break; + case '00031': + case '00032': + $error .= 'Reserved
'."\n"; + break; + case '00033': + $error .= 'Unauthorized country code of the IP address of the cardholder’s browser
'."\n"; + break; + case '00040': + $error .= 'Operation without 3DSecure authentication, blocked by the fraud filter.
'."\n"; + break; + case '99999': + $error .= 'Payment waiting confirmation from the issuer
'."\n"; + break; + case '00000': + default: + $error .= 'Successful operation
'."\n\n"; + break; +} + +$error .= 'PayBox version: '.$paybox->version."\n".'
POST '.print_r($postfields, true)."\n".'
GET '.print_r($data, true)."\n"; +$paybox->validateOrder((int)$cart->id, $statut, $total_paid, $paybox->displayName, $error, array(), NULL, false, $customer->secure_key); + +// save info paiement BDD +$paybox->saveInformationPaiement($values); + +if (version_compare(_PS_VERSION_, '1.5.0.0') >= '0') +{ + $order_id = Order::getOrderByCartId((int)$cart->id); + $order = new Order((int)$order_id); + if ($order_state == _PS_OS_PAYMENT_) + { + $order->valid = 1; + $order->save(); + } + + $id_order_payment = Db::getInstance()->getValue('SELECT id_order_payment + FROM `'._DB_PREFIX_.'order_payment` + WHERE `order_reference` LIKE \'%'.pSQL($order->reference).'%\''); + + if ($id_order_payment == false) + $order->addOrderPayment($total_paid, null, trim($values['t'])); + else + { + $order_payment = new OrderPayment((int)$id_order_payment); + $order_payment->transaction_id = trim($values['t']); + $order_payment->save(); + } +} + +Tools::redirect('order-confirmation.php?id_cart='.$cart->id.'&id_module='.$paybox->id.'&key='.$customer->secure_key); + include(dirname(__FILE__).'/../../footer.php'); \ No newline at end of file