bebeboutik-scripts/replay_paybox.php
David 258cdc757a Updated gitignore
Added 2 recovery scripts
2018-01-02 17:03:48 +01:00

347 lines
13 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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);
}
*/