fix conflicts

This commit is contained in:
Marion Muszynski 2017-09-27 12:04:46 +02:00
commit 72f4b5f05a
3 changed files with 90 additions and 65 deletions

View File

@ -178,10 +178,9 @@ if ($request_type && $ppec->type) {
// @ANTADIS - if id_billing make transaction
if ($id_billing_to_use != 0) {
if($ppec->getTotalPaid() <= 0){
if(!$ppec->DoReferenceTransaction($id_billing_to_use)){
return Tools::redirectLink($ppec->context->link->getPageLink('order.php').'?step=3&cgv=1&paypal_error=1');
}
$ppec->DoReferenceTransaction($id_billing_to_use);
$amount_match = $ppec->rightPaymentProcess();
// PAIEMENT REUSSI
@ -240,6 +239,14 @@ elseif (!empty($ppec->token) && ($ppec->token == $token) && ($ppec->payer_id = $
if ($ppec->hasSucceedRequest() && !empty($ppec->token))
{
// Check token validity
if(isset($ppec->result['TIMESTAMP']) && !empty($ppec->result['TIMESTAMP'])){
$validity_time = strtotime($ppec->result['TIMESTAMP']);
if($validity_time < time()){
return Tools::redirectLink($ppec->context->link->getPageLink('order.php').'?step=3&cgv=1&paypal_error=1');
}
}
$address = $customer = null;
$email = $ppec->result['EMAIL'];

View File

@ -140,7 +140,7 @@ class PaypalExpressCheckout extends Paypal
' . (int) $result['ID_CUSTOMER'] . ',
"' . pSQL($result['BILLINGAGREEMENTID']) . '",
"'.(isset($result['EMAIL']) && $result['EMAIL'] ? pSQL($result['EMAIL']) : '') . '",
"'.(isset($result['SHIPTONAME']) && $result['SHIPTONAME'] ? pSQL($result['SHIPTONAME']) : '') . '",
"'.(isset($result['SHIPTONAME']) && $result['SHIPTONAME'] ? pSQL($result['SHIPTONAME']) : '') . '",
"'.(isset($result['SHIPTOCITY']) && $result['SHIPTOCITY'] ? pSQL($result['SHIPTOCITY']) : '') . '",
"'.(isset($result['SHIPTOSTREET']) && $result['SHIPTOSTREET'] ? pSQL($result['SHIPTOSTREET']) : '') . '",
NOW(),
@ -159,7 +159,7 @@ class PaypalExpressCheckout extends Paypal
WHERE `id_paypal_agreement` = ' . (int) $id_billing
);
}
protected function getBillingAgreementId($id_billing)
{
return Db::getInstance()->getValue('
@ -187,7 +187,7 @@ class PaypalExpressCheckout extends Paypal
$fields['USER'] = Configuration::get('PAYPAL_API_USER');
$fields['PWD'] = Configuration::get('PAYPAL_API_PASSWORD');
$fields['SIGNATURE'] = Configuration::get('PAYPAL_API_SIGNATURE');
if ($access_token)
$fields['IDENTITYACCESSTOKEN'] = $access_token;
@ -206,8 +206,8 @@ class PaypalExpressCheckout extends Paypal
$cart->secure_key = $customer->secure_key;
$cart->save();
}
// ANTADIS
// ANTADIS
if ($request_billing) {
$fields['L_BILLINGTYPE0'] = 'MerchantInitiatedBillingSingleAgreement';
$fields['L_BILLINGAGREEMENTDESCRIPTION0'] = 'www.bebeboutik.com';
@ -222,7 +222,7 @@ class PaypalExpressCheckout extends Paypal
public function DoReferenceTransaction($id_billing_to_use)
{
$this->method = 'DoReferenceTransaction';
$fields = array();
$this->initParameters();
@ -233,12 +233,15 @@ class PaypalExpressCheckout extends Paypal
$fields['PAYMENTACTION'] = 'Sale';
$fields['AMT'] = $this->getTotalPaid();
if($fields['AMT'] <= 0){
return false;
}
$currency = new Currency((int)$this->context->cart->id_currency);
$fields['CURRENCYCODE'] = $currency->iso_code;
$fields['REFERENCEID'] = $this->getBillingAgreementId($id_billing_to_use);
$fields['IPADDRESS'] = $_SERVER['REMOTE_ADDR'];
$fields['IPADDRESS'] = $_SERVER['REMOTE_ADDR'];
// $shipping_cost_wt = $this->context->cart->getOrderShippingCost();
// $fields['SHIPPINGAMT'] = $shipping_cost_wt;
// $items_amount = $this->context->cart->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING);
@ -250,7 +253,7 @@ class PaypalExpressCheckout extends Paypal
public function getCancelUrl() {
return $this->context->link->getPageLink('order.php', false, null, array('step' => '3'));
}
public function setCancelUrl(&$fields)
{
$url = urldecode(Tools::getValue('current_shop_url'));
@ -438,14 +441,14 @@ class PaypalExpressCheckout extends Paypal
$fields['PAYMENTREQUEST_0_PAYMENTACTION'] = 'Authorization';
else
$fields['PAYMENTREQUEST_0_PAYMENTACTION'] = 'Sale';
$currency = new Currency((int)$this->context->cart->id_currency);
$fields['PAYMENTREQUEST_0_CURRENCYCODE'] = $currency->iso_code;
/**
* If the total amount is lower than 1 we put the shipping cost as an item
* so the payment could be valid.
*/
*/
if ($total <= 1)
{
$carrier = new Carrier($this->context->cart->id_carrier);
@ -453,7 +456,7 @@ class PaypalExpressCheckout extends Paypal
$fields['L_PAYMENTREQUEST_0_NAME'.$index] = $carrier->name;
$fields['L_PAYMENTREQUEST_0_AMT'.$index] = Tools::ps_round($shipping_cost_wt, $this->decimals);
$fields['L_PAYMENTREQUEST_0_QTY'.$index] = 1;
$fields['PAYMENTREQUEST_0_ITEMAMT'] = Tools::ps_round($total, $this->decimals) + Tools::ps_round($shipping_cost_wt, $this->decimals);
$fields['PAYMENTREQUEST_0_AMT'] = $total + Tools::ps_round($shipping_cost_wt, $this->decimals);
}
@ -472,7 +475,7 @@ class PaypalExpressCheckout extends Paypal
// float problem with php, have to use the string cast.
if ((isset($this->result['AMT']) && ((string)$this->result['AMT'] != (string)$total)) ||
(isset($this->result['PAYMENTINFO_0_AMT']) && ((string)$this->result['PAYMENTINFO_0_AMT'] != (string)$total)))
return false;
return false;
return true;
}
@ -492,7 +495,7 @@ class PaypalExpressCheckout extends Paypal
if ($this->context->cart->gift == 1)
$total = Tools::ps_round($total + $this->getGiftWrappingPrice(), $this->decimals);
if (version_compare(_PS_VERSION_, '1.5', '<'))
{
$discounts = $this->context->cart->getDiscounts();
@ -503,14 +506,14 @@ class PaypalExpressCheckout extends Paypal
$discounts = $this->context->cart->getCartRules();
$shipping_cost = $this->context->cart->getTotalShippingCost();
}
if (count($discounts) > 0)
foreach ($discounts as $product)
{
$price = - 1 * Tools::ps_round($product['value_real'], $this->decimals);
$total = Tools::ps_round($total + $price, $this->decimals);
}
return Tools::ps_round($shipping_cost, $this->decimals) + $total;
}
@ -609,7 +612,7 @@ class PaypalExpressCheckout extends Paypal
if ($redirect)
{
$link = $this->context->link->getPageLink('order.php', false, null, array('step' => '3'));
$link = $this->context->link->getPageLink('order.php', false, null, array('step' => '3'));
Tools::redirectLink($link);
exit(0);
}

View File

@ -711,7 +711,12 @@ class PayPal extends PaymentModule
$message = $this->l('Cancel products result:').'<br>';
$amount = (float)($products[(int)$order_detail->id]['product_price_wt'] * (int)$cancel_quantity[(int)$order_detail->id]);
$refund = $this->_makeRefund($paypal_order['id_transaction'], (int)$order->id, $amount);
if($amount > 0){
$refund = $this->_makeRefund($paypal_order['id_transaction'], (int)$order->id, $amount);
} else {
$refund = array();
$message .= $this->l('Transaction error because of the amount of the cancel product!').'<br>';
}
$this->formatMessage($refund, $message);
$this->_addNewPrivateMessage((int)$order->id, $message);
}
@ -1157,30 +1162,35 @@ class PayPal extends PaymentModule
$amt += (float)($product['product_price_wt']) * ($product['product_quantity'] - $product['product_quantity_refunded']);
$amt += (float)($order->total_shipping) + (float)($order->total_wrapping) - (float)($order->total_discounts);
// check if total or partial
if (Tools::ps_round($order->total_paid_real, $decimals) == Tools::ps_round($amt, $decimals))
$response = $this->_makeRefund($paypal_order['id_transaction'], $id_order);
else
$response = $this->_makeRefund($paypal_order['id_transaction'], $id_order, (float)($amt));
if($amt > 0){
// check if total or partial
if (Tools::ps_round($order->total_paid_real, $decimals) == Tools::ps_round($amt, $decimals))
$response = $this->_makeRefund($paypal_order['id_transaction'], $id_order);
else
$response = $this->_makeRefund($paypal_order['id_transaction'], $id_order, (float)($amt));
$message = $this->l('Refund operation result:').'<br>';
foreach ($response as $key => $value)
$message .= $key.': '.$value.'<br>';
$message = $this->l('Refund operation result:').'<br>';
foreach ($response as $key => $value)
$message .= $key.': '.$value.'<br>';
if (array_key_exists('ACK', $response) && $response['ACK'] == 'Success' && $response['REFUNDTRANSACTIONID'] != '')
{
$message .= $this->l('PayPal refund successful!');
if (!Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'paypal_order` SET `payment_status` = \'Refunded\' WHERE `id_order` = '.(int)$id_order))
die(Tools::displayError('Error when updating PayPal database'));
if (array_key_exists('ACK', $response) && $response['ACK'] == 'Success' && $response['REFUNDTRANSACTIONID'] != '')
{
$message .= $this->l('PayPal refund successful!');
if (!Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'paypal_order` SET `payment_status` = \'Refunded\' WHERE `id_order` = '.(int)$id_order))
die(Tools::displayError('Error when updating PayPal database'));
$history = new OrderHistory();
$history->id_order = (int)$id_order;
$history->changeIdOrderState((int)Configuration::get('PS_OS_REFUND'), $history->id_order);
$history->addWithemail();
$history->save();
$history = new OrderHistory();
$history->id_order = (int)$id_order;
$history->changeIdOrderState((int)Configuration::get('PS_OS_REFUND'), $history->id_order);
$history->addWithemail();
$history->save();
}
else
$message .= $this->l('Transaction error!');
} else {
$message = $this->l('Refund operation result:').'<br>';
$message .= $this->l('Transaction error because of the amount (amt)!');
}
else
$message .= $this->l('Transaction error!');
$this->_addNewPrivateMessage((int)$id_order, $message);
@ -1196,35 +1206,40 @@ class PayPal extends PaymentModule
$order = new Order((int)$id_order);
$currency = new Currency((int)$order->id_currency);
$paypal_lib = new PaypalLib();
$response = $paypal_lib->makeCall($this->getAPIURL(), $this->getAPIScript(), 'DoCapture',
'&'.http_build_query(array('AMT' => (float)$order->total_paid, 'AUTHORIZATIONID' => $paypal_order['id_transaction'],
'CURRENCYCODE' => $currency->iso_code, 'COMPLETETYPE' => 'Complete'), '', '&'));
$message = $this->l('Capture operation result:').'<br>';
if((float)$order->total_paid > 0){
$paypal_lib = new PaypalLib();
$response = $paypal_lib->makeCall($this->getAPIURL(), $this->getAPIScript(), 'DoCapture',
'&'.http_build_query(array('AMT' => (float)$order->total_paid, 'AUTHORIZATIONID' => $paypal_order['id_transaction'],
'CURRENCYCODE' => $currency->iso_code, 'COMPLETETYPE' => 'Complete'), '', '&'));
$message = $this->l('Capture operation result:').'<br>';
foreach ($response as $key => $value)
$message .= $key.': '.$value.'<br>';
foreach ($response as $key => $value)
$message .= $key.': '.$value.'<br>';
if ((array_key_exists('ACK', $response)) && ($response['ACK'] == 'Success') && ($response['PAYMENTSTATUS'] == 'Completed'))
{
$order_history = new OrderHistory();
$order_history->id_order = (int)$id_order;
if ((array_key_exists('ACK', $response)) && ($response['ACK'] == 'Success') && ($response['PAYMENTSTATUS'] == 'Completed'))
{
$order_history = new OrderHistory();
$order_history->id_order = (int)$id_order;
if (version_compare(_PS_VERSION_, '1.5', '<'))
$order_history->changeIdOrderState(Configuration::get('PS_OS_WS_PAYMENT'), (int)$id_order);
else
$order_history->changeIdOrderState(Configuration::get('PS_OS_WS_PAYMENT'), $order);
$order_history->addWithemail();
$message .= $this->l('Order finished with PayPal!');
if (version_compare(_PS_VERSION_, '1.5', '<'))
$order_history->changeIdOrderState(Configuration::get('PS_OS_WS_PAYMENT'), (int)$id_order);
else
$order_history->changeIdOrderState(Configuration::get('PS_OS_WS_PAYMENT'), $order);
$order_history->addWithemail();
$message .= $this->l('Order finished with PayPal!');
}
elseif (isset($response['PAYMENTSTATUS']))
$message .= $this->l('Transaction error!');
if (!Db::getInstance()->Execute('
UPDATE `'._DB_PREFIX_.'paypal_order`
SET `capture` = 0, `payment_status` = \''.pSQL($response['PAYMENTSTATUS']).'\', `id_transaction` = \''.pSQL($response['TRANSACTIONID']).'\'
WHERE `id_order` = '.(int)$id_order))
die(Tools::displayError('Error when updating PayPal database'));
} else {
$message = $this->l('Capture operation result:').'<br>';
$message .= $this->l('Transaction error because of the amount (amt)!');
}
elseif (isset($response['PAYMENTSTATUS']))
$message .= $this->l('Transaction error!');
if (!Db::getInstance()->Execute('
UPDATE `'._DB_PREFIX_.'paypal_order`
SET `capture` = 0, `payment_status` = \''.pSQL($response['PAYMENTSTATUS']).'\', `id_transaction` = \''.pSQL($response['TRANSACTIONID']).'\'
WHERE `id_order` = '.(int)$id_order))
die(Tools::displayError('Error when updating PayPal database'));
$this->_addNewPrivateMessage((int)$id_order, $message);