toutpratique/modules/paypal/paypal_orders.php
Thibault GUILLAUME 74b8829296 update prestashop
2015-09-22 18:23:16 +02:00

153 lines
4.9 KiB
PHP

<?php
/**
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2015 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_VERSION_'))
exit;
/*
* PayPal notification fields
*/
define('ID_INVOICE', 'invoice');
define('ID_PAYER', 'payer_id');
define('ID_TRANSACTION', 'txn_id');
define('CURRENCY', 'mc_currency');
define('PAYER_EMAIL', 'payer_email');
define('PAYMENT_DATE', 'payment_date');
define('TOTAL_PAID', 'mc_gross');
define('SHIPPING', 'shipping');
define('VERIFY_SIGN', 'verify_sign');
class PayPalOrder
{
/*
* Get PayPal order data
* - ID Order
* - ID Transaction
* - ID Invoice
* - Currency (ISO)
* - Total paid
* - Shipping
* - Capture (bool)
* - Payment date
* - Payment method (int)
* - Payment status
*/
public static function getTransactionDetails($ppec = false, $payment_status = false)
{
if ($ppec && $payment_status)
{
$transaction_id = pSQL($ppec->result['PAYMENTINFO_0_TRANSACTIONID']);
return array(
'currency' => pSQL($ppec->result['PAYMENTINFO_0_CURRENCYCODE']),
'id_invoice' => null,
'id_transaction' => $transaction_id,
'transaction_id' => $transaction_id,
'total_paid' => (float)$ppec->result['PAYMENTINFO_0_AMT'],
'shipping' => (float)$ppec->result['PAYMENTREQUEST_0_SHIPPINGAMT'],
'payment_date' => pSQL($ppec->result['PAYMENTINFO_0_ORDERTIME']),
'payment_status' => pSQL($payment_status)
);
}
else
{
$transaction_id = pSQL(Tools::getValue(ID_TRANSACTION));
return array(
'currency' => pSQL(Tools::getValue(CURRENCY)),
'id_invoice' => pSQL(Tools::getValue(ID_INVOICE)),
'id_transaction' => $transaction_id,
'transaction_id' => $transaction_id,
'total_paid' => (float)Tools::getValue(TOTAL_PAID),
'shipping' => (float)Tools::getValue(SHIPPING),
'payment_date' => pSQL(Tools::getValue(PAYMENT_DATE)),
'payment_status' => pSQL($payment_status)
);
}
}
public static function getOrderById($id_order)
{
return Db::getInstance()->getRow(
'SELECT * FROM `'._DB_PREFIX_.'paypal_order`
WHERE `id_order` = '.(int)$id_order
);
}
public static function getIdOrderByTransactionId($id_transaction)
{
$sql = 'SELECT `id_order`
FROM `'._DB_PREFIX_.'paypal_order`
WHERE `id_transaction` = \''.pSQL($id_transaction).'\'';
$result = Db::getInstance()->getRow($sql);
if ($result != false)
return (int)$result['id_order'];
return 0;
}
public static function saveOrder($id_order, $transaction)
{
$order = new Order((int)$id_order);
$total_paid = (float)$transaction['total_paid'];
if (!isset($transaction['payment_status']) || !$transaction['payment_status'])
$transaction['payment_status'] = 'NULL';
Db::getInstance()->Execute('
INSERT INTO `'._DB_PREFIX_.'paypal_order`
(`id_order`, `id_transaction`, `id_invoice`, `currency`, `total_paid`, `shipping`, `capture`, `payment_date`, `payment_method`, `payment_status`)
VALUES ('.(int)$id_order.', \''.pSQL($transaction['id_transaction']).'\', \''.pSQL($transaction['id_invoice']).'\',
\''.pSQL($transaction['currency']).'\',
\''.$total_paid.'\',
\''.(float)$transaction['shipping'].'\',
\''.(int)Configuration::get('PAYPAL_CAPTURE').'\',
\''.pSQL($transaction['payment_date']).'\',
\''.(int)Configuration::get('PAYPAL_PAYMENT_METHOD').'\',
\''.pSQL($transaction['payment_status']).'\')'
);
}
public static function updateOrder($id_order, $transaction)
{
$total_paid = (float)$transaction['total_paid'];
if (!isset($transaction['payment_status']) || !$transaction['payment_status'])
$transaction['payment_status'] = 'NULL';
$sql = 'UPDATE `'._DB_PREFIX_.'paypal_order`
SET `payment_status` = \''.pSQL($transaction['payment_status']).'\'
WHERE `id_order` = \''.(int)$id_order.'\'
AND `id_transaction` = \''.pSQL($transaction['id_transaction']).'\'
AND `currency` = \''.pSQL($transaction['currency']).'\'';
if ((int)Configuration::get('PAYPAL_SANDBOX') != 1)
$sql .= 'AND `total_paid` = \''.$transaction['total_paid'].'\'
AND `shipping` = \''.(float)$transaction['shipping'].'\';';
Db::getInstance()->Execute($sql);
}
}