%PDF- %PDF-
Direktori : /home/lightco1/public_html/plugins/vmpayment/klikandpay/klikandpay/helpers/ |
Current File : /home/lightco1/public_html/plugins/vmpayment/klikandpay/klikandpay/helpers/recurring.php |
<?php /** * * Klikandpay payment plugin * * @author Valérie Isaksen * @version $Id$ * @package VirtueMart * @subpackage payment * Copyright (C) 2004-2015 Virtuemart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ defined('_JEXEC') or die('Restricted access'); class KlikandpayHelperKlikandpayRecurring extends KlikandpayHelperKlikandpay { function __construct($method, $plugin) { parent::__construct($method, $plugin); } function getExtraPluginNameInfo() { $recurring = $this->getRecurringPayments(); $extraInfo['recurring'] = $recurring['info']; return $extraInfo; } function onCheckoutCheckDataPayment(VirtueMartCart $cart) { static $displayInfoMsg = true; if ($cart->BT) { if (empty($cart->BT['phone_1']) and empty($cart->BT['phone_2']) and $displayInfoMsg) { vmInfo(vmText::sprintf('VMPAYMENT_KLIKANDPAY_SUBSCRIBE_TEL_REQUIRED', JRoute::_('index.php?option=com_virtuemart&view=user&task=editaddresscheckout&addrtype=BT'))); $return = false; } } $displayInfoMsg = false; return $return; } function onSelectCheck(VirtueMartCart $cart) { $this->onCheckoutCheckDataPayment($cart); } function getRecurringPayments() { if (empty($this->_method->recurring_deposit) and $this->_method->subscribe_number != 2) { $recurring = $this->getRecurringIdenticalAmountMonthly(); } else { $recurring = $this->getRecurringDeposit(); } return $recurring; } /** * Le montant total est divisé en 1, 2, .. 6 fois. Tous les montants à débiter sont équivalents. * Le premier montant est débité au moment de la date d’achat, * et les autres montants sont présentés en banque à date anniversaire à 1 mois d’intervalle. * @param $totalInPaymentCurrency */ function getRecurringIdenticalAmountMonthly() { $totalInPaymentCurrency = $this->getTotal(); $recurring["MONTANT"] = $totalInPaymentCurrency; $recurring["EXTRA"] = ($this->_method->recurring_number - 1) . "FOIS"; $recurring["info"] = vmText::sprintf('VMPAYMENT_KLIKANDPAY_COMMENT_RECURRING_IDENTICAL', $this->_method->recurring_number); return $recurring; } /** * Après versement d’un acompte immédiat, le solde à payer est divisé en 1, 2, ... 6 fois * dont la date anniversaire peut être différente de celle du paiement immédiat. * Chaque échéance pour le paiement du solde sera présentée à 1 mois d’intervalle à la date anniversaire définie * si elle est différente du paiement initial. * * Indiquer une valeur pour la variable MONTANT qui sera immédiatement présentée en banque, * MONTANT2 le montant du solde. * EXTRA, le nombre d’échéances souhaitées. * * * OU * * Paiement d’un acompte immédiat et paiement du solde à une date définie. * * Indiquer le montant à débiter immédiatement dans la variable MONTANT, * le solde à débiter dans MONTANT2 et * indiquer la date pour le paiement du solde dans la variable DATE2. * * @param $totalInPaymentCurrency */ function getRecurringDeposit() { $totalInPaymentCurrency = $this->getTotal(); if (preg_match('/%$/', $this->_method->recurring_deposit)) { $deposit = substr($this->_method->recurring_deposit, 0, -1); $recurring_deposit = $totalInPaymentCurrency * $deposit * 0.01; } else { $recurring_deposit = $this->_method->recurring_deposit; if (!class_exists('CurrencyDisplay')) { require(VMPATH_ADMIN . DS . 'helpers' . DS . 'currencydisplay.php'); } $recurring_deposit = vmPSPlugin::getAmountValueInCurrency($recurring_deposit, $this->_method->payment_currency); $cd = CurrencyDisplay::getInstance($this->cart->pricesCurrency); } $montant_currency = vmPSPlugin::getAmountInCurrency($recurring_deposit, $this->_method->payment_currency); $montant2_currency = vmPSPlugin::getAmountInCurrency($totalInPaymentCurrency - $recurring_deposit, $this->_method->payment_currency); $cd = CurrencyDisplay::getInstance($this->cart->pricesCurrency); $recurring["MONTANT"] = number_format($recurring_deposit, 2, '.', ''); $recurring["MONTANT2"] = $montant2_currency['value']; if ($this->_method->recurring_number > 2) { $recurring["EXTRA"] = ($this->_method->recurring_number - 1) . "FOIS"; } if ($this->_method->recurring_date) { $recurring["DATE2"] = $this->getNextTermDate(); } $recurring["info"] = vmText::sprintf('VMPAYMENT_KLIKANDPAY_COMMENT_RECURRING_DEPOSIT', $this->_method->recurring_number, $montant_currency['display']); return $recurring; } /** * La valeur DATE, doit être au format : année-mois-jour */ function getNextTermDate() { return date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + ($this->_method->recurring_date), date('Y'))); } function getOrderHistory($klikandpay_data, $order, $payments) { if (count($payments) == 1) { $amountInCurrency = vmPSPlugin::getAmountInCurrency($order['details']['BT']->order_total, $order['details']['BT']->order_currency); $order_history['comments'] = vmText::sprintf('VMPAYMENT_KLIKANDPAY_PAYMENT_STATUS_CONFIRMED_RECURRING', $amountInCurrency['display'], $order['details']['BT']->order_number); } $amountInCurrency = vmPSPlugin::getAmountInCurrency($klikandpay_data['MONTANTXKP'], $order['details']['BT']->order_currency); $order_history['comments'] .= "<br />" . vmText::sprintf('VMPAYMENT_KLIKANDPAY_PAYMENT_STATUS_CONFIRMED_RECURRING_2', $amountInCurrency['display']); if (count($payments) == 1) { $recurring_comment = ''; $payment = $payments[0]; $recurring = json_decode($payment->recurring); $amountInCurrency = vmPSPlugin::getAmountInCurrency($recurring->MONTANT, $order['details']['BT']->order_currency); $recurring_comment .= "<br />" . vmText::_('VMPAYMENT_KLIKANDPAY_RECURRING_MONTANT') . ' ' . $amountInCurrency['display']; if (isset($recurring->MONTANT2)) { $amountInCurrency = vmPSPlugin::getAmountInCurrency($recurring->MONTANT2, $order['details']['BT']->order_currency); $recurring_comment .= "<br />" . vmText::_('VMPAYMENT_KLIKANDPAY_RECURRING_MONTANT2') . ' ' . $amountInCurrency['display']; } if (isset($recurring->EXTRA)) { $recurring_comment .= "<br />" . vmText::_('VMPAYMENT_KLIKANDPAY_RECURRING_EXTRA') . ' ' . substr($recurring->EXTRA, 0, 1); } if (isset($recurring->DATE2)) { $recurring_comment .= vmText::_('VMPAYMENT_KLIKANDPAY_RECURRING_DATE2') . ' ' . $recurring->DATE2; } } $nbRecurringDone = $this->getNbRecurringDone($payments); if ($nbRecurringDone < $this->_method->recurring_number) { $order_history['order_status'] = $this->_method->status_success_recurring; } else { $order_history['order_status'] = $this->_method->status_success_recurring_end; } $order_history['customer_notified'] = true; $order_history['comments'] .= $recurring_comment; return $order_history; } function getNbRecurringDone($payments) { $nb = 0; foreach ($payments as $payment) { if (!empty($payment->klikandpay_fullresponse)) { $nb++; } } return $nb; } function getKlikandpayServerUrl($id = NULL) { if ($this->_method->shop_mode == 'test') { $url = 'https://www.klikandpay.com/paiementtest/checkxfois.pl'; } else { $url = 'https://www.klikandpay.com/paiement/checkxfois.pl'; } return $url; } }