We will be off from 27/1 (Monday) to 31/1 (Friday) (GMT +7) for our Tet Holiday (Lunar New Year) in our country

Commit a822b365 authored by Rik ter Beek's avatar Rik ter Beek

Merge pull request #38 from Adyen/develop

Merge branch 'develop'
parents f38de7c3 866863ba
...@@ -193,10 +193,10 @@ interface NotificationInterface ...@@ -193,10 +193,10 @@ interface NotificationInterface
public function setAmountValue($amountValue); public function setAmountValue($amountValue);
/** /**
* Gets the AmountValue for the notification. * Gets the AmountValue for the notification.
* *
* @return int|null AmountValue. * @return int|null AmountValue.
*/ */
public function getAmountCurency(); public function getAmountCurency();
/** /**
......
...@@ -30,20 +30,33 @@ class Version extends \Magento\Config\Block\System\Config\Form\Field ...@@ -30,20 +30,33 @@ class Version extends \Magento\Config\Block\System\Config\Form\Field
{ {
/** /**
* Contains list of modules
*
* @var \Magento\Framework\Module\ModuleListInterface * @var \Magento\Framework\Module\ModuleListInterface
*/ */
protected $_moduleList; protected $_moduleList;
/**
* Version constructor.
* @param \Magento\Framework\Module\ModuleListInterface $moduleList
* @param \Magento\Backend\Block\Template\Context $context
* @param array $data
*/
public function __construct( public function __construct(
\Magento\Framework\Module\ModuleListInterface $moduleList, \Magento\Framework\Module\ModuleListInterface $moduleList,
\Magento\Backend\Block\Template\Context $context, \Magento\Backend\Block\Template\Context $context,
array $data = [] array $data = []
) ) {
{
parent::__construct($context, $data); parent::__construct($context, $data);
$this->_moduleList = $moduleList; $this->_moduleList = $moduleList;
} }
/**
* Retrieve the setup version of the extension
*
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @return string
*/
protected function _getElementHtml(\Magento\Framework\Data\Form\Element\AbstractElement $element) protected function _getElementHtml(\Magento\Framework\Data\Form\Element\AbstractElement $element)
{ {
return (string) $this->_moduleList->getOne("Adyen_Payment")['setup_version']; return (string) $this->_moduleList->getOne("Adyen_Payment")['setup_version'];
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
namespace Adyen\Payment\Block\Form; namespace Adyen\Payment\Block\Form;
class Cc extends \Magento\Payment\Block\Form class Cc extends \Magento\Payment\Block\Form\Cc
{ {
/** /**
* @var string * @var string
...@@ -43,22 +43,42 @@ class Cc extends \Magento\Payment\Block\Form ...@@ -43,22 +43,42 @@ class Cc extends \Magento\Payment\Block\Form
protected $_adyenHelper; protected $_adyenHelper;
/** /**
* @var \Magento\Framework\App\State
*/
protected $_appState;
/**
* @var \Magento\Checkout\Model\Session
*/
protected $_checkoutSession;
/**
* Cc constructor.
*
* @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Framework\View\Element\Template\Context $context
* @param \Magento\Payment\Model\Config $paymentConfig * @param \Magento\Payment\Model\Config $paymentConfig
* @param \Adyen\Payment\Helper\Data $adyenHelper
* @param \Magento\Checkout\Model\Session $checkoutSession
* @param array $data * @param array $data
*/ */
public function __construct( public function __construct(
\Magento\Framework\View\Element\Template\Context $context, \Magento\Framework\View\Element\Template\Context $context,
\Magento\Payment\Model\Config $paymentConfig, \Magento\Payment\Model\Config $paymentConfig,
\Adyen\Payment\Helper\Data $adyenHelper, \Adyen\Payment\Helper\Data $adyenHelper,
\Magento\Checkout\Model\Session $checkoutSession,
array $data = [] array $data = []
) { ) {
parent::__construct($context, $data); parent::__construct($context, $paymentConfig);
$this->_paymentConfig = $paymentConfig;
$this->_adyenHelper = $adyenHelper; $this->_adyenHelper = $adyenHelper;
$this->_appState = $context->getAppState();
$this->_checkoutSession = $checkoutSession;
} }
/**
* @return mixed
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function getCsePublicKey() public function getCsePublicKey()
{ {
// get storeId for admin // get storeId for admin
...@@ -77,62 +97,6 @@ class Cc extends \Magento\Payment\Block\Form ...@@ -77,62 +97,6 @@ class Cc extends \Magento\Payment\Block\Form
} }
return $cseKey; return $cseKey;
}
/**
* Retrieve availables credit card types
*
* @return array
* @SuppressWarnings(PHPMD.UnusedLocalVariable)
*/
public function getCcAvailableTypes()
{
$types = $this->_paymentConfig->getCcTypes();
if ($method = $this->getMethod()) {
$availableTypes = $method->getConfigData('cctypes');
if ($availableTypes) {
$availableTypes = explode(',', $availableTypes);
foreach ($types as $code => $name) {
if (!in_array($code, $availableTypes)) {
unset($types[$code]);
}
}
}
}
return $types;
}
/**
* Retrieve credit card expire months
*
* @return array
*/
public function getCcMonths()
{
$months = $this->getData('cc_months');
if ($months === null) {
$months[0] = __('Month');
$months = array_merge($months, $this->_paymentConfig->getMonths());
$this->setData('cc_months', $months);
}
return $months;
}
/**
* Retrieve credit card expire years
*
* @return array
*/
public function getCcYears()
{
$years = $this->getData('cc_years');
if ($years === null) {
$years = $this->_paymentConfig->getYears();
$years = [0 => __('Year')] + $years;
$this->setData('cc_years', $years);
}
return $years;
} }
/** /**
...@@ -142,52 +106,15 @@ class Cc extends \Magento\Payment\Block\Form ...@@ -142,52 +106,15 @@ class Cc extends \Magento\Payment\Block\Form
*/ */
public function hasVerification() public function hasVerification()
{ {
return true; // if backend order and moto payments is turned on don't show cvc
} if ($this->_appState->getAreaCode() === \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE) {
$this->getCheckoutSession();
/** $store = $this->_checkoutSession->getQuote()->getStore();
* Whether switch/solo card type available $enableMoto = $this->_adyenHelper->getAdyenCcConfigDataFlag('enable_moto', $store->getId());
* if($enableMoto) {
* @return bool return false;
*/ }
public function hasSsCardType()
{
$availableTypes = explode(',', $this->getMethod()->getConfigData('cctypes'));
$ssPresenations = array_intersect(['SS', 'SM', 'SO'], $availableTypes);
if ($availableTypes && count($ssPresenations) > 0) {
return true;
}
return false;
}
/**
* Solo/switch card start year
*
* @return array
*/
public function getSsStartYears()
{
$years = [];
$first = date("Y");
for ($index = 5; $index >= 0; $index--) {
$year = $first - $index;
$years[$year] = $year;
} }
$years = [0 => __('Year')] + $years; return true;
return $years;
}
/**
* Render block HTML
*
* @return string
*/
protected function _toHtml()
{
$this->_eventManager->dispatch('payment_form_block_to_html_before', ['block' => $this]);
return parent::_toHtml();
} }
} }
\ No newline at end of file
...@@ -32,10 +32,12 @@ class AbstractInfo extends \Magento\Payment\Block\Info ...@@ -32,10 +32,12 @@ class AbstractInfo extends \Magento\Payment\Block\Info
* @var \Adyen\Payment\Helper\Data * @var \Adyen\Payment\Helper\Data
*/ */
protected $_adyenHelper; protected $_adyenHelper;
/** /**
* Constructor * Constructor
* *
* AbstractInfo constructor.
* @param \Adyen\Payment\Helper\Data $adyenHelper
* @param Template\Context $context * @param Template\Context $context
* @param array $data * @param array $data
*/ */
...@@ -49,12 +51,19 @@ class AbstractInfo extends \Magento\Payment\Block\Info ...@@ -49,12 +51,19 @@ class AbstractInfo extends \Magento\Payment\Block\Info
$this->_adyenHelper = $adyenHelper; $this->_adyenHelper = $adyenHelper;
} }
/**
* @return mixed
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function getAdyenPspReference() public function getAdyenPspReference()
{ {
return $this->getInfo()->getAdyenPspReference(); return $this->getInfo()->getAdyenPspReference();
} }
/**
* @return mixed
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function isDemoMode() public function isDemoMode()
{ {
$storeId = $this->getInfo()->getOrder()->getStoreId(); $storeId = $this->getInfo()->getOrder()->getStoreId();
......
...@@ -30,6 +30,11 @@ class Hpp extends AbstractInfo ...@@ -30,6 +30,11 @@ class Hpp extends AbstractInfo
*/ */
protected $_template = 'Adyen_Payment::info/adyen_hpp.phtml'; protected $_template = 'Adyen_Payment::info/adyen_hpp.phtml';
/**
* Check if Payment method selection is configured on Adyen or Magento
*
* @return mixed
*/
public function isPaymentSelectionOnAdyen() public function isPaymentSelectionOnAdyen()
{ {
return $this->_adyenHelper->getAdyenHppConfigDataFlag('payment_selection_on_adyen'); return $this->_adyenHelper->getAdyenHppConfigDataFlag('payment_selection_on_adyen');
......
...@@ -40,6 +40,8 @@ class Pos extends \Magento\Payment\Block\Form ...@@ -40,6 +40,8 @@ class Pos extends \Magento\Payment\Block\Form
protected $_order; protected $_order;
/** /**
* Pos constructor.
*
* @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Framework\View\Element\Template\Context $context
* @param array $data * @param array $data
* @param \Magento\Sales\Model\OrderFactory $orderFactory * @param \Magento\Sales\Model\OrderFactory $orderFactory
...@@ -50,20 +52,24 @@ class Pos extends \Magento\Payment\Block\Form ...@@ -50,20 +52,24 @@ class Pos extends \Magento\Payment\Block\Form
array $data = [], array $data = [],
\Magento\Sales\Model\OrderFactory $orderFactory, \Magento\Sales\Model\OrderFactory $orderFactory,
\Magento\Checkout\Model\Session $checkoutSession \Magento\Checkout\Model\Session $checkoutSession
) ) {
{
$this->_orderFactory = $orderFactory; $this->_orderFactory = $orderFactory;
$this->_checkoutSession = $checkoutSession; $this->_checkoutSession = $checkoutSession;
parent::__construct($context, $data); parent::__construct($context, $data);
$this->_getOrder(); $this->_getOrder();
} }
/**
* @return $this
*/
public function _prepareLayout() public function _prepareLayout()
{ {
return parent::_prepareLayout(); return parent::_prepareLayout();
} }
/**
* @return string
*/
public function getLaunchLink() public function getLaunchLink()
{ {
$result = ""; $result = "";
......
...@@ -40,6 +40,8 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -40,6 +40,8 @@ class Redirect extends \Magento\Payment\Block\Form
protected $_order; protected $_order;
/** /**
* Redirect constructor.
*
* @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Framework\View\Element\Template\Context $context
* @param array $data * @param array $data
* @param \Magento\Sales\Model\OrderFactory $orderFactory * @param \Magento\Sales\Model\OrderFactory $orderFactory
...@@ -50,8 +52,7 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -50,8 +52,7 @@ class Redirect extends \Magento\Payment\Block\Form
array $data = [], array $data = [],
\Magento\Sales\Model\OrderFactory $orderFactory, \Magento\Sales\Model\OrderFactory $orderFactory,
\Magento\Checkout\Model\Session $checkoutSession \Magento\Checkout\Model\Session $checkoutSession
) ) {
{
$this->_orderFactory = $orderFactory; $this->_orderFactory = $orderFactory;
$this->_checkoutSession = $checkoutSession; $this->_checkoutSession = $checkoutSession;
parent::__construct($context, $data); parent::__construct($context, $data);
...@@ -59,11 +60,17 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -59,11 +60,17 @@ class Redirect extends \Magento\Payment\Block\Form
} }
/**
* @return $this
*/
public function _prepareLayout() public function _prepareLayout()
{ {
return parent::_prepareLayout(); return parent::_prepareLayout();
} }
/**
* @return string
*/
public function getFormUrl() public function getFormUrl()
{ {
$result = ""; $result = "";
...@@ -81,6 +88,9 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -81,6 +88,9 @@ class Redirect extends \Magento\Payment\Block\Form
return $result; return $result;
} }
/**
* @return array
*/
public function getFormFields() public function getFormFields()
{ {
$result = array(); $result = array();
......
...@@ -26,7 +26,11 @@ namespace Adyen\Payment\Block\Redirect; ...@@ -26,7 +26,11 @@ namespace Adyen\Payment\Block\Redirect;
class Validate3d extends \Magento\Payment\Block\Form class Validate3d extends \Magento\Payment\Block\Form
{ {
/**
* @var \Magento\Sales\Model\OrderFactory
*/
protected $_orderFactory; protected $_orderFactory;
/** /**
* @var \Magento\Checkout\Model\Session * @var \Magento\Checkout\Model\Session
*/ */
...@@ -38,6 +42,8 @@ class Validate3d extends \Magento\Payment\Block\Form ...@@ -38,6 +42,8 @@ class Validate3d extends \Magento\Payment\Block\Form
protected $_order; protected $_order;
/** /**
* Validate3d constructor.
*
* @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Framework\View\Element\Template\Context $context
* @param array $data * @param array $data
* @param \Magento\Sales\Model\OrderFactory $orderFactory * @param \Magento\Sales\Model\OrderFactory $orderFactory
...@@ -48,15 +54,13 @@ class Validate3d extends \Magento\Payment\Block\Form ...@@ -48,15 +54,13 @@ class Validate3d extends \Magento\Payment\Block\Form
array $data = [], array $data = [],
\Magento\Sales\Model\OrderFactory $orderFactory, \Magento\Sales\Model\OrderFactory $orderFactory,
\Magento\Checkout\Model\Session $checkoutSession \Magento\Checkout\Model\Session $checkoutSession
) ) {
{
$this->_orderFactory = $orderFactory; $this->_orderFactory = $orderFactory;
$this->_checkoutSession = $checkoutSession; $this->_checkoutSession = $checkoutSession;
parent::__construct($context, $data); parent::__construct($context, $data);
$this->_getOrder(); $this->_getOrder();
} }
/** /**
* Get order object * Get order object
* *
...@@ -81,21 +85,33 @@ class Validate3d extends \Magento\Payment\Block\Form ...@@ -81,21 +85,33 @@ class Validate3d extends \Magento\Payment\Block\Form
return $this->_checkoutSession; return $this->_checkoutSession;
} }
/**
* @return mixed
*/
public function getIssuerUrl() public function getIssuerUrl()
{ {
return $this->_order->getPayment()->getAdditionalInformation('issuerUrl'); return $this->_order->getPayment()->getAdditionalInformation('issuerUrl');
} }
/**
* @return mixed
*/
public function getPaReq() public function getPaReq()
{ {
return $this->_order->getPayment()->getAdditionalInformation('paRequest'); return $this->_order->getPayment()->getAdditionalInformation('paRequest');
} }
/**
* @return mixed
*/
public function getMd() public function getMd()
{ {
return $this->_order->getPayment()->getAdditionalInformation('md'); return $this->_order->getPayment()->getAdditionalInformation('md');
} }
/**
* @return string
*/
public function getTermUrl() public function getTermUrl()
{ {
return $this->getUrl('adyen/process/validate3d'); return $this->getUrl('adyen/process/validate3d');
......
...@@ -36,7 +36,10 @@ class Cron extends \Magento\Framework\App\Action\Action ...@@ -36,7 +36,10 @@ class Cron extends \Magento\Framework\App\Action\Action
* @var \Magento\Framework\Controller\Result\RawFactory * @var \Magento\Framework\Controller\Result\RawFactory
*/ */
protected $_resultFactory; protected $_resultFactory;
/** /**
* Cron constructor.
*
* @param \Magento\Framework\App\Action\Context $context * @param \Magento\Framework\App\Action\Context $context
*/ */
public function __construct( public function __construct(
...@@ -46,8 +49,9 @@ class Cron extends \Magento\Framework\App\Action\Action ...@@ -46,8 +49,9 @@ class Cron extends \Magento\Framework\App\Action\Action
$this->_objectManager = $context->getObjectManager(); $this->_objectManager = $context->getObjectManager();
$this->_resultFactory = $context->getResultFactory(); $this->_resultFactory = $context->getResultFactory();
} }
/** /**
* @throws \Magento\Framework\Exception\LocalizedException * Process Notification from Cron
*/ */
public function execute() public function execute()
{ {
......
This diff is collapsed.
...@@ -36,7 +36,6 @@ class Redirect extends \Magento\Framework\App\Action\Action ...@@ -36,7 +36,6 @@ class Redirect extends \Magento\Framework\App\Action\Action
*/ */
protected $_checkoutSession; protected $_checkoutSession;
/** /**
* @var \Magento\Sales\Model\Order * @var \Magento\Sales\Model\Order
*/ */
...@@ -47,7 +46,6 @@ class Redirect extends \Magento\Framework\App\Action\Action ...@@ -47,7 +46,6 @@ class Redirect extends \Magento\Framework\App\Action\Action
*/ */
protected $_orderFactory; protected $_orderFactory;
/** /**
* @param \Magento\Framework\App\Action\Context $context * @param \Magento\Framework\App\Action\Context $context
*/ */
...@@ -57,7 +55,6 @@ class Redirect extends \Magento\Framework\App\Action\Action ...@@ -57,7 +55,6 @@ class Redirect extends \Magento\Framework\App\Action\Action
parent::__construct($context); parent::__construct($context);
} }
/** /**
* Return checkout session object * Return checkout session object
* *
...@@ -68,6 +65,9 @@ class Redirect extends \Magento\Framework\App\Action\Action ...@@ -68,6 +65,9 @@ class Redirect extends \Magento\Framework\App\Action\Action
return $this->_checkoutSession; return $this->_checkoutSession;
} }
/**
* Set redirect
*/
public function execute() public function execute()
{ {
$this->_view->loadLayout(); $this->_view->loadLayout();
...@@ -98,14 +98,19 @@ class Redirect extends \Magento\Framework\App\Action\Action ...@@ -98,14 +98,19 @@ class Redirect extends \Magento\Framework\App\Action\Action
return $this->_objectManager->get('Magento\Checkout\Model\Session'); return $this->_objectManager->get('Magento\Checkout\Model\Session');
} }
/**
* @return mixed
*/
protected function _getQuote() protected function _getQuote()
{ {
return $this->_objectManager->get('Magento\Quote\Model\Quote'); return $this->_objectManager->get('Magento\Quote\Model\Quote');
} }
/**
* @return mixed
*/
protected function _getQuoteManagement() protected function _getQuoteManagement()
{ {
return $this->_objectManager->get('\Magento\Quote\Model\QuoteManagement'); return $this->_objectManager->get('\Magento\Quote\Model\QuoteManagement');
} }
} }
\ No newline at end of file
...@@ -47,7 +47,6 @@ class RedirectPos extends \Magento\Framework\App\Action\Action ...@@ -47,7 +47,6 @@ class RedirectPos extends \Magento\Framework\App\Action\Action
*/ */
protected $_orderFactory; protected $_orderFactory;
/** /**
* @param \Magento\Framework\App\Action\Context $context * @param \Magento\Framework\App\Action\Context $context
*/ */
...@@ -57,7 +56,6 @@ class RedirectPos extends \Magento\Framework\App\Action\Action ...@@ -57,7 +56,6 @@ class RedirectPos extends \Magento\Framework\App\Action\Action
parent::__construct($context); parent::__construct($context);
} }
/** /**
* Return checkout session object * Return checkout session object
* *
...@@ -98,14 +96,19 @@ class RedirectPos extends \Magento\Framework\App\Action\Action ...@@ -98,14 +96,19 @@ class RedirectPos extends \Magento\Framework\App\Action\Action
return $this->_objectManager->get('Magento\Checkout\Model\Session'); return $this->_objectManager->get('Magento\Checkout\Model\Session');
} }
/**
* @return mixed
*/
protected function _getQuote() protected function _getQuote()
{ {
return $this->_objectManager->get('Magento\Quote\Model\Quote'); return $this->_objectManager->get('Magento\Quote\Model\Quote');
} }
/**
* @return mixed
*/
protected function _getQuoteManagement() protected function _getQuoteManagement()
{ {
return $this->_objectManager->get('\Magento\Quote\Model\QuoteManagement'); return $this->_objectManager->get('\Magento\Quote\Model\QuoteManagement');
} }
} }
\ No newline at end of file
...@@ -23,8 +23,7 @@ ...@@ -23,8 +23,7 @@
namespace Adyen\Payment\Controller\Process; namespace Adyen\Payment\Controller\Process;
use Magento\Customer\Api\AccountManagementInterface; use \Adyen\Payment\Model\Notification;
use Magento\Customer\Api\CustomerRepositoryInterface;
class Result extends \Magento\Framework\App\Action\Action class Result extends \Magento\Framework\App\Action\Action
{ {
...@@ -59,6 +58,8 @@ class Result extends \Magento\Framework\App\Action\Action ...@@ -59,6 +58,8 @@ class Result extends \Magento\Framework\App\Action\Action
protected $_adyenLogger; protected $_adyenLogger;
/** /**
* Result constructor.
*
* @param \Magento\Framework\App\Action\Context $context * @param \Magento\Framework\App\Action\Context $context
* @param \Adyen\Payment\Helper\Data $adyenHelper * @param \Adyen\Payment\Helper\Data $adyenHelper
* @param \Magento\Sales\Model\OrderFactory $orderFactory * @param \Magento\Sales\Model\OrderFactory $orderFactory
...@@ -82,12 +83,15 @@ class Result extends \Magento\Framework\App\Action\Action ...@@ -82,12 +83,15 @@ class Result extends \Magento\Framework\App\Action\Action
parent::__construct($context); parent::__construct($context);
} }
/**
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function execute() public function execute()
{ {
$response = $this->getRequest()->getParams(); $response = $this->getRequest()->getParams();
$this->_adyenLogger->addAdyenResult(print_r($response, true)); $this->_adyenLogger->addAdyenResult(print_r($response, true));
if($response) { if ($response) {
$result = $this->validateResponse($response); $result = $this->validateResponse($response);
if ($result) { if ($result) {
...@@ -104,6 +108,9 @@ class Result extends \Magento\Framework\App\Action\Action ...@@ -104,6 +108,9 @@ class Result extends \Magento\Framework\App\Action\Action
} }
} }
/**
* @param $response
*/
protected function _cancel($response) protected function _cancel($response)
{ {
$session = $this->_session; $session = $this->_session;
...@@ -115,24 +122,32 @@ class Result extends \Magento\Framework\App\Action\Action ...@@ -115,24 +122,32 @@ class Result extends \Magento\Framework\App\Action\Action
$this->_adyenHelper->cancelOrder($order); $this->_adyenHelper->cancelOrder($order);
if(isset($response['authResult']) && $response['authResult'] == \Adyen\Payment\Model\Notification::CANCELLED) { if (isset($response['authResult']) && $response['authResult'] == \Adyen\Payment\Model\Notification::CANCELLED) {
$this->messageManager->addError(__('You have cancelled the order. Please try again')); $this->messageManager->addError(__('You have cancelled the order. Please try again'));
} else { } else {
$this->messageManager->addError(__('Your payment failed, Please try again later')); $this->messageManager->addError(__('Your payment failed, Please try again later'));
} }
} }
/**
* @param $response
* @return bool
* @throws \Magento\Framework\Exception\LocalizedException
*/
protected function validateResponse($response) protected function validateResponse($response)
{ {
$result = true; $result = true;
$this->_adyenLogger->addAdyenResult('Processing ResultUrl'); $this->_adyenLogger->addAdyenResult('Processing ResultUrl');
$storeId = null;
if (empty($response)) { if (empty($response)) {
$this->_adyenLogger->addAdyenResult('Response is empty, please check your webserver that the result url accepts parameters'); $this->_adyenLogger->addAdyenResult(
throw new \Magento\Framework\Exception\LocalizedException(__('Response is empty, please check your webserver that the result url accepts parameters')); 'Response is empty, please check your webserver that the result url accepts parameters'
);
throw new \Magento\Framework\Exception\LocalizedException(
__('Response is empty, please check your webserver that the result url accepts parameters')
);
} }
// authenticate result url // authenticate result url
...@@ -143,7 +158,7 @@ class Result extends \Magento\Framework\App\Action\Action ...@@ -143,7 +158,7 @@ class Result extends \Magento\Framework\App\Action\Action
$incrementId = $response['merchantReference']; $incrementId = $response['merchantReference'];
if($incrementId) { if ($incrementId) {
$order = $this->_getOrder($incrementId); $order = $this->_getOrder($incrementId);
if ($order->getId()) { if ($order->getId()) {
...@@ -155,9 +170,6 @@ class Result extends \Magento\Framework\App\Action\Action ...@@ -155,9 +170,6 @@ class Result extends \Magento\Framework\App\Action\Action
return $response['handled_response']; return $response['handled_response'];
} }
// set StoreId for retrieving debug log setting
$storeId = $order->getStoreId();
// update the order // update the order
$result = $this->_validateUpdateOrder($order, $response); $result = $this->_validateUpdateOrder($order, $response);
...@@ -167,17 +179,22 @@ class Result extends \Magento\Framework\App\Action\Action ...@@ -167,17 +179,22 @@ class Result extends \Magento\Framework\App\Action\Action
]); ]);
} else { } else {
throw new \Magento\Framework\Exception\LocalizedException(__('Order does not exists with increment_id: %1', $incrementId)); throw new \Magento\Framework\Exception\LocalizedException(
__('Order does not exists with increment_id: %1', $incrementId)
);
} }
} else { } else {
throw new \Magento\Framework\Exception\LocalizedException(__('Empty merchantReference')); throw new \Magento\Framework\Exception\LocalizedException(
__('Empty merchantReference')
);
} }
return $result; return $result;
} }
/** /**
* @param $order * @param $order
* @param $params * @param $response
* @return bool
*/ */
protected function _validateUpdateOrder($order, $response) protected function _validateUpdateOrder($order, $response)
{ {
...@@ -190,7 +207,9 @@ class Result extends \Magento\Framework\App\Action\Action ...@@ -190,7 +207,9 @@ class Result extends \Magento\Framework\App\Action\Action
$pspReference = isset($response['pspReference']) ? trim($response['pspReference']) : ''; $pspReference = isset($response['pspReference']) ? trim($response['pspReference']) : '';
$type = 'Adyen Result URL response:'; $type = 'Adyen Result URL response:';
$comment = __('%1 <br /> authResult: %2 <br /> pspReference: %3 <br /> paymentMethod: %4', $type, $authResult, $pspReference, $paymentMethod); $comment = __('%1 <br /> authResult: %2 <br /> pspReference: %3 <br /> paymentMethod: %4',
$type, $authResult, $pspReference, $paymentMethod
);
$history = $this->_orderHistoryFactory->create() $history = $this->_orderHistoryFactory->create()
//->setStatus($status) //->setStatus($status)
...@@ -201,28 +220,26 @@ class Result extends \Magento\Framework\App\Action\Action ...@@ -201,28 +220,26 @@ class Result extends \Magento\Framework\App\Action\Action
$history->save(); $history->save();
// needed becuase then we need to save $order objects // needed because then we need to save $order objects
$order->setAdyenResulturlEventCode($authResult); $order->setAdyenResulturlEventCode($authResult);
switch ($authResult) { switch ($authResult) {
case Notification::AUTHORISED:
case \Adyen\Payment\Model\Notification::AUTHORISED: case Notification::PENDING:
case \Adyen\Payment\Model\Notification::PENDING:
// do nothing wait for the notification // do nothing wait for the notification
$result = true; $result = true;
$this->_adyenLogger->addAdyenResult('Do nothing wait for the notification'); $this->_adyenLogger->addAdyenResult('Do nothing wait for the notification');
break; break;
case \Adyen\Payment\Model\Notification::CANCELLED: case Notification::CANCELLED:
$this->_adyenLogger->addAdyenResult('Cancel or Hold the order'); $this->_adyenLogger->addAdyenResult('Cancel or Hold the order');
$result = false; $result = false;
break; break;
case \Adyen\Payment\Model\Notification::REFUSED: case Notification::REFUSED:
// if refused there will be a AUTHORIZATION : FALSE notification send only exception is idea // if refused there will be a AUTHORIZATION : FALSE notification send only exception is idea
$this->_adyenLogger->addAdyenResult('Cancel or Hold the order'); $this->_adyenLogger->addAdyenResult('Cancel or Hold the order');
$result = false; $result = false;
break; break;
case \Adyen\Payment\Model\Notification::ERROR: case Notification::ERROR:
//attempt to hold/cancel //attempt to hold/cancel
$this->_adyenLogger->addAdyenResult('Cancel or Hold the order'); $this->_adyenLogger->addAdyenResult('Cancel or Hold the order');
$result = false; $result = false;
...@@ -235,12 +252,12 @@ class Result extends \Magento\Framework\App\Action\Action ...@@ -235,12 +252,12 @@ class Result extends \Magento\Framework\App\Action\Action
return $result; return $result;
} }
/** /**
* @desc Authenticate using sha1 Merchant signature * Authenticate using sha1 Merchant signature
* @see success Action during checkout *
* @param Varien_Object $response * @param $response
* @return bool
*/ */
protected function _authenticate($response) { protected function _authenticate($response) {
...@@ -254,10 +271,10 @@ class Result extends \Magento\Framework\App\Action\Action ...@@ -254,10 +271,10 @@ class Result extends \Magento\Framework\App\Action\Action
ksort($response, SORT_STRING); ksort($response, SORT_STRING);
// Generate the signing data string // Generate the signing data string
$signData = implode(":",array_map(array($this, 'escapeString'),array_merge(array_keys($response), array_values($response)))); $signData = implode(":", array_map([$this, 'escapeString'],
array_merge(array_keys($response), array_values($response))));
$merchantSig = base64_encode(hash_hmac('sha256',$signData,pack("H*" , $hmacKey),true));
$merchantSig = base64_encode(hash_hmac('sha256', $signData, pack("H*", $hmacKey), true));
if (strcmp($merchantSig, $merchantSigNotification) === 0) { if (strcmp($merchantSig, $merchantSigNotification) === 0) {
return true; return true;
...@@ -265,16 +282,23 @@ class Result extends \Magento\Framework\App\Action\Action ...@@ -265,16 +282,23 @@ class Result extends \Magento\Framework\App\Action\Action
return false; return false;
} }
/* /**
* @desc The character escape function is called from the array_map function in _signRequestParams * The character escape function is called from the array_map function in _signRequestParams
* $param $val *
* return string * @param $val
*/ * @return mixed
*/
protected function escapeString($val) protected function escapeString($val)
{ {
return str_replace(':','\\:',str_replace('\\','\\\\',$val)); return str_replace(':','\\:',str_replace('\\','\\\\',$val));
} }
/**
* Get order based on increment_id
*
* @param $incrementId
* @return \Magento\Sales\Model\Order
*/
protected function _getOrder($incrementId) protected function _getOrder($incrementId)
{ {
if (!$this->_order) { if (!$this->_order) {
...@@ -282,5 +306,4 @@ class Result extends \Magento\Framework\App\Action\Action ...@@ -282,5 +306,4 @@ class Result extends \Magento\Framework\App\Action\Action
} }
return $this->_order; return $this->_order;
} }
} }
\ No newline at end of file
...@@ -57,6 +57,8 @@ class ResultPos extends \Magento\Framework\App\Action\Action ...@@ -57,6 +57,8 @@ class ResultPos extends \Magento\Framework\App\Action\Action
protected $_adyenLogger; protected $_adyenLogger;
/** /**
* ResultPos constructor.
*
* @param \Magento\Framework\App\Action\Context $context * @param \Magento\Framework\App\Action\Context $context
* @param \Adyen\Payment\Helper\Data $adyenHelper * @param \Adyen\Payment\Helper\Data $adyenHelper
* @param \Magento\Sales\Model\OrderFactory $orderFactory * @param \Magento\Sales\Model\OrderFactory $orderFactory
...@@ -80,6 +82,9 @@ class ResultPos extends \Magento\Framework\App\Action\Action ...@@ -80,6 +82,9 @@ class ResultPos extends \Magento\Framework\App\Action\Action
parent::__construct($context); parent::__construct($context);
} }
/**
* Return result
*/
public function execute() public function execute()
{ {
$response = $this->getRequest()->getParams(); $response = $this->getRequest()->getParams();
...@@ -97,23 +102,27 @@ class ResultPos extends \Magento\Framework\App\Action\Action ...@@ -97,23 +102,27 @@ class ResultPos extends \Magento\Framework\App\Action\Action
} }
} }
/**
* @param $response
* @return bool
*/
private function _validateResponse($response) private function _validateResponse($response)
{ {
$result = false; $result = false;
if($response != null && $response['result'] != "" && $this->_validateChecksum($response)) { if ($response != null && $response['result'] != "" && $this->_validateChecksum($response)) {
$incrementId = $response['merchantReference']; $incrementId = $response['merchantReference'];
$responseResult = $response['result']; $responseResult = $response['result'];
if($incrementId) { if ($incrementId) {
$order = $this->_getOrder($incrementId); $order = $this->_getOrder($incrementId);
if ($order->getId()) { if ($order->getId()) {
$comment = __('%1 <br /> Result: %2 <br /> paymentMethod: %3', 'Adyen App Result URL Notification:', $responseResult, 'POS'); $comment = __('%1 <br /> Result: %2 <br /> paymentMethod: %3',
'Adyen App Result URL Notification:', $responseResult, 'POS');
if($responseResult == 'APPROVED') { if ($responseResult == 'APPROVED') {
$this->_adyenLogger->addAdyenResult('Result is approved'); $this->_adyenLogger->addAdyenResult('Result is approved');
...@@ -163,6 +172,12 @@ class ResultPos extends \Magento\Framework\App\Action\Action ...@@ -163,6 +172,12 @@ class ResultPos extends \Magento\Framework\App\Action\Action
return $result; return $result;
} }
/**
* Validate checksum from result parameters
*
* @param $response
* @return bool
*/
protected function _validateChecksum($response) protected function _validateChecksum($response)
{ {
$checksum = $response['cs']; $checksum = $response['cs'];
...@@ -171,51 +186,46 @@ class ResultPos extends \Magento\Framework\App\Action\Action ...@@ -171,51 +186,46 @@ class ResultPos extends \Magento\Framework\App\Action\Action
$currency = $response['originalCustomCurrency']; $currency = $response['originalCustomCurrency'];
$sessionId = $response['sessionId']; $sessionId = $response['sessionId'];
// for android sessionis is with low i // for android sessionis is with low i
if($sessionId == "") { if ($sessionId == "") {
$sessionId = $response['sessionid']; $sessionId = $response['sessionid'];
} }
// calculate amount checksum // calculate amount checksum
$amount_checksum = 0; $amountChecksum = 0;
$amountLength = strlen($amount); $amountLength = strlen($amount);
for($i=0;$i<$amountLength;$i++) for ($i=0; $i<$amountLength; $i++) {
{
// ASCII value use ord // ASCII value use ord
$checksumCalc = ord($amount[$i]) - 48; $checksumCalc = ord($amount[$i]) - 48;
$amount_checksum += $checksumCalc; $amountChecksum += $checksumCalc;
} }
$currency_checksum = 0; $currencyChecksum = 0;
$currencyLength = strlen($currency); $currencyLength = strlen($currency);
for($i=0;$i<$currencyLength;$i++) for ($i=0; $i<$currencyLength; $i++) {
{
$checksumCalc = ord($currency[$i]) - 64; $checksumCalc = ord($currency[$i]) - 64;
$currency_checksum += $checksumCalc; $currencyChecksum += $checksumCalc;
} }
$result_checksum = 0; $resultChecksum = 0;
$resultLength = strlen($result); $resultLength = strlen($result);
for($i=0;$i<$resultLength;$i++) for ($i=0; $i<$resultLength; $i++) {
{
$checksumCalc = ord($result[$i]) - 64; $checksumCalc = ord($result[$i]) - 64;
$result_checksum += $checksumCalc; $resultChecksum += $checksumCalc;
} }
$sessionId_checksum = 0; $sessionIdChecksum = 0;
$sessionIdLength = strlen($sessionId); $sessionIdLength = strlen($sessionId);
for($i=0;$i<$sessionIdLength;$i++) for ($i=0; $i<$sessionIdLength; $i++) {
{
$checksumCalc = $this->_getAscii2Int($sessionId[$i]); $checksumCalc = $this->_getAscii2Int($sessionId[$i]);
$sessionId_checksum += $checksumCalc; $sessionIdChecksum += $checksumCalc;
} }
$total_result_checksum = (($amount_checksum + $currency_checksum + $result_checksum) * $sessionId_checksum) % 100; $totalResultChecksum = (($amountChecksum + $currencyChecksum + $resultChecksum) * $sessionIdChecksum) % 100;
// check if request is valid // check if request is valid
if($total_result_checksum == $checksum) { if ($totalResultChecksum == $checksum) {
$this->_adyenLogger->addAdyenResult('Checksum is valid'); $this->_adyenLogger->addAdyenResult('Checksum is valid');
return true; return true;
} }
...@@ -223,9 +233,13 @@ class ResultPos extends \Magento\Framework\App\Action\Action ...@@ -223,9 +233,13 @@ class ResultPos extends \Magento\Framework\App\Action\Action
return false; return false;
} }
/**
* @param $ascii
* @return int
*/
protected function _getAscii2Int($ascii) protected function _getAscii2Int($ascii)
{ {
if (is_numeric($ascii)){ if (is_numeric($ascii)) {
$int = ord($ascii) - 48; $int = ord($ascii) - 48;
} else { } else {
$int = ord($ascii) - 64; $int = ord($ascii) - 64;
...@@ -233,6 +247,10 @@ class ResultPos extends \Magento\Framework\App\Action\Action ...@@ -233,6 +247,10 @@ class ResultPos extends \Magento\Framework\App\Action\Action
return $int; return $int;
} }
/**
* @param $incrementId
* @return \Magento\Sales\Model\Order
*/
protected function _getOrder($incrementId) protected function _getOrder($incrementId)
{ {
if (!$this->_order) { if (!$this->_order) {
...@@ -241,6 +259,9 @@ class ResultPos extends \Magento\Framework\App\Action\Action ...@@ -241,6 +259,9 @@ class ResultPos extends \Magento\Framework\App\Action\Action
return $this->_order; return $this->_order;
} }
/**
* @param $response
*/
protected function _cancel($response) protected function _cancel($response)
{ {
$session = $this->_session; $session = $this->_session;
...@@ -250,15 +271,15 @@ class ResultPos extends \Magento\Framework\App\Action\Action ...@@ -250,15 +271,15 @@ class ResultPos extends \Magento\Framework\App\Action\Action
$order = $this->_order; $order = $this->_order;
if($order) { if ($order) {
$this->_adyenHelper->cancelOrder($order); $this->_adyenHelper->cancelOrder($order);
if(isset($response['authResult']) && $response['authResult'] == \Adyen\Payment\Model\Notification::CANCELLED) { if (isset($response['authResult']) &&
$response['authResult'] == \Adyen\Payment\Model\Notification::CANCELLED) {
$this->messageManager->addError(__('You have cancelled the order. Please try again')); $this->messageManager->addError(__('You have cancelled the order. Please try again'));
} else { } else {
$this->messageManager->addError(__('Your payment failed, Please try again later')); $this->messageManager->addError(__('Your payment failed, Please try again later'));
} }
} }
} }
} }
\ No newline at end of file
...@@ -46,6 +46,8 @@ class Validate3d extends \Magento\Framework\App\Action\Action ...@@ -46,6 +46,8 @@ class Validate3d extends \Magento\Framework\App\Action\Action
protected $_adyenHelper; protected $_adyenHelper;
/** /**
* Validate3d constructor.
*
* @param \Magento\Framework\App\Action\Context $context * @param \Magento\Framework\App\Action\Context $context
* @param \Adyen\Payment\Logger\AdyenLogger $adyenLogger * @param \Adyen\Payment\Logger\AdyenLogger $adyenLogger
* @param \Adyen\Payment\Helper\Data $adyenHelper * @param \Adyen\Payment\Helper\Data $adyenHelper
...@@ -60,6 +62,9 @@ class Validate3d extends \Magento\Framework\App\Action\Action ...@@ -60,6 +62,9 @@ class Validate3d extends \Magento\Framework\App\Action\Action
$this->_adyenHelper = $adyenHelper; $this->_adyenHelper = $adyenHelper;
} }
/**
* Validate 3D secure payment
*/
public function execute() public function execute()
{ {
$active = null; $active = null;
...@@ -67,19 +72,18 @@ class Validate3d extends \Magento\Framework\App\Action\Action ...@@ -67,19 +72,18 @@ class Validate3d extends \Magento\Framework\App\Action\Action
// check if 3d is active // check if 3d is active
$order = $this->_getOrder(); $order = $this->_getOrder();
if($order->getPayment()) { if ($order->getPayment()) {
$active = $order->getPayment()->getAdditionalInformation('3dActive'); $active = $order->getPayment()->getAdditionalInformation('3dActive');
} }
// check if 3D secure is active. If not just go to success page // check if 3D secure is active. If not just go to success page
if($active) { if ($active) {
$this->_adyenLogger->addAdyenResult("3D secure is active"); $this->_adyenLogger->addAdyenResult("3D secure is active");
// check if it is already processed // check if it is already processed
if ($this->getRequest()->isPost()) { if ($this->getRequest()->isPost()) {
$this->_adyenLogger->addAdyenResult("Process 3D secure payment"); $this->_adyenLogger->addAdyenResult("Process 3D secure payment");
$requestMD = $this->getRequest()->getPost('MD'); $requestMD = $this->getRequest()->getPost('MD');
$requestPaRes = $this->getRequest()->getPost('PaRes'); $requestPaRes = $this->getRequest()->getPost('PaRes');
$md = $order->getPayment()->getAdditionalInformation('md'); $md = $order->getPayment()->getAdditionalInformation('md');
...@@ -98,15 +102,16 @@ class Validate3d extends \Magento\Framework\App\Action\Action ...@@ -98,15 +102,16 @@ class Validate3d extends \Magento\Framework\App\Action\Action
if ($result == 'Authorised') { if ($result == 'Authorised') {
$order->addStatusHistoryComment(__('3D-secure validation was successful'))->save(); $order->addStatusHistoryComment(__('3D-secure validation was successful'))->save();
$this->_redirect('checkout/onepage/success'); $this->_redirect('checkout/onepage/success');
} } else {
else {
$order->addStatusHistoryComment(__('3D-secure validation was unsuccessful.'))->save(); $order->addStatusHistoryComment(__('3D-secure validation was unsuccessful.'))->save();
$this->_adyenHelper->cancelOrder($order); $this->_adyenHelper->cancelOrder($order);
} }
} }
} else { } else {
$this->_adyenLogger->addAdyenResult("Customer was redirected to bank for 3D-secure validation."); $this->_adyenLogger->addAdyenResult("Customer was redirected to bank for 3D-secure validation.");
$order->addStatusHistoryComment(__('Customer was redirected to bank for 3D-secure validation.'))->save(); $order->addStatusHistoryComment(
__('Customer was redirected to bank for 3D-secure validation.')
)->save();
$this->_view->loadLayout(); $this->_view->loadLayout();
$this->_view->getLayout()->initMessages(); $this->_view->getLayout()->initMessages();
......
...@@ -36,39 +36,34 @@ class Data extends AbstractHelper ...@@ -36,39 +36,34 @@ class Data extends AbstractHelper
*/ */
protected $_encryptor; protected $_encryptor;
/**
* @var \Magento\Payment\Model\Config
*/
protected $_config;
/** /**
* @var \Magento\Framework\Config\DataInterface * @var \Magento\Framework\Config\DataInterface
*/ */
protected $_dataStorage; protected $_dataStorage;
/** /**
* @param Context $context * Data constructor.
*
* @param \Magento\Framework\App\Helper\Context $context
* @param \Magento\Framework\Encryption\EncryptorInterface $encryptor
* @param \Magento\Framework\Config\DataInterface $dataStorage
*/ */
public function __construct( public function __construct(
\Magento\Framework\App\Helper\Context $context, \Magento\Framework\App\Helper\Context $context,
\Magento\Framework\Encryption\EncryptorInterface $encryptor, \Magento\Framework\Encryption\EncryptorInterface $encryptor,
\Magento\Payment\Model\Config $config,
\Magento\Framework\Config\DataInterface $dataStorage \Magento\Framework\Config\DataInterface $dataStorage
) ) {
{
parent::__construct($context); parent::__construct($context);
$this->_encryptor = $encryptor; $this->_encryptor = $encryptor;
$this->_config = $config;
$this->_dataStorage = $dataStorage; $this->_dataStorage = $dataStorage;
} }
/** /**
* @desc return recurring types for configuration setting * @desc return recurring types for configuration setting
* @return array * @return array
*/ */
public function getRecurringTypes() { public function getRecurringTypes()
{
return [ return [
\Adyen\Payment\Model\RecurringType::ONECLICK => 'ONECLICK', \Adyen\Payment\Model\RecurringType::ONECLICK => 'ONECLICK',
\Adyen\Payment\Model\RecurringType::ONECLICK_RECURRING => 'ONECLICK,RECURRING', \Adyen\Payment\Model\RecurringType::ONECLICK_RECURRING => 'ONECLICK,RECURRING',
...@@ -80,7 +75,8 @@ class Data extends AbstractHelper ...@@ -80,7 +75,8 @@ class Data extends AbstractHelper
* @desc return recurring types for configuration setting * @desc return recurring types for configuration setting
* @return array * @return array
*/ */
public function getModes() { public function getModes()
{
return [ return [
'1' => 'Test Mode', '1' => 'Test Mode',
'0' => 'Production Mode' '0' => 'Production Mode'
...@@ -157,6 +153,11 @@ class Data extends AbstractHelper ...@@ -157,6 +153,11 @@ class Data extends AbstractHelper
return number_format($amount, $format, '', ''); return number_format($amount, $format, '', '');
} }
/**
* @param $amount
* @param $currency
* @return float
*/
public function originalAmount($amount, $currency) public function originalAmount($amount, $currency)
{ {
// check the format // check the format
...@@ -206,14 +207,15 @@ class Data extends AbstractHelper ...@@ -206,14 +207,15 @@ class Data extends AbstractHelper
*/ */
public function getStreet($address) public function getStreet($address)
{ {
if (empty($address)) return false; if (empty($address)) {
return false;
}
$street = self::formatStreet($address->getStreet()); $street = self::formatStreet($address->getStreet());
$streetName = $street['0']; $streetName = $street['0'];
unset($street['0']); unset($street['0']);
// $streetNr = implode('',$street); $streetNr = implode(' ', $street);
$streetNr = implode(' ',$street); return (['name' => $streetName, 'house_number' => $streetNr]);
return (array('name' => $streetName, 'house_number' => $streetNr));
} }
/** /**
...@@ -228,11 +230,11 @@ class Data extends AbstractHelper ...@@ -228,11 +230,11 @@ class Data extends AbstractHelper
return $street; return $street;
} }
preg_match('/((\s\d{0,10})|(\s\d{0,10}\w{1,3}))$/i', $street['0'], $houseNumber, PREG_OFFSET_CAPTURE); preg_match('/((\s\d{0,10})|(\s\d{0,10}\w{1,3}))$/i', $street['0'], $houseNumber, PREG_OFFSET_CAPTURE);
if(!empty($houseNumber['0'])) { if (!empty($houseNumber['0'])) {
$_houseNumber = trim($houseNumber['0']['0']); $_houseNumber = trim($houseNumber['0']['0']);
$position = $houseNumber['0']['1']; $position = $houseNumber['0']['1'];
$streeName = trim(substr($street['0'], 0, $position)); $streetName = trim(substr($street['0'], 0, $position));
$street = array($streeName,$_houseNumber); $street = [$streetName, $_houseNumber];
} }
return $street; return $street;
} }
...@@ -389,7 +391,7 @@ class Data extends AbstractHelper ...@@ -389,7 +391,7 @@ class Data extends AbstractHelper
*/ */
public function getWsUsername() public function getWsUsername()
{ {
if($this->isDemoMode()) { if ($this->isDemoMode()) {
$wsUsername = trim($this->getAdyenAbstractConfigData('ws_username_test')); $wsUsername = trim($this->getAdyenAbstractConfigData('ws_username_test'));
} else { } else {
$wsUsername = trim($this->getAdyenAbstractConfigData('ws_username_live')); $wsUsername = trim($this->getAdyenAbstractConfigData('ws_username_live'));
...@@ -403,7 +405,7 @@ class Data extends AbstractHelper ...@@ -403,7 +405,7 @@ class Data extends AbstractHelper
*/ */
public function getWsPassword() public function getWsPassword()
{ {
if($this->isDemoMode()) { if ($this->isDemoMode()) {
$wsPassword = $this->_encryptor->decrypt(trim($this->getAdyenAbstractConfigData('ws_password_test'))); $wsPassword = $this->_encryptor->decrypt(trim($this->getAdyenAbstractConfigData('ws_password_test')));
} else { } else {
$wsPassword = $this->_encryptor->decrypt(trim($this->getAdyenAbstractConfigData('ws_password_live'))); $wsPassword = $this->_encryptor->decrypt(trim($this->getAdyenAbstractConfigData('ws_password_live')));
...@@ -417,7 +419,7 @@ class Data extends AbstractHelper ...@@ -417,7 +419,7 @@ class Data extends AbstractHelper
*/ */
public function getWsUrl() public function getWsUrl()
{ {
if($this->isDemoMode()) { if ($this->isDemoMode()) {
$url = $this->getAdyenAbstractConfigData('ws_url_test'); $url = $this->getAdyenAbstractConfigData('ws_url_test');
} else { } else {
$url = $this->getAdyenAbstractConfigData('ws_url_live'); $url = $this->getAdyenAbstractConfigData('ws_url_live');
...@@ -441,7 +443,7 @@ class Data extends AbstractHelper ...@@ -441,7 +443,7 @@ class Data extends AbstractHelper
} }
break; break;
default: default:
if($order->canCancel()) { if ($order->canCancel()) {
$order->cancel()->save(); $order->cancel()->save();
} }
break; break;
...@@ -456,20 +458,22 @@ class Data extends AbstractHelper ...@@ -456,20 +458,22 @@ class Data extends AbstractHelper
*/ */
public function getMagentoCreditCartType($ccType) public function getMagentoCreditCartType($ccType)
{ {
$ccTypesMapper = $this->getCcTypesAltData(); $ccTypesMapper = $this->getCcTypesAltData();
if(isset($ccTypesMapper[$ccType])) { if (isset($ccTypesMapper[$ccType])) {
$ccType = $ccTypesMapper[$ccType]['code']; $ccType = $ccTypesMapper[$ccType]['code'];
} }
return $ccType; return $ccType;
} }
/**
* @return array
*/
public function getCcTypesAltData() public function getCcTypesAltData()
{ {
$adyenCcTypes = $this->getAdyenCcTypes(); $adyenCcTypes = $this->getAdyenCcTypes();
$types = array(); $types = [];
foreach ($adyenCcTypes as $key => $data) { foreach ($adyenCcTypes as $key => $data) {
$types[$data['code_alt']] = $data; $types[$data['code_alt']] = $data;
$types[$data['code_alt']]['code'] = $key; $types[$data['code_alt']]['code'] = $key;
...@@ -477,6 +481,9 @@ class Data extends AbstractHelper ...@@ -477,6 +481,9 @@ class Data extends AbstractHelper
return $types; return $types;
} }
/**
* @return mixed
*/
public function getAdyenCcTypes() public function getAdyenCcTypes()
{ {
return $this->_dataStorage->get('adyen_credit_cards'); return $this->_dataStorage->get('adyen_credit_cards');
...@@ -499,6 +506,5 @@ class Data extends AbstractHelper ...@@ -499,6 +506,5 @@ class Data extends AbstractHelper
} else { } else {
return $this->scopeConfig->isSetFlag($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId); return $this->scopeConfig->isSetFlag($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId);
} }
} }
} }
\ No newline at end of file
...@@ -42,7 +42,7 @@ class AdyenLogger extends Logger ...@@ -42,7 +42,7 @@ class AdyenLogger extends Logger
* *
* @var array $levels Logging levels * @var array $levels Logging levels
*/ */
protected static $levels = array( protected static $levels = [
100 => 'DEBUG', 100 => 'DEBUG',
101 => 'ADYEN_DEBUG', 101 => 'ADYEN_DEBUG',
200 => 'INFO', 200 => 'INFO',
...@@ -55,7 +55,7 @@ class AdyenLogger extends Logger ...@@ -55,7 +55,7 @@ class AdyenLogger extends Logger
500 => 'CRITICAL', 500 => 'CRITICAL',
550 => 'ALERT', 550 => 'ALERT',
600 => 'EMERGENCY', 600 => 'EMERGENCY',
); ];
/** /**
* Adds a log record at the INFO level. * Adds a log record at the INFO level.
...@@ -86,7 +86,6 @@ class AdyenLogger extends Logger ...@@ -86,7 +86,6 @@ class AdyenLogger extends Logger
return $this->addRecord(static::ADYEN_NOTIFICATION_CRONJOB, $message, $context); return $this->addRecord(static::ADYEN_NOTIFICATION_CRONJOB, $message, $context);
} }
/** /**
* Adds a log record. * Adds a log record.
* *
......
...@@ -23,60 +23,10 @@ ...@@ -23,60 +23,10 @@
namespace Adyen\Payment\Logger\Handler; namespace Adyen\Payment\Logger\Handler;
use Magento\Framework\Filesystem\DriverInterface; use Magento\Framework\Logger\Handler\Base;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
class AdyenBase extends StreamHandler class AdyenBase extends Base
{ {
/**
* @var string
*/
protected $fileName;
/**
* @var int
*/
protected $loggerType = Logger::DEBUG;
/**
* @var DriverInterface
*/
protected $filesystem;
/**
* @param DriverInterface $filesystem
* @param string $filePath
*/
public function __construct(
DriverInterface $filesystem,
$filePath = null
) {
$this->filesystem = $filesystem;
parent::__construct(
$filePath ? $filePath . $this->fileName : BP . $this->fileName,
$this->loggerType
);
$this->setFormatter(new LineFormatter(null, null, true));
}
/**
* @{inheritDoc}
*
* @param $record array
* @return void
*/
public function write(array $record)
{
$logDir = $this->filesystem->getParentDirectory($this->url);
if (!$this->filesystem->isDirectory($logDir)) {
$this->filesystem->createDirectory($logDir, 0777);
}
parent::write($record);
}
/** /**
* overwrite core it needs to be the exact level otherwise use different handler * overwrite core it needs to be the exact level otherwise use different handler
* *
......
...@@ -29,32 +29,22 @@ use Magento\Payment\Helper\Data as PaymentHelper; ...@@ -29,32 +29,22 @@ use Magento\Payment\Helper\Data as PaymentHelper;
class AdyenCcConfigProvider extends CcGenericConfigProvider class AdyenCcConfigProvider extends CcGenericConfigProvider
{ {
/**
* @var Config
*/
protected $config;
/** /**
* @var string[] * @var string[]
*/ */
protected $methodCodes = [ protected $_methodCodes = [
\Adyen\Payment\Model\Method\Cc::METHOD_CODE \Adyen\Payment\Model\Method\Cc::METHOD_CODE
]; ];
/**
* @var \Magento\Payment\Model\Method\AbstractMethod[]
*/
protected $methods = [];
/** /**
* @var PaymentHelper * @var PaymentHelper
*/ */
protected $paymentHelper; protected $_paymentHelper;
/** /**
* @var \Adyen\Payment\Helper\Data * @var \Adyen\Payment\Helper\Data
*/ */
protected $adyenHelper; protected $_adyenHelper;
/** /**
* @var AdyenGenericConfig * @var AdyenGenericConfig
...@@ -62,9 +52,12 @@ class AdyenCcConfigProvider extends CcGenericConfigProvider ...@@ -62,9 +52,12 @@ class AdyenCcConfigProvider extends CcGenericConfigProvider
protected $_genericConfig; protected $_genericConfig;
/** /**
* AdyenCcConfigProvider constructor.
*
* @param \Magento\Payment\Model\CcConfig $ccConfig * @param \Magento\Payment\Model\CcConfig $ccConfig
* @param PaymentHelper $paymentHelper * @param PaymentHelper $paymentHelper
* @param \Adyen\Payment\Helper\Data $adyenHelper * @param \Adyen\Payment\Helper\Data $adyenHelper
* @param AdyenGenericConfig $genericConfig
*/ */
public function __construct( public function __construct(
\Magento\Payment\Model\CcConfig $ccConfig, \Magento\Payment\Model\CcConfig $ccConfig,
...@@ -72,32 +65,35 @@ class AdyenCcConfigProvider extends CcGenericConfigProvider ...@@ -72,32 +65,35 @@ class AdyenCcConfigProvider extends CcGenericConfigProvider
\Adyen\Payment\Helper\Data $adyenHelper, \Adyen\Payment\Helper\Data $adyenHelper,
\Adyen\Payment\Model\AdyenGenericConfig $genericConfig \Adyen\Payment\Model\AdyenGenericConfig $genericConfig
) { ) {
parent::__construct($ccConfig, $paymentHelper, $this->methodCodes); parent::__construct($ccConfig, $paymentHelper, $this->_methodCodes);
$this->adyenHelper = $adyenHelper; $this->_paymentHelper = $paymentHelper;
$this->_adyenHelper = $adyenHelper;
$this->_genericConfig = $genericConfig; $this->_genericConfig = $genericConfig;
} }
/**
* @return array
*/
public function getConfig() public function getConfig()
{ {
$config = parent::getConfig(); $config = parent::getConfig();
$demoMode = $this->adyenHelper->getAdyenAbstractConfigDataFlag('demo_mode'); $demoMode = $this->_adyenHelper->getAdyenAbstractConfigDataFlag('demo_mode');
if($demoMode) { if ($demoMode) {
$cseKey = $this->adyenHelper->getAdyenCcConfigData('cse_publickey_test'); $cseKey = $this->_adyenHelper->getAdyenCcConfigData('cse_publickey_test');
} else { } else {
$cseKey = $this->adyenHelper->getAdyenCcConfigData('cse_publickey_live'); $cseKey = $this->_adyenHelper->getAdyenCcConfigData('cse_publickey_live');
} }
$cseEnabled = $this->adyenHelper->getAdyenCcConfigDataFlag('cse_enabled'); $cseEnabled = $this->_adyenHelper->getAdyenCcConfigDataFlag('cse_enabled');
$recurringType = $this->adyenHelper->getAdyenAbstractConfigData('recurring_type'); $recurringType = $this->_adyenHelper->getAdyenAbstractConfigData('recurring_type');
$canCreateBillingAgreement = false; $canCreateBillingAgreement = false;
if($recurringType == "ONECLICK" || $recurringType == "ONECLICK,RECURRING") { if ($recurringType == "ONECLICK" || $recurringType == "ONECLICK,RECURRING") {
$canCreateBillingAgreement = true; $canCreateBillingAgreement = true;
} }
$config['payment'] ['adyenCc']['cseKey'] = $cseKey; $config['payment'] ['adyenCc']['cseKey'] = $cseKey;
$config['payment'] ['adyenCc']['cseEnabled'] = $cseEnabled; $config['payment'] ['adyenCc']['cseEnabled'] = $cseEnabled;
$config['payment'] ['adyenCc']['cseEnabled'] = $cseEnabled; $config['payment'] ['adyenCc']['cseEnabled'] = $cseEnabled;
...@@ -105,20 +101,21 @@ class AdyenCcConfigProvider extends CcGenericConfigProvider ...@@ -105,20 +101,21 @@ class AdyenCcConfigProvider extends CcGenericConfigProvider
$config['payment']['adyenCc']['canCreateBillingAgreement'] = $canCreateBillingAgreement; $config['payment']['adyenCc']['canCreateBillingAgreement'] = $canCreateBillingAgreement;
// show logos turned on by default // show logos turned on by default
if($this->_genericConfig->showLogos()) { if ($this->_genericConfig->showLogos()) {
$config['payment']['adyenCc']['creditCardPaymentMethodIcon'] = $this->_getCreditCardPaymentMethodIcon(); $config['payment']['adyenCc']['creditCardPaymentMethodIcon'] = $this->_getCreditCardPaymentMethodIcon();
} }
return $config; return $config;
} }
/**
* @return array|null
*/
protected function _getCreditCardPaymentMethodIcon() protected function _getCreditCardPaymentMethodIcon()
{ {
$asset = $this->_genericConfig->createAsset('Adyen_Payment::images/logos/img_trans.gif'); $asset = $this->_genericConfig->createAsset('Adyen_Payment::images/logos/img_trans.gif');
$placeholder = $this->_genericConfig->findRelativeSourceFilePath($asset); $placeholder = $this->_genericConfig->findRelativeSourceFilePath($asset);
$icon = null; $icon = null;
if ($placeholder) { if ($placeholder) {
list($width, $height) = getimagesize($asset->getSourceFile()); list($width, $height) = getimagesize($asset->getSourceFile());
$icon = [ $icon = [
...@@ -127,7 +124,6 @@ class AdyenCcConfigProvider extends CcGenericConfigProvider ...@@ -127,7 +124,6 @@ class AdyenCcConfigProvider extends CcGenericConfigProvider
'height' => $height 'height' => $height
]; ];
} }
return $icon; return $icon;
} }
} }
\ No newline at end of file
...@@ -34,17 +34,17 @@ class AdyenGenericConfig ...@@ -34,17 +34,17 @@ class AdyenGenericConfig
/** /**
* @var Repository * @var Repository
*/ */
protected $assetRepo; protected $_assetRepo;
/** /**
* @var RequestInterface * @var RequestInterface
*/ */
protected $request; protected $_request;
/** /**
* @var \Magento\Framework\View\Asset\Source * @var \Magento\Framework\View\Asset\Source
*/ */
protected $assetSource; protected $_assetSource;
/** /**
* @var \Adyen\Payment\Helper\Data * @var \Adyen\Payment\Helper\Data
...@@ -52,11 +52,12 @@ class AdyenGenericConfig ...@@ -52,11 +52,12 @@ class AdyenGenericConfig
protected $_adyenHelper; protected $_adyenHelper;
/** /**
* @param PaymentConfig $paymentConfig * AdyenGenericConfig constructor.
*
* @param Repository $assetRepo * @param Repository $assetRepo
* @param RequestInterface $request * @param RequestInterface $request
* @param UrlInterface $urlBuilder * @param Source $assetSource
* @param LoggerInterface $logger * @param \Adyen\Payment\Helper\Data $adyenHelper
*/ */
public function __construct( public function __construct(
Repository $assetRepo, Repository $assetRepo,
...@@ -64,9 +65,9 @@ class AdyenGenericConfig ...@@ -64,9 +65,9 @@ class AdyenGenericConfig
Source $assetSource, Source $assetSource,
\Adyen\Payment\Helper\Data $adyenHelper \Adyen\Payment\Helper\Data $adyenHelper
) { ) {
$this->assetRepo = $assetRepo; $this->_assetRepo = $assetRepo;
$this->request = $request; $this->_request = $request;
$this->assetSource = $assetSource; $this->_assetSource = $assetSource;
$this->_adyenHelper = $adyenHelper; $this->_adyenHelper = $adyenHelper;
} }
...@@ -79,21 +80,28 @@ class AdyenGenericConfig ...@@ -79,21 +80,28 @@ class AdyenGenericConfig
*/ */
public function createAsset($fileId, array $params = []) public function createAsset($fileId, array $params = [])
{ {
$params = array_merge(['_secure' => $this->request->isSecure()], $params); $params = array_merge(['_secure' => $this->_request->isSecure()], $params);
return $this->assetRepo->createAsset($fileId, $params); return $this->_assetRepo->createAsset($fileId, $params);
} }
public function findRelativeSourceFilePath($asset) { /**
return $this->assetSource->findRelativeSourceFilePath($asset); * @param $asset
* @return bool|string
*/
public function findRelativeSourceFilePath($asset)
{
return $this->_assetSource->findRelativeSourceFilePath($asset);
} }
/**
* @return bool
*/
public function showLogos() public function showLogos()
{ {
$showLogos = $this->_adyenHelper->getAdyenAbstractConfigData('title_renderer'); $showLogos = $this->_adyenHelper->getAdyenAbstractConfigData('title_renderer');
if($showLogos == \Adyen\Payment\Model\Config\Source\RenderMode::MODE_TITLE_IMAGE) { if ($showLogos == \Adyen\Payment\Model\Config\Source\RenderMode::MODE_TITLE_IMAGE) {
return true; return true;
} }
return false; return false;
} }
} }
\ No newline at end of file
...@@ -27,69 +27,51 @@ use Magento\Payment\Helper\Data as PaymentHelper; ...@@ -27,69 +27,51 @@ use Magento\Payment\Helper\Data as PaymentHelper;
class AdyenGenericConfigProvider implements ConfigProviderInterface class AdyenGenericConfigProvider implements ConfigProviderInterface
{ {
/**
* @var RequestInterface /**
* @var \Magento\Payment\Model\Method\AbstractMethod[]
*/ */
protected $request; protected $_methods = [];
/** /**
* @var \Adyen\Payment\Helper\Data * @var PaymentHelper
*/ */
protected $_adyenHelper; protected $_paymentHelper;
/** /**
* @var \Magento\Payment\Model\Method\AbstractMethod[] * @var AdyenGenericConfig
*/ */
protected $methods = []; protected $_genericConfig;
/** /**
* @var string[] * @var string[]
*/ */
protected $methodCodes = [ protected $_methodCodes = [
\Adyen\Payment\Model\Method\Cc::METHOD_CODE, \Adyen\Payment\Model\Method\Cc::METHOD_CODE,
\Adyen\Payment\Model\Method\Hpp::METHOD_CODE, \Adyen\Payment\Model\Method\Hpp::METHOD_CODE,
\Adyen\Payment\Model\Method\Oneclick::METHOD_CODE, \Adyen\Payment\Model\Method\Oneclick::METHOD_CODE,
\Adyen\Payment\Model\Method\Pos::METHOD_CODE \Adyen\Payment\Model\Method\Pos::METHOD_CODE,
\Adyen\Payment\Model\Method\Sepa::METHOD_CODE
]; ];
/** /**
* @param \Magento\Framework\Model\Context $context * AdyenGenericConfigProvider constructor.
* @param \Magento\Checkout\Model\Session $session *
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
* @param PaymentHelper $paymentHelper * @param PaymentHelper $paymentHelper
* @param \Magento\Framework\Locale\ResolverInterface $localeResolver
* @param \Magento\Framework\App\Config\ScopeConfigInterface $config
* @param \Adyen\Payment\Helper\Data $adyenHelper
* @param \Adyen\Payment\Logger\AdyenLogger $adyenLogger
* @param AdyenGenericConfig $genericConfig * @param AdyenGenericConfig $genericConfig
*/ */
public function __construct( public function __construct(
\Magento\Framework\Model\Context $context,
\Magento\Checkout\Model\Session $session,
\Magento\Store\Model\StoreManagerInterface $storeManager,
PaymentHelper $paymentHelper, PaymentHelper $paymentHelper,
\Magento\Framework\Locale\ResolverInterface $localeResolver,
\Magento\Framework\App\Config\ScopeConfigInterface $config,
\Adyen\Payment\Helper\Data $adyenHelper,
\Adyen\Payment\Logger\AdyenLogger $adyenLogger,
\Adyen\Payment\Model\AdyenGenericConfig $genericConfig \Adyen\Payment\Model\AdyenGenericConfig $genericConfig
) { ) {
$this->_appState = $context->getAppState();
$this->_session = $session;
$this->_storeManager = $storeManager;
$this->_paymentHelper = $paymentHelper; $this->_paymentHelper = $paymentHelper;
$this->_localeResolver = $localeResolver;
$this->_config = $config;
$this->_adyenHelper = $adyenHelper;
$this->_adyenLogger = $adyenLogger;
$this->_genericConfig = $genericConfig; $this->_genericConfig = $genericConfig;
foreach ($this->methodCodes as $code) { foreach ($this->_methodCodes as $code) {
$this->methods[$code] = $this->_paymentHelper->getMethodInstance($code); $this->_methods[$code] = $this->_paymentHelper->getMethodInstance($code);
} }
} }
/** /**
* Define foreach payment methods the RedirectUrl * Define foreach payment methods the RedirectUrl
* *
...@@ -101,8 +83,8 @@ class AdyenGenericConfigProvider implements ConfigProviderInterface ...@@ -101,8 +83,8 @@ class AdyenGenericConfigProvider implements ConfigProviderInterface
'payment' => [] 'payment' => []
]; ];
foreach ($this->methodCodes as $code) { foreach ($this->_methodCodes as $code) {
if ($this->methods[$code]->isAvailable()) { if ($this->_methods[$code]->isAvailable()) {
$config['payment'][$code] = [ $config['payment'][$code] = [
'redirectUrl' => $this->getMethodRedirectUrl($code) 'redirectUrl' => $this->getMethodRedirectUrl($code)
...@@ -111,13 +93,11 @@ class AdyenGenericConfigProvider implements ConfigProviderInterface ...@@ -111,13 +93,11 @@ class AdyenGenericConfigProvider implements ConfigProviderInterface
} }
// show logos turned on by default // show logos turned on by default
if($this->_genericConfig->showLogos()) { if ($this->_genericConfig->showLogos()) {
$config['payment']['adyen']['showLogo'] = true; $config['payment']['adyen']['showLogo'] = true;
} else { } else {
$config['payment']['adyen']['showLogo'] = false; $config['payment']['adyen']['showLogo'] = false;
} }
return $config; return $config;
} }
...@@ -129,6 +109,6 @@ class AdyenGenericConfigProvider implements ConfigProviderInterface ...@@ -129,6 +109,6 @@ class AdyenGenericConfigProvider implements ConfigProviderInterface
*/ */
protected function getMethodRedirectUrl($code) protected function getMethodRedirectUrl($code)
{ {
return $this->methods[$code]->getCheckoutRedirectUrl(); return $this->_methods[$code]->getCheckoutRedirectUrl();
} }
} }
\ No newline at end of file
This diff is collapsed.
...@@ -37,7 +37,7 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider ...@@ -37,7 +37,7 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
/** /**
* @var string[] * @var string[]
*/ */
protected $methodCodes = [ protected $_methodCodes = [
\Adyen\Payment\Model\Method\Oneclick::METHOD_CODE \Adyen\Payment\Model\Method\Oneclick::METHOD_CODE
]; ];
...@@ -86,11 +86,18 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider ...@@ -86,11 +86,18 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
*/ */
protected $_genericConfig; protected $_genericConfig;
/** /**
* AdyenOneclickConfigProvider constructor.
*
* @param \Magento\Framework\Model\Context $context
* @param \Magento\Payment\Model\CcConfig $ccConfig * @param \Magento\Payment\Model\CcConfig $ccConfig
* @param PaymentHelper $paymentHelper * @param PaymentHelper $paymentHelper
* @param \Adyen\Payment\Helper\Data $adyenHelper * @param \Adyen\Payment\Helper\Data $adyenHelper
* @param Resource\Billing\Agreement\CollectionFactory $billingAgreementCollectionFactory
* @param \Magento\Customer\Model\Session $customerSession
* @param \Magento\Checkout\Model\Session $session
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
* @param AdyenGenericConfig $genericConfig
*/ */
public function __construct( public function __construct(
\Magento\Framework\Model\Context $context, \Magento\Framework\Model\Context $context,
...@@ -103,7 +110,7 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider ...@@ -103,7 +110,7 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
\Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Store\Model\StoreManagerInterface $storeManager,
\Adyen\Payment\Model\AdyenGenericConfig $genericConfig \Adyen\Payment\Model\AdyenGenericConfig $genericConfig
) { ) {
parent::__construct($ccConfig, $paymentHelper, $this->methodCodes); parent::__construct($ccConfig, $paymentHelper, $this->_methodCodes);
$this->_paymentHelper = $paymentHelper; $this->_paymentHelper = $paymentHelper;
$this->_adyenHelper = $adyenHelper; $this->_adyenHelper = $adyenHelper;
$this->_billingAgreementCollectionFactory = $billingAgreementCollectionFactory; $this->_billingAgreementCollectionFactory = $billingAgreementCollectionFactory;
...@@ -114,13 +121,16 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider ...@@ -114,13 +121,16 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
$this->_genericConfig = $genericConfig; $this->_genericConfig = $genericConfig;
} }
/**
* @return array
*/
public function getConfig() public function getConfig()
{ {
$config = parent::getConfig(); $config = parent::getConfig();
$demoMode = $this->_adyenHelper->getAdyenAbstractConfigDataFlag('demo_mode'); $demoMode = $this->_adyenHelper->getAdyenAbstractConfigDataFlag('demo_mode');
if($demoMode) { if ($demoMode) {
$cseKey = $this->_adyenHelper->getAdyenCcConfigData('cse_publickey_test'); $cseKey = $this->_adyenHelper->getAdyenCcConfigData('cse_publickey_test');
} else { } else {
$cseKey = $this->_adyenHelper->getAdyenCcConfigData('cse_publickey_live'); $cseKey = $this->_adyenHelper->getAdyenCcConfigData('cse_publickey_live');
...@@ -130,26 +140,24 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider ...@@ -130,26 +140,24 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
$recurringType = $this->_adyenHelper->getAdyenAbstractConfigData('recurring_type'); $recurringType = $this->_adyenHelper->getAdyenAbstractConfigData('recurring_type');
$canCreateBillingAgreement = false; $canCreateBillingAgreement = false;
if($recurringType == "ONECLICK" || $recurringType == "ONECLICK,RECURRING") { if ($recurringType == "ONECLICK" || $recurringType == "ONECLICK,RECURRING") {
$canCreateBillingAgreement = true; $canCreateBillingAgreement = true;
} }
$config['payment'] ['adyenOneclick']['cseKey'] = $cseKey; $config['payment'] ['adyenOneclick']['cseKey'] = $cseKey;
$config['payment'] ['adyenOneclick']['cseEnabled'] = $cseEnabled; $config['payment'] ['adyenOneclick']['cseEnabled'] = $cseEnabled;
$config['payment'] ['adyenOneclick']['cseEnabled'] = $cseEnabled; $config['payment'] ['adyenOneclick']['cseEnabled'] = $cseEnabled;
$config['payment']['adyenOneclick']['generationTime'] = date("c"); $config['payment']['adyenOneclick']['generationTime'] = date("c");
$config['payment']['adyenOneclick']['canCreateBillingAgreement'] = $canCreateBillingAgreement; $config['payment']['adyenOneclick']['canCreateBillingAgreement'] = $canCreateBillingAgreement;
foreach ($this->_methodCodes as $code) {
foreach ($this->methodCodes as $code) {
if ($this->methods[$code]->isAvailable()) { if ($this->methods[$code]->isAvailable()) {
$recurringContractType = $this->_getRecurringContractType(); $recurringContractType = $this->_getRecurringContractType();
$config['payment'] ['adyenOneclick']['billingAgreements'] = $this->getAdyenOneclickPaymentMethods(); $config['payment'] ['adyenOneclick']['billingAgreements'] = $this->getAdyenOneclickPaymentMethods();
$config['payment'] ['adyenOneclick']['recurringContractType'] = $recurringContractType; $config['payment'] ['adyenOneclick']['recurringContractType'] = $recurringContractType;
if($recurringContractType == \Adyen\Payment\Model\RecurringType::ONECLICK) { if ($recurringContractType == \Adyen\Payment\Model\RecurringType::ONECLICK) {
$config['payment'] ['adyenOneclick']['hasCustomerInteraction'] = true; $config['payment'] ['adyenOneclick']['hasCustomerInteraction'] = true;
} else { } else {
$config['payment'] ['adyenOneclick']['hasCustomerInteraction'] = false; $config['payment'] ['adyenOneclick']['hasCustomerInteraction'] = false;
...@@ -159,16 +167,15 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider ...@@ -159,16 +167,15 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
return $config; return $config;
} }
/**
* @return array
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function getAdyenOneclickPaymentMethods() public function getAdyenOneclickPaymentMethods()
{ {
$billingAgreements = []; $billingAgreements = [];
if ($this->_customerSession->isLoggedIn()) { if ($this->_customerSession->isLoggedIn()) {
$customerId = $this->_customerSession->getCustomerId(); $customerId = $this->_customerSession->getCustomerId();
// is admin? // is admin?
if ($this->_appState->getAreaCode() === \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE) { if ($this->_appState->getAreaCode() === \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE) {
//retrieve storeId from quote //retrieve storeId from quote
...@@ -190,29 +197,31 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider ...@@ -190,29 +197,31 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
$agreementData = $billingAgreement->getAgreementData(); $agreementData = $billingAgreement->getAgreementData();
// no agreementData and contractType then ignore // no agreementData and contractType then ignore
if((!is_array($agreementData)) || (!isset($agreementData['contractTypes']))) { if ((!is_array($agreementData)) || (!isset($agreementData['contractTypes']))) {
continue; continue;
} }
// check if contractType is supporting the selected contractType for OneClick payments // check if contractType is supporting the selected contractType for OneClick payments
$allowedContractTypes = $agreementData['contractTypes']; $allowedContractTypes = $agreementData['contractTypes'];
if(in_array($recurringPaymentType, $allowedContractTypes)) { if (in_array($recurringPaymentType, $allowedContractTypes)) {
// check if AgreementLabel is set and if contract has an recurringType // check if AgreementLabel is set and if contract has an recurringType
if($billingAgreement->getAgreementLabel()) { if ($billingAgreement->getAgreementLabel()) {
$data = ['reference_id' => $billingAgreement->getReferenceId(), $data = ['reference_id' => $billingAgreement->getReferenceId(),
'agreement_label' => $billingAgreement->getAgreementLabel(), 'agreement_label' => $billingAgreement->getAgreementLabel(),
'agreement_data' => $agreementData 'agreement_data' => $agreementData
]; ];
if($this->_genericConfig->showLogos()) { if ($this->_genericConfig->showLogos()) {
$logoName = $agreementData['variant']; $logoName = $agreementData['variant'];
// for Ideal use sepadirectdebit because it is // for Ideal use sepadirectdebit because it is
if($agreementData['variant'] == 'ideal') { if ($agreementData['variant'] == 'ideal') {
$logoName = "sepadirectdebit"; $logoName = "sepadirectdebit";
} }
$asset = $this->_genericConfig->createAsset('Adyen_Payment::images/logos/' . $logoName . '.png'); $asset = $this->_genericConfig->createAsset(
'Adyen_Payment::images/logos/' . $logoName . '.png'
);
$placeholder = $this->_genericConfig->findRelativeSourceFilePath($asset); $placeholder = $this->_genericConfig->findRelativeSourceFilePath($asset);
$icon = null; $icon = null;
...@@ -225,9 +234,7 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider ...@@ -225,9 +234,7 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
]; ];
} }
$data['logo'] = $icon; $data['logo'] = $icon;
} }
$billingAgreements[] = $data; $billingAgreements[] = $data;
} }
} }
...@@ -236,6 +243,9 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider ...@@ -236,6 +243,9 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
return $billingAgreements; return $billingAgreements;
} }
/**
* @return mixed
*/
protected function _getRecurringContractType() protected function _getRecurringContractType()
{ {
return $this->_adyenHelper->getAdyenOneclickConfigData('recurring_payment_type'); return $this->_adyenHelper->getAdyenOneclickConfigData('recurring_payment_type');
......
<?php
/**
* ######
* ######
* ############ ####( ###### #####. ###### ############ ############
* ############# #####( ###### #####. ###### ############# #############
* ###### #####( ###### #####. ###### ##### ###### ##### ######
* ###### ###### #####( ###### #####. ###### ##### ##### ##### ######
* ###### ###### #####( ###### #####. ###### ##### ##### ######
* ############# ############# ############# ############# ##### ######
* ############ ############ ############# ############ ##### ######
* ######
* #############
* ############
*
* Adyen Payment module (https://www.adyen.com/)
*
* Copyright (c) 2015 Adyen BV (https://www.adyen.com/)
* See LICENSE.txt for license details.
*
* Author: Adyen <magento@adyen.com>
*/
namespace Adyen\Payment\Model;
use Magento\Checkout\Model\ConfigProviderInterface;
use Magento\Payment\Helper\Data as PaymentHelper;
use Magento\Directory\Helper\Data;
class AdyenSepaConfigProvider implements ConfigProviderInterface
{
/**
* @var string[]
*/
protected $_methodCodes = [
'adyen_sepa'
];
/**
* @var \Magento\Payment\Model\Method\AbstractMethod[]
*/
protected $_methods = [];
/**
* @var PaymentHelper
*/
protected $_paymentHelper;
/**
* @var \Magento\Directory\Model\Config\Source\Country
*/
protected $_country;
/**
* AdyenSepaConfigProvider constructor.
*
* @param PaymentHelper $paymentHelper
* @param \Magento\Directory\Model\Config\Source\Country $country
*/
public function __construct(
PaymentHelper $paymentHelper,
\Magento\Directory\Model\Config\Source\Country $country
) {
$this->_paymentHelper = $paymentHelper;
$this->_country = $country;
foreach ($this->_methodCodes as $code) {
$this->_methods[$code] = $this->_paymentHelper->getMethodInstance($code);
}
}
/**
* @return array
*/
public function getConfig()
{
$config = [
'payment' => [
'adyenSepa' => [
'countries' => $this->getCountries()
]
]
];
return $config;
}
/**
* @return array
*/
public function getCountries()
{
$sepaCountriesAllowed = [
"AT", "BE", "BG", "CH", "CY", "CZ", "DE", "DK", "EE", "ES", "FI", "FR", "GB", "GF", "GI", "GP", "GR", "HR",
"HU", "IE", "IS", "IT", "LI", "LT", "LU", "LV", "MC", "MQ", "MT", "NL", "NO", "PL", "PT", "RE", "RO", "SE",
"SI", "SK"
];
$countryList = $this->_country->toOptionArray();
$sepaCountries = [];
foreach ($countryList as $key => $country) {
$value = $country['value'];
if (in_array($value, $sepaCountriesAllowed)) {
$sepaCountries[$value] = $country['label'];
}
}
return $sepaCountries;
}
}
\ No newline at end of file
This diff is collapsed.
...@@ -31,14 +31,17 @@ class Agreement extends \Magento\Paypal\Model\Billing\Agreement ...@@ -31,14 +31,17 @@ class Agreement extends \Magento\Paypal\Model\Billing\Agreement
*/ */
private $_adyenHelper; private $_adyenHelper;
/** /**
* Agreement constructor.
*
* @param \Adyen\Payment\Helper\Data $adyenHelper
* @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Model\Context $context
* @param \Magento\Framework\Registry $registry * @param \Magento\Framework\Registry $registry
* @param \Magento\Payment\Helper\Data $paymentData * @param \Magento\Payment\Helper\Data $paymentData
* @param \Magento\Paypal\Model\ResourceModel\Billing\Agreement\CollectionFactory $billingAgreementFactory
* @param \Magento\Framework\Stdlib\DateTime\DateTimeFactory $dateFactory
* @param \Magento\Framework\Model\ResourceModel\AbstractResource|null $resource * @param \Magento\Framework\Model\ResourceModel\AbstractResource|null $resource
* @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection * @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection
* @param \Adyen\Payment\Helper\Data $adyenHelper
* @param array $data * @param array $data
*/ */
public function __construct( public function __construct(
...@@ -51,10 +54,16 @@ class Agreement extends \Magento\Paypal\Model\Billing\Agreement ...@@ -51,10 +54,16 @@ class Agreement extends \Magento\Paypal\Model\Billing\Agreement
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null, \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
array $data = [] array $data = []
) {
parent::__construct($context,
$registry,
$paymentData,
$billingAgreementFactory,
$dateFactory,
$resource,
$resourceCollection,
$data);
)
{
parent::__construct($context, $registry, $paymentData, $billingAgreementFactory, $dateFactory, $resource, $resourceCollection, $data);
$this->_adyenHelper = $adyenHelper; $this->_adyenHelper = $adyenHelper;
} }
...@@ -68,7 +77,10 @@ class Agreement extends \Magento\Paypal\Model\Billing\Agreement ...@@ -68,7 +77,10 @@ class Agreement extends \Magento\Paypal\Model\Billing\Agreement
return $this->getCustomerId(); return $this->getCustomerId();
} }
/**
* @param $data
* @return $this
*/
public function parseRecurringContractData($data) public function parseRecurringContractData($data)
{ {
$this $this
...@@ -118,6 +130,10 @@ class Agreement extends \Magento\Paypal\Model\Billing\Agreement ...@@ -118,6 +130,10 @@ class Agreement extends \Magento\Paypal\Model\Billing\Agreement
return $this; return $this;
} }
/**
* @param $data
* @return $this
*/
public function setAgreementData($data) public function setAgreementData($data)
{ {
if (is_array($data)) { if (is_array($data)) {
...@@ -130,6 +146,9 @@ class Agreement extends \Magento\Paypal\Model\Billing\Agreement ...@@ -130,6 +146,9 @@ class Agreement extends \Magento\Paypal\Model\Billing\Agreement
return $this; return $this;
} }
/**
* @return mixed
*/
public function getAgreementData() public function getAgreementData()
{ {
return json_decode($this->getData('agreement_data'), true); return json_decode($this->getData('agreement_data'), true);
......
...@@ -28,7 +28,8 @@ namespace Adyen\Payment\Model\Config; ...@@ -28,7 +28,8 @@ namespace Adyen\Payment\Model\Config;
class Converter implements \Magento\Framework\Config\ConverterInterface class Converter implements \Magento\Framework\Config\ConverterInterface
{ {
/** /**
* {@inheritdoc} * @param \DOMDocument $source
* @return array
*/ */
public function convert($source) public function convert($source)
{ {
...@@ -91,8 +92,6 @@ class Converter implements \Magento\Framework\Config\ConverterInterface ...@@ -91,8 +92,6 @@ class Converter implements \Magento\Framework\Config\ConverterInterface
return $left['order'] - $right['order']; return $left['order'] - $right['order'];
} }
/** /**
* Convert methods xml tree to array * Convert methods xml tree to array
* *
......
...@@ -35,63 +35,4 @@ class Reader extends \Magento\Framework\Config\Reader\Filesystem ...@@ -35,63 +35,4 @@ class Reader extends \Magento\Framework\Config\Reader\Filesystem
protected $_idAttributes = [ protected $_idAttributes = [
'/payment/adyen_credit_cards/type' => 'id' '/payment/adyen_credit_cards/type' => 'id'
]; ];
/**
* Load configuration scope
*
* @param string|null $scope
* @return array
*/
public function read($scope = null)
{
$scope = $scope ?: $this->_defaultScope;
$fileList = $this->_fileResolver->get($this->_fileName, $scope);
if (!count($fileList)) {
return [];
}
$output = $this->_readFiles($fileList);
return $output;
}
/**
* Read configuration files
*
* @param array $fileList
* @return array
* @throws \Magento\Framework\Exception\LocalizedException
*/
protected function _readFiles($fileList)
{
/** @var \Magento\Framework\Config\Dom $configMerger */
$configMerger = null;
foreach ($fileList as $key => $content) {
try {
if (!$configMerger) {
$configMerger = $this->_createConfigMerger($this->_domDocumentClass, $content);
} else {
$configMerger->merge($content);
}
} catch (\Magento\Framework\Config\Dom\ValidationException $e) {
throw new \Magento\Framework\Exception\LocalizedException(
new \Magento\Framework\Phrase("Invalid XML in file %1:\n%2", [$key, $e->getMessage()])
);
}
}
if ($this->validationState->isValidationRequired()) {
$errors = [];
if ($configMerger && !$configMerger->validate($this->_schemaFile, $errors)) {
$message = "Invalid Document \n";
throw new \Magento\Framework\Exception\LocalizedException(
new \Magento\Framework\Phrase($message . implode("\n", $errors))
);
}
}
$output = [];
if ($configMerger) {
$output = $this->_converter->convert($configMerger->getDom());
}
return $output;
}
} }
...@@ -26,11 +26,6 @@ namespace Adyen\Payment\Model\Config\Source; ...@@ -26,11 +26,6 @@ namespace Adyen\Payment\Model\Config\Source;
class CaptureMode implements \Magento\Framework\Option\ArrayInterface class CaptureMode implements \Magento\Framework\Option\ArrayInterface
{ {
/**
* @var \Magento\Sales\Model\Order\Config
*/
protected $_orderConfig;
/** /**
* @var \Adyen\Payment\Helper\Data * @var \Adyen\Payment\Helper\Data
*/ */
...@@ -38,15 +33,13 @@ class CaptureMode implements \Magento\Framework\Option\ArrayInterface ...@@ -38,15 +33,13 @@ class CaptureMode implements \Magento\Framework\Option\ArrayInterface
/** /**
* @param \Magento\Sales\Model\Order\Config $orderConfig * CaptureMode constructor.
*
* @param \Adyen\Payment\Helper\Data $adyenHelper * @param \Adyen\Payment\Helper\Data $adyenHelper
*/ */
public function __construct( public function __construct(
\Magento\Sales\Model\Order\Config $orderConfig,
\Adyen\Payment\Helper\Data $adyenHelper \Adyen\Payment\Helper\Data $adyenHelper
) ) {
{
$this->_orderConfig = $orderConfig;
$this->_adyenHelper = $adyenHelper; $this->_adyenHelper = $adyenHelper;
} }
......
...@@ -26,26 +26,19 @@ namespace Adyen\Payment\Model\Config\Source; ...@@ -26,26 +26,19 @@ namespace Adyen\Payment\Model\Config\Source;
class DemoMode implements \Magento\Framework\Option\ArrayInterface class DemoMode implements \Magento\Framework\Option\ArrayInterface
{ {
/**
* @var \Magento\Sales\Model\Order\Config
*/
protected $_orderConfig;
/** /**
* @var \Adyen\Payment\Helper\Data * @var \Adyen\Payment\Helper\Data
*/ */
protected $_adyenHelper; protected $_adyenHelper;
/** /**
* @param \Magento\Sales\Model\Order\Config $orderConfig * DemoMode constructor.
*
* @param \Adyen\Payment\Helper\Data $adyenHelper * @param \Adyen\Payment\Helper\Data $adyenHelper
*/ */
public function __construct( public function __construct(
\Magento\Sales\Model\Order\Config $orderConfig,
\Adyen\Payment\Helper\Data $adyenHelper \Adyen\Payment\Helper\Data $adyenHelper
) ) {
{
$this->_orderConfig = $orderConfig;
$this->_adyenHelper = $adyenHelper; $this->_adyenHelper = $adyenHelper;
} }
......
...@@ -26,11 +26,6 @@ namespace Adyen\Payment\Model\Config\Source; ...@@ -26,11 +26,6 @@ namespace Adyen\Payment\Model\Config\Source;
class PaymentRoutine implements \Magento\Framework\Option\ArrayInterface class PaymentRoutine implements \Magento\Framework\Option\ArrayInterface
{ {
/**
* @var \Magento\Sales\Model\Order\Config
*/
protected $_orderConfig;
/** /**
* @var \Adyen\Payment\Helper\Data * @var \Adyen\Payment\Helper\Data
*/ */
...@@ -41,11 +36,8 @@ class PaymentRoutine implements \Magento\Framework\Option\ArrayInterface ...@@ -41,11 +36,8 @@ class PaymentRoutine implements \Magento\Framework\Option\ArrayInterface
* @param \Adyen\Payment\Helper\Data $adyenHelper * @param \Adyen\Payment\Helper\Data $adyenHelper
*/ */
public function __construct( public function __construct(
\Magento\Sales\Model\Order\Config $orderConfig,
\Adyen\Payment\Helper\Data $adyenHelper \Adyen\Payment\Helper\Data $adyenHelper
) ) {
{
$this->_orderConfig = $orderConfig;
$this->_adyenHelper = $adyenHelper; $this->_adyenHelper = $adyenHelper;
} }
......
...@@ -27,26 +27,19 @@ class RecurringPaymentType implements \Magento\Framework\Option\ArrayInterface ...@@ -27,26 +27,19 @@ class RecurringPaymentType implements \Magento\Framework\Option\ArrayInterface
{ {
const UNDEFINED_OPTION_LABEL = 'NONE'; const UNDEFINED_OPTION_LABEL = 'NONE';
/**
* @var \Magento\Sales\Model\Order\Config
*/
protected $_orderConfig;
/** /**
* @var \Adyen\Payment\Helper\Data * @var \Adyen\Payment\Helper\Data
*/ */
protected $_adyenHelper; protected $_adyenHelper;
/** /**
* @param \Magento\Sales\Model\Order\Config $orderConfig * RecurringPaymentType constructor.
*
* @param \Adyen\Payment\Helper\Data $adyenHelper * @param \Adyen\Payment\Helper\Data $adyenHelper
*/ */
public function __construct( public function __construct(
\Magento\Sales\Model\Order\Config $orderConfig,
\Adyen\Payment\Helper\Data $adyenHelper \Adyen\Payment\Helper\Data $adyenHelper
) ) {
{
$this->_orderConfig = $orderConfig;
$this->_adyenHelper = $adyenHelper; $this->_adyenHelper = $adyenHelper;
} }
...@@ -58,7 +51,8 @@ class RecurringPaymentType implements \Magento\Framework\Option\ArrayInterface ...@@ -58,7 +51,8 @@ class RecurringPaymentType implements \Magento\Framework\Option\ArrayInterface
$recurringTypes = $this->_adyenHelper->getRecurringTypes(); $recurringTypes = $this->_adyenHelper->getRecurringTypes();
foreach ($recurringTypes as $code => $label) { foreach ($recurringTypes as $code => $label) {
if($code == \Adyen\Payment\Model\RecurringType::ONECLICK || $code == \Adyen\Payment\Model\RecurringType::RECURRING) { if ($code == \Adyen\Payment\Model\RecurringType::ONECLICK ||
$code == \Adyen\Payment\Model\RecurringType::RECURRING) {
$options[] = ['value' => $code, 'label' => $label]; $options[] = ['value' => $code, 'label' => $label];
} }
} }
......
...@@ -26,27 +26,21 @@ namespace Adyen\Payment\Model\Config\Source; ...@@ -26,27 +26,21 @@ namespace Adyen\Payment\Model\Config\Source;
class RecurringType implements \Magento\Framework\Option\ArrayInterface class RecurringType implements \Magento\Framework\Option\ArrayInterface
{ {
const UNDEFINED_OPTION_LABEL = 'NONE'; const UNDEFINED_OPTION_LABEL = 'NONE';
/**
* @var \Magento\Sales\Model\Order\Config
*/
protected $_orderConfig;
/** /**
* @var \Adyen\Payment\Helper\Data * @var \Adyen\Payment\Helper\Data
*/ */
protected $_adyenHelper; protected $_adyenHelper;
/** /**
* @param \Magento\Sales\Model\Order\Config $orderConfig * RecurringType constructor.
*
* @param \Adyen\Payment\Helper\Data $adyenHelper * @param \Adyen\Payment\Helper\Data $adyenHelper
*/ */
public function __construct( public function __construct(
\Magento\Sales\Model\Order\Config $orderConfig,
\Adyen\Payment\Helper\Data $adyenHelper \Adyen\Payment\Helper\Data $adyenHelper
) )
{ {
$this->_orderConfig = $orderConfig;
$this->_adyenHelper = $adyenHelper; $this->_adyenHelper = $adyenHelper;
} }
......
...@@ -33,9 +33,9 @@ class RenderMode implements \Magento\Framework\Option\ArrayInterface ...@@ -33,9 +33,9 @@ class RenderMode implements \Magento\Framework\Option\ArrayInterface
*/ */
public function toOptionArray() public function toOptionArray()
{ {
return array( return [
array('value' => self::MODE_TITLE, 'label' => __('Title')), ['value' => self::MODE_TITLE, 'label' => __('Title')],
array('value' => self::MODE_TITLE_IMAGE, 'label' => __('Logo + Title')), ['value' => self::MODE_TITLE_IMAGE, 'label' => __('Logo + Title')]
); ];
} }
} }
...@@ -33,10 +33,10 @@ class SepaFlow implements \Magento\Framework\Option\ArrayInterface ...@@ -33,10 +33,10 @@ class SepaFlow implements \Magento\Framework\Option\ArrayInterface
*/ */
public function toOptionArray() public function toOptionArray()
{ {
return array( return [
array('value' => self::SEPA_FLOW_SALE, 'label' => __('Sale')), ['value' => self::SEPA_FLOW_SALE, 'label' => __('Sale')],
array('value' => self::SEPA_FLOW_AUTHCAP, 'label' => __('Auth/Cap')), ['value' => self::SEPA_FLOW_AUTHCAP, 'label' => __('Auth/Cap')],
); ];
} }
} }
\ No newline at end of file
This diff is collapsed.
...@@ -42,18 +42,23 @@ class AdyenAbstract extends \Magento\Payment\Model\Method\AbstractMethod impleme ...@@ -42,18 +42,23 @@ class AdyenAbstract extends \Magento\Payment\Model\Method\AbstractMethod impleme
* @var bool * @var bool
*/ */
protected $_isGateway = false; protected $_isGateway = false;
/**
* @var bool
*/
protected $_canAuthorize = false; protected $_canAuthorize = false;
/**
* @var bool
*/
protected $_isInitializeNeeded = false; protected $_isInitializeNeeded = false;
/** /**
* Post request to gateway and return response * Post request to gateway and return response
* *
* @param Object $request * @param DataObject $request
* @param ConfigInterface $config * @param ConfigInterface $config
*
* @return DataObject
*
* @throws \Exception
*/ */
public function postRequest(DataObject $request, ConfigInterface $config) public function postRequest(DataObject $request, ConfigInterface $config)
{ {
......
This diff is collapsed.
This diff is collapsed.
...@@ -43,8 +43,11 @@ class Oneclick extends \Adyen\Payment\Model\Method\Cc ...@@ -43,8 +43,11 @@ class Oneclick extends \Adyen\Payment\Model\Method\Cc
* @var string * @var string
*/ */
protected $_formBlockType = 'Adyen\Payment\Block\Form\Oneclick'; protected $_formBlockType = 'Adyen\Payment\Block\Form\Oneclick';
protected $_infoBlockType = 'Adyen\Payment\Block\Info\Oneclick';
/**
* @var string
*/
protected $_infoBlockType = 'Adyen\Payment\Block\Info\Oneclick';
/** /**
* Payment Method not ready for internal use * Payment Method not ready for internal use
...@@ -63,18 +66,25 @@ class Oneclick extends \Adyen\Payment\Model\Method\Cc ...@@ -63,18 +66,25 @@ class Oneclick extends \Adyen\Payment\Model\Method\Cc
public function assignData(\Magento\Framework\DataObject $data) public function assignData(\Magento\Framework\DataObject $data)
{ {
parent::assignData($data); parent::assignData($data);
if (!$data instanceof \Magento\Framework\DataObject) {
$data = new \Magento\Framework\DataObject($data);
}
$additionalData = $data->getAdditionalData();
$infoInstance = $this->getInfoInstance(); $infoInstance = $this->getInfoInstance();
// get from variant magento code for creditcard type and set this in ccType // get from variant magento code for creditcard type and set this in ccType
$variant = $data['variant']; $variant = $additionalData['variant'];
$ccType = $this->_adyenHelper->getMagentoCreditCartType($variant); $ccType = $this->_adyenHelper->getMagentoCreditCartType($variant);
$infoInstance->setCcType($ccType); $infoInstance->setCcType($ccType);
// save value remember details checkbox // save value remember details checkbox
$infoInstance->setAdditionalInformation('recurring_detail_reference', $data['recurring_detail_reference']); $infoInstance->setAdditionalInformation('recurring_detail_reference',
$additionalData['recurring_detail_reference']);
$recurringPaymentType = $this->_adyenHelper->getAdyenOneclickConfigData('recurring_payment_type'); $recurringPaymentType = $this->_adyenHelper->getAdyenOneclickConfigData('recurring_payment_type');
if($recurringPaymentType == \Adyen\Payment\Model\RecurringType::ONECLICK) { if ($recurringPaymentType == \Adyen\Payment\Model\RecurringType::ONECLICK) {
$customerInteraction = true; $customerInteraction = true;
} else { } else {
$customerInteraction = false; $customerInteraction = false;
...@@ -85,12 +95,16 @@ class Oneclick extends \Adyen\Payment\Model\Method\Cc ...@@ -85,12 +95,16 @@ class Oneclick extends \Adyen\Payment\Model\Method\Cc
return $this; return $this;
} }
/**
* @param \Adyen\Payment\Model\Billing\Agreement $agreement
* @return $this
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function updateBillingAgreementStatus(\Adyen\Payment\Model\Billing\Agreement $agreement) public function updateBillingAgreementStatus(\Adyen\Payment\Model\Billing\Agreement $agreement)
{ {
$targetStatus = $agreement->getStatus(); $targetStatus = $agreement->getStatus();
if($targetStatus == \Magento\Paypal\Model\Billing\Agreement::STATUS_CANCELED) { if ($targetStatus == \Magento\Paypal\Model\Billing\Agreement::STATUS_CANCELED) {
try { try {
$this->_paymentRequest->disableRecurringContract( $this->_paymentRequest->disableRecurringContract(
$agreement->getReferenceId(), $agreement->getReferenceId(),
...@@ -102,5 +116,4 @@ class Oneclick extends \Adyen\Payment\Model\Method\Cc ...@@ -102,5 +116,4 @@ class Oneclick extends \Adyen\Payment\Model\Method\Cc
} }
return $this; return $this;
} }
} }
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
...@@ -50,6 +50,15 @@ class Notification extends \Magento\Framework\Model\AbstractModel ...@@ -50,6 +50,15 @@ class Notification extends \Magento\Framework\Model\AbstractModel
const REPORT_AVAILABLE = "REPORT_AVAILABLE"; const REPORT_AVAILABLE = "REPORT_AVAILABLE";
const ORDER_CLOSED = "ORDER_CLOSED"; const ORDER_CLOSED = "ORDER_CLOSED";
/**
* Notification constructor.
*
* @param \Magento\Framework\Model\Context $context
* @param \Magento\Framework\Registry $registry
* @param \Magento\Framework\Model\ResourceModel\AbstractResource|null $resource
* @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection
* @param array $data
*/
public function __construct( public function __construct(
\Magento\Framework\Model\Context $context, \Magento\Framework\Model\Context $context,
\Magento\Framework\Registry $registry, \Magento\Framework\Registry $registry,
...@@ -60,7 +69,6 @@ class Notification extends \Magento\Framework\Model\AbstractModel ...@@ -60,7 +69,6 @@ class Notification extends \Magento\Framework\Model\AbstractModel
parent::__construct($context, $registry, $resource, $resourceCollection, $data); parent::__construct($context, $registry, $resource, $resourceCollection, $data);
} }
/** /**
* Initialize resource model * Initialize resource model
* *
...@@ -73,12 +81,14 @@ class Notification extends \Magento\Framework\Model\AbstractModel ...@@ -73,12 +81,14 @@ class Notification extends \Magento\Framework\Model\AbstractModel
/** /**
* Check if the Adyen Notification is already stored in the system * Check if the Adyen Notification is already stored in the system
*
* @param $pspReference * @param $pspReference
* @param $event * @param $eventCode
* @param $success * @param $success
* @return bool true if the notification is a duplicate * @return bool (true if the notification is a duplicate)
*/ */
public function isDuplicate($pspReference, $eventCode, $success) { public function isDuplicate($pspReference, $eventCode, $success)
{
$result = $this->getResource()->getNotification($pspReference, $eventCode, $success); $result = $this->getResource()->getNotification($pspReference, $eventCode, $success);
return (empty($result)) ? false : true; return (empty($result)) ? false : true;
} }
...@@ -263,17 +273,14 @@ class Notification extends \Magento\Framework\Model\AbstractModel ...@@ -263,17 +273,14 @@ class Notification extends \Magento\Framework\Model\AbstractModel
} }
/** /**
* Sets Reason. * @param $live
*
* @param string $reason
* @return $this * @return $this
*/ */
public function setLive($live) public function setLive($live)
{ {
return $this->setData(self::LIVE, $live); return $this->setData(self::LIVE, $live);
} }
/** /**
* Gets the AdditionalData for the notification. * Gets the AdditionalData for the notification.
* *
...@@ -357,6 +364,4 @@ class Notification extends \Magento\Framework\Model\AbstractModel ...@@ -357,6 +364,4 @@ class Notification extends \Magento\Framework\Model\AbstractModel
{ {
return $this->setData(self::UPDATED_AT, $timestamp); return $this->setData(self::UPDATED_AT, $timestamp);
} }
} }
\ No newline at end of file
...@@ -30,14 +30,19 @@ class RecurringType { ...@@ -30,14 +30,19 @@ class RecurringType {
const ONECLICK_RECURRING = 'ONECLICK,RECURRING'; const ONECLICK_RECURRING = 'ONECLICK,RECURRING';
const RECURRING = 'RECURRING'; const RECURRING = 'RECURRING';
/**
* @var array
*/
protected $_allowedRecurringTypesForListRecurringCall = [ protected $_allowedRecurringTypesForListRecurringCall = [
self::ONECLICK, self::ONECLICK,
self::RECURRING self::RECURRING
]; ];
/**
* @return array
*/
public function getAllowedRecurringTypesForListRecurringCall() public function getAllowedRecurringTypesForListRecurringCall()
{ {
return $this->_allowedRecurringTypesForListRecurringCall; return $this->_allowedRecurringTypesForListRecurringCall;
} }
} }
\ No newline at end of file
...@@ -26,13 +26,17 @@ namespace Adyen\Payment\Model\Resource; ...@@ -26,13 +26,17 @@ namespace Adyen\Payment\Model\Resource;
class Notification extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb class Notification extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
{ {
/**
* Construct
*/
public function _construct() public function _construct()
{ {
$this->_init('adyen_notification', 'entity_id'); $this->_init('adyen_notification', 'entity_id');
} }
/** /**
* @desc get Notification for duplicate check * Get Notification for duplicate check
*
* @param $pspReference * @param $pspReference
* @param $eventCode * @param $eventCode
* @param $success * @param $success
...@@ -47,5 +51,4 @@ class Notification extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb ...@@ -47,5 +51,4 @@ class Notification extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
->where('notification.success=?', $success); ->where('notification.success=?', $success);
return $this->getConnection()->fetchAll($select); return $this->getConnection()->fetchAll($select);
} }
} }
\ No newline at end of file
...@@ -25,9 +25,11 @@ namespace Adyen\Payment\Model\Resource\Notification; ...@@ -25,9 +25,11 @@ namespace Adyen\Payment\Model\Resource\Notification;
class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
{ {
/**
* Construct
*/
public function _construct() public function _construct()
{ {
$this->_init('Adyen\Payment\Model\Notification', 'Adyen\Payment\Model\Resource\Notification'); $this->_init('Adyen\Payment\Model\Notification', 'Adyen\Payment\Model\Resource\Notification');
} }
} }
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"name": "adyen/module-payment", "name": "adyen/module-payment",
"description": "Official Magento2 Plugin to connect to Payment Service Provider Adyen.", "description": "Official Magento2 Plugin to connect to Payment Service Provider Adyen.",
"type": "magento2-module", "type": "magento2-module",
"version": "1.2.1", "version": "1.3.0",
"license": [ "license": [
"OSL-3.0", "OSL-3.0",
"AFL-3.0" "AFL-3.0"
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
<include path="Adyen_Payment::system/adyen_cc.xml"/> <include path="Adyen_Payment::system/adyen_cc.xml"/>
<include path="Adyen_Payment::system/adyen_oneclick.xml"/> <include path="Adyen_Payment::system/adyen_oneclick.xml"/>
<include path="Adyen_Payment::system/adyen_hpp.xml"/> <include path="Adyen_Payment::system/adyen_hpp.xml"/>
<include path="Adyen_Payment::system/adyen_sepa.xml"/>
<include path="Adyen_Payment::system/adyen_pos.xml"/> <include path="Adyen_Payment::system/adyen_pos.xml"/>
</group> </group>
<group id="test" translate="label" type="text" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1"> <group id="test" translate="label" type="text" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
<item name="adyen_cc_config_provider" xsi:type="object">Adyen\Payment\Model\AdyenCcConfigProvider</item> <item name="adyen_cc_config_provider" xsi:type="object">Adyen\Payment\Model\AdyenCcConfigProvider</item>
<item name="adyen_oneclick_config_provider" xsi:type="object">Adyen\Payment\Model\AdyenOneclickConfigProvider</item> <item name="adyen_oneclick_config_provider" xsi:type="object">Adyen\Payment\Model\AdyenOneclickConfigProvider</item>
<item name="adyen_hpp_config_provider" xsi:type="object">Adyen\Payment\Model\AdyenHppConfigProvider</item> <item name="adyen_hpp_config_provider" xsi:type="object">Adyen\Payment\Model\AdyenHppConfigProvider</item>
<item name="adyen_sepa_config_provider" xsi:type="object">Adyen\Payment\Model\AdyenSepaConfigProvider</item>
</argument> </argument>
</arguments> </arguments>
</type> </type>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment