We will work on Apr 26th (Saturday) and will be off from Apr 30th (Wednesday) until May 2nd (Friday) for public holiday 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
...@@ -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
*/
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; 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 $years;
} }
return true;
/**
* 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
...@@ -36,6 +36,8 @@ class AbstractInfo extends \Magento\Payment\Block\Info ...@@ -36,6 +36,8 @@ class AbstractInfo extends \Magento\Payment\Block\Info
/** /**
* 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()
{ {
......
...@@ -52,6 +52,8 @@ class Json extends \Magento\Framework\App\Action\Action ...@@ -52,6 +52,8 @@ class Json extends \Magento\Framework\App\Action\Action
protected $_adyenLogger; protected $_adyenLogger;
/** /**
* Json 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 \Adyen\Payment\Logger\AdyenLogger $adyenLogger * @param \Adyen\Payment\Logger\AdyenLogger $adyenLogger
...@@ -77,16 +79,19 @@ class Json extends \Magento\Framework\App\Action\Action ...@@ -77,16 +79,19 @@ class Json extends \Magento\Framework\App\Action\Action
$notificationItems = json_decode(file_get_contents('php://input'), true); $notificationItems = json_decode(file_get_contents('php://input'), true);
// log the notification // log the notification
$this->_adyenLogger->addAdyenNotification("The content of the notification is: " . print_r($notificationItems,1)); $this->_adyenLogger->addAdyenNotification(
"The content of the notification is: " . print_r($notificationItems, 1)
);
$notificationMode = isset($notificationItems['live']) ? $notificationItems['live'] : ""; $notificationMode = isset($notificationItems['live']) ? $notificationItems['live'] : "";
if($notificationMode != "" && $this->_validateNotificationMode($notificationMode)) if ($notificationMode != "" && $this->_validateNotificationMode($notificationMode)) {
{ foreach ($notificationItems['notificationItems'] as $notificationItem) {
foreach($notificationItems['notificationItems'] as $notificationItem) $status = $this->_processNotification(
{ $notificationItem['NotificationRequestItem'], $notificationMode
$status = $this->_processNotification($notificationItem['NotificationRequestItem'], $notificationMode); );
if($status != true) {
if ($status != true) {
$this->_return401(); $this->_return401();
return; return;
} }
...@@ -99,13 +104,14 @@ class Json extends \Magento\Framework\App\Action\Action ...@@ -99,13 +104,14 @@ class Json extends \Magento\Framework\App\Action\Action
->setHeader('Content-Type', 'text/html') ->setHeader('Content-Type', 'text/html')
->setBody("[accepted]"); ->setBody("[accepted]");
return; return;
} else } else {
{ if ($notificationMode == "") {
if($notificationMode == "") {
$this->_return401(); $this->_return401();
return; return;
} }
throw new \Magento\Framework\Exception\LocalizedException(__('Mismatch between Live/Test modes of Magento store and the Adyen platform')); throw new \Magento\Framework\Exception\LocalizedException(
__('Mismatch between Live/Test modes of Magento store and the Adyen platform')
);
} }
} catch (Exception $e) { } catch (Exception $e) {
throw new \Magento\Framework\Exception\LocalizedException(__($e->getMessage())); throw new \Magento\Framework\Exception\LocalizedException(__($e->getMessage()));
...@@ -119,25 +125,27 @@ class Json extends \Magento\Framework\App\Action\Action ...@@ -119,25 +125,27 @@ class Json extends \Magento\Framework\App\Action\Action
protected function _validateNotificationMode($notificationMode) protected function _validateNotificationMode($notificationMode)
{ {
$mode = $this->_adyenHelper->getAdyenAbstractConfigData('demo_mode'); $mode = $this->_adyenHelper->getAdyenAbstractConfigData('demo_mode');
if ($mode=='1' && $notificationMode == "false" || $mode=='0' && $notificationMode == 'true') {
if (($mode=='1' && $notificationMode == "false") || ($mode=='0' && $notificationMode == 'true')) {
return true; return true;
} }
return false; return false;
} }
/** /**
* $desc save notification into the database for cronjob to execute notificaiton * save notification into the database for cronjob to execute notification
*
* @param $response * @param $response
* @param $notificationMode
* @return bool
* @throws \Magento\Framework\Exception\LocalizedException * @throws \Magento\Framework\Exception\LocalizedException
*/ */
protected function _processNotification($response, $notificationMode) protected function _processNotification($response, $notificationMode)
{ {
// validate the notification // validate the notification
if($this->authorised($response)) if ($this->authorised($response)) {
{
// check if notificaiton already exists // check if notificaiton already exists
if(!$this->_isDuplicate($response)) { if (!$this->_isDuplicate($response)) {
try { try {
$notification = $this->_objectManager->create('Adyen\Payment\Model\Notification'); $notification = $this->_objectManager->create('Adyen\Payment\Model\Notification');
...@@ -192,10 +200,11 @@ class Json extends \Magento\Framework\App\Action\Action ...@@ -192,10 +200,11 @@ class Json extends \Magento\Framework\App\Action\Action
return false; return false;
} }
/** /**
* @desc HTTP Authentication of the notification * HTTP Authentication of the notification
*
* @param $response * @param $response
* @return bool
*/ */
protected function authorised($response) protected function authorised($response)
{ {
...@@ -209,16 +218,20 @@ class Json extends \Magento\Framework\App\Action\Action ...@@ -209,16 +218,20 @@ class Json extends \Magento\Framework\App\Action\Action
$submitedMerchantAccount = $response['merchantAccountCode']; $submitedMerchantAccount = $response['merchantAccountCode'];
if (empty($submitedMerchantAccount) && empty($internalMerchantAccount)) { if (empty($submitedMerchantAccount) && empty($internalMerchantAccount)) {
if(strtolower(substr($response['pspReference'],0,17)) == "testnotification_" || strtolower(substr($response['pspReference'],0,5)) == "test_") { if (strtolower(substr($response['pspReference'], 0, 17)) == "testnotification_" ||
echo 'merchantAccountCode is empty in magento settings'; exit(); strtolower(substr($response['pspReference'], 0, 5)) == "test_") {
echo 'merchantAccountCode is empty in magento settings';
exit();
} }
return false; return false;
} }
// validate username and password // validate username and password
if ((!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW']))) { if ((!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW']))) {
if(strtolower(substr($response['pspReference'],0,17)) == "testnotification_" || strtolower(substr($response['pspReference'],0,5)) == "test_") { if (strtolower(substr($response['pspReference'], 0, 17)) == "testnotification_" ||
echo 'Authentication failed: PHP_AUTH_USER and PHP_AUTH_PW are empty. See Adyen Magento manual CGI mode'; exit(); strtolower(substr($response['pspReference'], 0, 5)) == "test_") {
echo 'Authentication failed: PHP_AUTH_USER and PHP_AUTH_PW are empty. See Adyen Magento manual CGI mode';
exit();
} }
return false; return false;
} }
...@@ -234,22 +247,24 @@ class Json extends \Magento\Framework\App\Action\Action ...@@ -234,22 +247,24 @@ class Json extends \Magento\Framework\App\Action\Action
} }
// If notification is test check if fields are correct if not return error // If notification is test check if fields are correct if not return error
if(strtolower(substr($response['pspReference'],0,17)) == "testnotification_" || strtolower(substr($response['pspReference'],0,5)) == "test_") { if (strtolower(substr($response['pspReference'], 0, 17)) == "testnotification_" ||
if($accountCmp != 0) { strtolower(substr($response['pspReference'], 0, 5)) == "test_") {
echo 'MerchantAccount in notification is not the same as in Magento settings'; exit(); if ($accountCmp != 0) {
} elseif($usernameCmp != 0 || $passwordCmp != 0) { echo 'MerchantAccount in notification is not the same as in Magento settings';
echo 'username (PHP_AUTH_USER) and\or password (PHP_AUTH_PW) are not the same as Magento settings'; exit(); exit();
} elseif ($usernameCmp != 0 || $passwordCmp != 0) {
echo 'username (PHP_AUTH_USER) and\or password (PHP_AUTH_PW) are not the same as Magento settings';
exit();
} }
} }
return false; return false;
} }
/** /**
* $desc if notification is already saved ignore it * If notification is already saved ignore it
*
* @param $response * @param $response
* @return bool * @return mixed
*/ */
protected function _isDuplicate($response) protected function _isDuplicate($response)
{ {
...@@ -264,24 +279,29 @@ class Json extends \Magento\Framework\App\Action\Action ...@@ -264,24 +279,29 @@ class Json extends \Magento\Framework\App\Action\Action
/** /**
* Fix these global variables for the CGI * Fix these global variables for the CGI
*/ */
protected function _fixCgiHttpAuthentication() { // unsupported is $_SERVER['REMOTE_AUTHORIZATION']: as stated in manual :p protected function _fixCgiHttpAuthentication()
if (isset($_SERVER['REDIRECT_REMOTE_AUTHORIZATION']) && $_SERVER['REDIRECT_REMOTE_AUTHORIZATION'] != '') { //pcd note: no idea who sets this {
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', base64_decode($_SERVER['REDIRECT_REMOTE_AUTHORIZATION'])); if (isset($_SERVER['REDIRECT_REMOTE_AUTHORIZATION']) &&
} elseif(!empty($_SERVER['HTTP_AUTHORIZATION'])){ //pcd note: standard in magento? $_SERVER['REDIRECT_REMOTE_AUTHORIZATION'] != '') {
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6))); list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
} elseif (!empty($_SERVER['REMOTE_USER'])) { //pcd note: when cgi and .htaccess modrewrite patch is executed explode(':', base64_decode($_SERVER['REDIRECT_REMOTE_AUTHORIZATION']));
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', base64_decode(substr($_SERVER['REMOTE_USER'], 6))); } elseif (!empty($_SERVER['HTTP_AUTHORIZATION'])) {
} elseif (!empty($_SERVER['REDIRECT_REMOTE_USER'])) { //pcd note: no idea who sets this list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', base64_decode(substr($_SERVER['REDIRECT_REMOTE_USER'], 6))); explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
} elseif (!empty($_SERVER['REMOTE_USER'])) {
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
explode(':', base64_decode(substr($_SERVER['REMOTE_USER'], 6)));
} elseif (!empty($_SERVER['REDIRECT_REMOTE_USER'])) {
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
explode(':', base64_decode(substr($_SERVER['REDIRECT_REMOTE_USER'], 6)));
} }
} }
/** /**
* * Return a 401 result
*/ */
protected function _return401() protected function _return401()
{ {
$this->getResponse()->setHttpResponseCode(401); $this->getResponse()->setHttpResponseCode(401);
} }
} }
\ No newline at end of file
...@@ -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;
...@@ -236,11 +253,11 @@ class Result extends \Magento\Framework\App\Action\Action ...@@ -236,11 +253,11 @@ 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];
} }
} }
......
...@@ -27,26 +27,20 @@ class RecurringType implements \Magento\Framework\Option\ArrayInterface ...@@ -27,26 +27,20 @@ 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,9 +273,7 @@ class Notification extends \Magento\Framework\Model\AbstractModel ...@@ -263,9 +273,7 @@ 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)
...@@ -273,7 +281,6 @@ class Notification extends \Magento\Framework\Model\AbstractModel ...@@ -273,7 +281,6 @@ class Notification extends \Magento\Framework\Model\AbstractModel
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
...@@ -46,7 +46,8 @@ class InstallSchema implements InstallSchemaInterface ...@@ -46,7 +46,8 @@ class InstallSchema implements InstallSchemaInterface
$table = $installer->getConnection() $table = $installer->getConnection()
->newTable($installer->getTable('adyen_notification')) ->newTable($installer->getTable('adyen_notification'))
->addColumn('entity_id', Table::TYPE_SMALLINT, null,['identity' => true, 'nullable' => false, 'primary' => true],'Entity ID') ->addColumn('entity_id', Table::TYPE_SMALLINT, null, ['identity' => true,
'nullable' => false, 'primary' => true], 'Entity ID')
->addColumn('pspreference', Table::TYPE_TEXT, 255, ['nullable' => true], 'Pspreference') ->addColumn('pspreference', Table::TYPE_TEXT, 255, ['nullable' => true], 'Pspreference')
->addColumn('merchant_reference', Table::TYPE_TEXT, 255, ['nullable' => true], 'Merchant Reference') ->addColumn('merchant_reference', Table::TYPE_TEXT, 255, ['nullable' => true], 'Merchant Reference')
->addColumn('event_code', Table::TYPE_TEXT, 255, ['nullable' => true], 'Event Code') ->addColumn('event_code', Table::TYPE_TEXT, 255, ['nullable' => true], 'Event Code')
...@@ -58,8 +59,10 @@ class InstallSchema implements InstallSchemaInterface ...@@ -58,8 +59,10 @@ class InstallSchema implements InstallSchemaInterface
->addColumn('live', Table::TYPE_TEXT, 255, ['nullable' => true], 'Send from Live platform of adyen?') ->addColumn('live', Table::TYPE_TEXT, 255, ['nullable' => true], 'Send from Live platform of adyen?')
->addColumn('additional_data', Table::TYPE_TEXT, null, ['nullable' => true], 'AdditionalData') ->addColumn('additional_data', Table::TYPE_TEXT, null, ['nullable' => true], 'AdditionalData')
->addColumn('done', Table::TYPE_BOOLEAN, null, ['nullable' => false, 'default' => 0], 'done') ->addColumn('done', Table::TYPE_BOOLEAN, null, ['nullable' => false, 'default' => 0], 'done')
->addColumn('created_at', Table::TYPE_TIMESTAMP, null, ['nullable' => false, 'default' => Table::TIMESTAMP_INIT], 'Created At') ->addColumn('created_at', Table::TYPE_TIMESTAMP, null, ['nullable' => false,
->addColumn('updated_at', Table::TYPE_TIMESTAMP, null, ['nullable' => false, 'default' => Table::TIMESTAMP_INIT_UPDATE],'Updated At') 'default' => Table::TIMESTAMP_INIT], 'Created At')
->addColumn('updated_at', Table::TYPE_TIMESTAMP, null, ['nullable' => false,
'default' => Table::TIMESTAMP_INIT_UPDATE], 'Updated At')
->addIndex($installer->getIdxName('adyen_notification', ['pspreference']), ['pspreference']) ->addIndex($installer->getIdxName('adyen_notification', ['pspreference']), ['pspreference'])
->addIndex($installer->getIdxName('adyen_notification', ['event_code']), ['event_code']) ->addIndex($installer->getIdxName('adyen_notification', ['event_code']), ['event_code'])
->addIndex( ->addIndex(
...@@ -107,7 +110,6 @@ class InstallSchema implements InstallSchemaInterface ...@@ -107,7 +110,6 @@ class InstallSchema implements InstallSchemaInterface
$connection->addColumn($orderTable, $name, $definition); $connection->addColumn($orderTable, $name, $definition);
} }
$installer->endSetup(); $installer->endSetup();
} }
} }
\ No newline at end of file
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">
......
...@@ -62,6 +62,18 @@ ...@@ -62,6 +62,18 @@
<depends><field id="cse_enabled">1</field></depends> <depends><field id="cse_enabled">1</field></depends>
<config_path>payment/adyen_cc/cse_publickey_live</config_path> <config_path>payment/adyen_cc/cse_publickey_live</config_path>
</field> </field>
<group id="adyen_cc_advanced_settings" translate="label" showInDefault="1" showInWebsite="1" sortOrder="150">
<label>Advanced Settings</label>
<frontend_model>Magento\Config\Block\System\Config\Form\Fieldset</frontend_model>
<field id="enable_moto" translate="label" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Enable MOTO</label>
<tooltip><![CDATA[Important you have to activate MOTO for your account contact magento@adyen.com.]]></tooltip>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
<config_path>payment/adyen_cc/enable_moto</config_path>
</field>
</group>
<group id="adyen_cc_country_specific" translate="label" showInDefault="1" showInWebsite="1" sortOrder="200"> <group id="adyen_cc_country_specific" translate="label" showInDefault="1" showInWebsite="1" sortOrder="200">
<label>Country Specific Settings</label> <label>Country Specific Settings</label>
<frontend_model>Magento\Config\Block\System\Config\Form\Fieldset</frontend_model> <frontend_model>Magento\Config\Block\System\Config\Form\Fieldset</frontend_model>
......
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>
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
--> -->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Adyen_Payment" setup_version="1.2.1"> <module name="Adyen_Payment" setup_version="1.3.0">
<sequence> <sequence>
<module name="Magento_Sales"/> <module name="Magento_Sales"/>
<module name="Magento_Quote"/> <module name="Magento_Quote"/>
......
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