bebeboutik-scripts/replay_paybox.php

347 lines
13 KiB
PHP
Raw Permalink Normal View History

<?php
$_SERVER['HTTP_HOST'] = 'www.bebeboutik.com';
$_SERVER['SERVER_NAME'] = 'www.bebeboutik.com';
$_SERVER['HTTP_PORT'] = 80;
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['SERVER_PORT'] = 80;
include __DIR__ . '/www/config/config.inc.php';
if (version_compare(_PS_VERSION_, '1.5', '<')) {
include __DIR__ . '/www/init.php';
}
include __DIR__ . '/www/modules/paybox/paybox.php';
$test_mode = (int)Configuration::get('PBX_DEMO_MODE');
$paybox = new Paybox();
$fp = fopen(__DIR__ . '/name_of_my_extract.csv', 'r');
$errorcount = 0;
$count = 0;
if ($fp) {
while (($line = fgets($fp)) !== false) {
$infos = str_getcsv($line, ';', '"');
$error = '';
if ($infos[0] !== 'RemittancePaybox' && $infos[14] === 'Autorisation') {
$values = array();
$values['a'] = $infos[16]; //NumberOfAuthorization
$values['r'] = $infos[12]; //Reference
$values['t'] = $infos[8]; //callnumber
$values['s'] = $infos[7]; //ref paybox
$values['p'] = 'CARTE'; //paiement type
if (substr($infos[23], 0, 3) === 'CB-') {
$values['c'] = substr($infos[23], 3);
} else {
$values['c'] = $infos[23];
}
$values['m'] = $infos[17]; //amount
$values['i'] = $infos[22]; //card country
$values['y'] = $infos[21]; //country ip
if ($infos[31] === '') {
$values['e'] = '00000'; //errors
} else {
$values['e'] = $infos[31];
}
$values['d'] = '0118';
/*
r=1412537 //cart
t=776182861 //call number 776182861
a=615260 //autho number
b=0
p=CARTE //card
c=MasterCard //cardname
s=759782572 //ref paybox
y=FRA //country
i=FRA // country card
e=00000 //errors
n=513283
j=05
d=1809
*/
$x3 = false;
if (substr($values['r'], 0, 1) == 'x') {
$x3 = true;
$id_cart = substr($values['r'], 1);
} else {
$id_cart = $values['r'];
}
$cart = new Cart((int)$id_cart);
if (!$cart->id) {
Logger::addLog('Cart not valid', 4);
die('Cart not valid');
}
if (!Order::getOrderByCartId($cart->id)) {
echo "order nok \n";
$errorcount++;
echo json_encode($values) . "\n";
echo "processing order" . "\n";
$customer = new Customer((int)$cart->id_customer);
if ($x3) {
$total_paid = ($values['m'] * 3) / 100;
if (($cart->getOrderTotal() - $total_paid) < 2) {
$total_paid = $cart->getOrderTotal();
}
} else {
$total_paid = $values['m'] / 100;
}
$pbx_error = trim($values['e']);
$statut = '';
if ($test_mode === 0) {
if (empty($error) && $pbx_error == '00000') {
$error = '***TEST*** : Validated Payment <br>' . "\n";
$statut = _PS_OS_PAYMENT_;
} else {
$error = '***TEST*** : Invalid Payment <br>' . "\n" . $error;
$statut = _PS_OS_ERROR_;
}
} elseif ($test_mode === 1) {
if ($pbx_error == '00000' && empty($error)) {
$statut = _PS_OS_PAYMENT_;
} else {
$statut = _PS_OS_ERROR_;
}
}
switch ($pbx_error) {
case '00001':
$error .= 'Connection to the authorization center failed or an internal error occurred <br>' . "\n";
break;
case '00003':
$error .= 'Paybox error<br>' . "\n";
break;
case '00004':
$error .= 'Card number invalid or visual cryptogram invalid <br>' . "\n";
break;
case '00006':
$error .= 'Access refused or site/rank/identifier incorrect <br>' . "\n";
break;
case '00008':
$error .= 'Incorrect expiry date.<br>' . "\n";
break;
case '00009':
$error .= 'Error when during subscriber creation<br>' . "\n";
break;
case '00010':
$error .= 'Unknown currency<br>' . "\n";
break;
case '00011':
$error .= 'Amount incorrect<br>' . "\n";
break;
case '00015':
$error .= 'Payment already done<br>' . "\n";
break;
case '00016':
$error .= 'Subscriber already exists<br>' . "\n";
break;
case '00021':
$error .= 'Not authorized bin card<br>' . "\n";
break;
case '00029':
$error .= 'Not the same card used for the first payment.<br>' . "\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<br>' . "\n";
break;
case '00031':
case '00032':
$error .= 'Reserved<br>' . "\n";
break;
case '00033':
$error .= 'Unauthorized country code of the IP address of the cardholders browser<br>' . "\n";
break;
case '00040':
$error .= 'Operation without 3DSecure authentication, blocked by the fraud filter.<br>' . "\n";
break;
case '99999':
$error .= 'Payment waiting confirmation from the issuer<br>' . "\n";
break;
// Card schemes Carte Bancaire, American Express and Diners
case '00100':
$error .= 'Transaction approved or successfully processed.<br>' . "\n";
break;
case '00101':
case '00102':
$error .= 'Contact the card issuer<br>' . "\n";
break;
case '00103':
$error .= 'Invalid retailer<br>' . "\n";
break;
case '00104':
$error .= 'Keep the card<br>' . "\n";
break;
case '00105':
$error .= 'Do not honor<br>' . "\n";
break;
case '00107':
$error .= 'Keep the card, special conditions<br>' . "\n";
break;
case '00108':
$error .= 'Approve after holder identification<br>' . "\n";
break;
case '00112':
$error .= 'Invalid transaction<br>' . "\n";
break;
case '00113':
$error .= 'Invalid amount<br>' . "\n";
break;
case '00114':
$error .= 'Invalid holder number<br>' . "\n";
break;
case '00115':
$error .= 'Card issuer unknown<br>' . "\n";
break;
case '00117':
$error .= 'Client cancellation<br>' . "\n";
break;
case '00119':
$error .= 'Repeat the transaction later<br>' . "\n";
break;
case '00120':
$error .= 'Error in reply (error in the servers domain).<br>' . "\n";
break;
case '00124':
$error .= 'File update not withstood<br>' . "\n";
break;
case '00125':
$error .= 'Impossible to situate the record in the file<br>' . "\n";
break;
case '00126':
$error .= 'Record duplicated, former record replaced<br>' . "\n";
break;
case '00127':
$error .= 'Error in edit in file update field<br>' . "\n";
break;
case '00128':
$error .= 'Access to file denied<br>' . "\n";
break;
case '00129':
$error .= 'File update impossible<br>' . "\n";
break;
case '00130':
$error .= 'Error in format<br>' . "\n";
break;
case '00133':
$error .= 'Expired card<br>' . "\n";
break;
case '00138':
$error .= 'Too many attempts at secret code.<br>' . "\n";
break;
case '00151':
$error .= 'provision insuffisante.<br>' . "\n";
break;
case '00159':
$error .= 'Suspicion of fraud.<br>' . "\n";
break;
case '00000':
default:
$error .= '<b>Successful operation</b><br>' . "\n\n";
break;
}
echo 'PayBox version: ' . $paybox->version . "\n";
echo "(int)$cart->id, $statut, $total_paid, $paybox->displayName, $error, $customer->secure_key, $values\n";
$paybox->validateOrder((int)$cart->id, $statut, $total_paid, $paybox->displayName, $error, array(), NULL, false, $customer->secure_key, $values);
// save info paiement BDD
$paybox->saveInformationPaiement($values);
}
}
}
fclose($fp);
}
echo 'count ok ' . $count . "\n";
echo 'count nok ' . $errorcount . "\n";
die();
/*
$error = '';
$paybox = new Paybox();
$values = array(
'm', 'r', 't', 'p', 'c', 's'
);
$needed_vars = array('m', 'r', 't', 'p', 'c', 's');
if ((!isset($values['a']) || empty($values['a'])))
{
Logger::addLog('No autorisation number', 4);
die('No autorisation number');
}
$x3 = false;
if (substr($values['r'],0, 1) == 'x')
{
$x3 = true;
$id_cart = substr($values['r'],1);
}
else
$id_cart = $values['r'];
$cart = new Cart((int)$id_cart);
if (!$cart->id)
{
Logger::addLog('Cart not valid', 4);
die('Cart not valid');
}
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.'<br>';
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);
}
*/