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

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

Merge pull request #38 from Adyen/develop

Merge branch 'develop'
parents f38de7c3 866863ba
......@@ -193,10 +193,10 @@ interface NotificationInterface
public function setAmountValue($amountValue);
/**
* Gets the AmountValue for the notification.
*
* @return int|null AmountValue.
*/
* Gets the AmountValue for the notification.
*
* @return int|null AmountValue.
*/
public function getAmountCurency();
/**
......
......@@ -30,20 +30,33 @@ class Version extends \Magento\Config\Block\System\Config\Form\Field
{
/**
* Contains list of modules
*
* @var \Magento\Framework\Module\ModuleListInterface
*/
protected $_moduleList;
/**
* Version constructor.
* @param \Magento\Framework\Module\ModuleListInterface $moduleList
* @param \Magento\Backend\Block\Template\Context $context
* @param array $data
*/
public function __construct(
\Magento\Framework\Module\ModuleListInterface $moduleList,
\Magento\Backend\Block\Template\Context $context,
array $data = []
)
{
) {
parent::__construct($context, $data);
$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)
{
return (string) $this->_moduleList->getOne("Adyen_Payment")['setup_version'];
......
......@@ -23,7 +23,7 @@
namespace Adyen\Payment\Block\Form;
class Cc extends \Magento\Payment\Block\Form
class Cc extends \Magento\Payment\Block\Form\Cc
{
/**
* @var string
......@@ -43,22 +43,42 @@ class Cc extends \Magento\Payment\Block\Form
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\Payment\Model\Config $paymentConfig
* @param \Adyen\Payment\Helper\Data $adyenHelper
* @param \Magento\Checkout\Model\Session $checkoutSession
* @param array $data
*/
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Payment\Model\Config $paymentConfig,
\Adyen\Payment\Helper\Data $adyenHelper,
\Magento\Checkout\Model\Session $checkoutSession,
array $data = []
) {
parent::__construct($context, $data);
$this->_paymentConfig = $paymentConfig;
parent::__construct($context, $paymentConfig);
$this->_adyenHelper = $adyenHelper;
$this->_appState = $context->getAppState();
$this->_checkoutSession = $checkoutSession;
}
/**
* @return mixed
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function getCsePublicKey()
{
// get storeId for admin
......@@ -77,62 +97,6 @@ class Cc extends \Magento\Payment\Block\Form
}
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
*/
public function hasVerification()
{
return true;
}
/**
* Whether switch/solo card type available
*
* @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;
}
/**
* 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;
// 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();
$enableMoto = $this->_adyenHelper->getAdyenCcConfigDataFlag('enable_moto', $store->getId());
if($enableMoto) {
return false;
}
}
$years = [0 => __('Year')] + $years;
return $years;
}
/**
* Render block HTML
*
* @return string
*/
protected function _toHtml()
{
$this->_eventManager->dispatch('payment_form_block_to_html_before', ['block' => $this]);
return parent::_toHtml();
return true;
}
}
\ No newline at end of file
......@@ -32,10 +32,12 @@ class AbstractInfo extends \Magento\Payment\Block\Info
* @var \Adyen\Payment\Helper\Data
*/
protected $_adyenHelper;
/**
* Constructor
*
* AbstractInfo constructor.
* @param \Adyen\Payment\Helper\Data $adyenHelper
* @param Template\Context $context
* @param array $data
*/
......@@ -49,12 +51,19 @@ class AbstractInfo extends \Magento\Payment\Block\Info
$this->_adyenHelper = $adyenHelper;
}
/**
* @return mixed
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function getAdyenPspReference()
{
return $this->getInfo()->getAdyenPspReference();
}
/**
* @return mixed
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function isDemoMode()
{
$storeId = $this->getInfo()->getOrder()->getStoreId();
......
......@@ -30,6 +30,11 @@ class Hpp extends AbstractInfo
*/
protected $_template = 'Adyen_Payment::info/adyen_hpp.phtml';
/**
* Check if Payment method selection is configured on Adyen or Magento
*
* @return mixed
*/
public function isPaymentSelectionOnAdyen()
{
return $this->_adyenHelper->getAdyenHppConfigDataFlag('payment_selection_on_adyen');
......
......@@ -40,6 +40,8 @@ class Pos extends \Magento\Payment\Block\Form
protected $_order;
/**
* Pos constructor.
*
* @param \Magento\Framework\View\Element\Template\Context $context
* @param array $data
* @param \Magento\Sales\Model\OrderFactory $orderFactory
......@@ -50,20 +52,24 @@ class Pos extends \Magento\Payment\Block\Form
array $data = [],
\Magento\Sales\Model\OrderFactory $orderFactory,
\Magento\Checkout\Model\Session $checkoutSession
)
{
) {
$this->_orderFactory = $orderFactory;
$this->_checkoutSession = $checkoutSession;
parent::__construct($context, $data);
$this->_getOrder();
}
/**
* @return $this
*/
public function _prepareLayout()
{
return parent::_prepareLayout();
}
/**
* @return string
*/
public function getLaunchLink()
{
$result = "";
......
......@@ -40,6 +40,8 @@ class Redirect extends \Magento\Payment\Block\Form
protected $_order;
/**
* Redirect constructor.
*
* @param \Magento\Framework\View\Element\Template\Context $context
* @param array $data
* @param \Magento\Sales\Model\OrderFactory $orderFactory
......@@ -50,8 +52,7 @@ class Redirect extends \Magento\Payment\Block\Form
array $data = [],
\Magento\Sales\Model\OrderFactory $orderFactory,
\Magento\Checkout\Model\Session $checkoutSession
)
{
) {
$this->_orderFactory = $orderFactory;
$this->_checkoutSession = $checkoutSession;
parent::__construct($context, $data);
......@@ -59,11 +60,17 @@ class Redirect extends \Magento\Payment\Block\Form
}
/**
* @return $this
*/
public function _prepareLayout()
{
return parent::_prepareLayout();
}
/**
* @return string
*/
public function getFormUrl()
{
$result = "";
......@@ -81,6 +88,9 @@ class Redirect extends \Magento\Payment\Block\Form
return $result;
}
/**
* @return array
*/
public function getFormFields()
{
$result = array();
......
......@@ -26,7 +26,11 @@ namespace Adyen\Payment\Block\Redirect;
class Validate3d extends \Magento\Payment\Block\Form
{
/**
* @var \Magento\Sales\Model\OrderFactory
*/
protected $_orderFactory;
/**
* @var \Magento\Checkout\Model\Session
*/
......@@ -38,6 +42,8 @@ class Validate3d extends \Magento\Payment\Block\Form
protected $_order;
/**
* Validate3d constructor.
*
* @param \Magento\Framework\View\Element\Template\Context $context
* @param array $data
* @param \Magento\Sales\Model\OrderFactory $orderFactory
......@@ -48,15 +54,13 @@ class Validate3d extends \Magento\Payment\Block\Form
array $data = [],
\Magento\Sales\Model\OrderFactory $orderFactory,
\Magento\Checkout\Model\Session $checkoutSession
)
{
) {
$this->_orderFactory = $orderFactory;
$this->_checkoutSession = $checkoutSession;
parent::__construct($context, $data);
$this->_getOrder();
}
/**
* Get order object
*
......@@ -81,21 +85,33 @@ class Validate3d extends \Magento\Payment\Block\Form
return $this->_checkoutSession;
}
/**
* @return mixed
*/
public function getIssuerUrl()
{
return $this->_order->getPayment()->getAdditionalInformation('issuerUrl');
}
/**
* @return mixed
*/
public function getPaReq()
{
return $this->_order->getPayment()->getAdditionalInformation('paRequest');
}
/**
* @return mixed
*/
public function getMd()
{
return $this->_order->getPayment()->getAdditionalInformation('md');
}
/**
* @return string
*/
public function getTermUrl()
{
return $this->getUrl('adyen/process/validate3d');
......
......@@ -36,7 +36,10 @@ class Cron extends \Magento\Framework\App\Action\Action
* @var \Magento\Framework\Controller\Result\RawFactory
*/
protected $_resultFactory;
/**
* Cron constructor.
*
* @param \Magento\Framework\App\Action\Context $context
*/
public function __construct(
......@@ -46,8 +49,9 @@ class Cron extends \Magento\Framework\App\Action\Action
$this->_objectManager = $context->getObjectManager();
$this->_resultFactory = $context->getResultFactory();
}
/**
* @throws \Magento\Framework\Exception\LocalizedException
* Process Notification from Cron
*/
public function execute()
{
......
This diff is collapsed.
......@@ -36,7 +36,6 @@ class Redirect extends \Magento\Framework\App\Action\Action
*/
protected $_checkoutSession;
/**
* @var \Magento\Sales\Model\Order
*/
......@@ -47,7 +46,6 @@ class Redirect extends \Magento\Framework\App\Action\Action
*/
protected $_orderFactory;
/**
* @param \Magento\Framework\App\Action\Context $context
*/
......@@ -57,7 +55,6 @@ class Redirect extends \Magento\Framework\App\Action\Action
parent::__construct($context);
}
/**
* Return checkout session object
*
......@@ -68,6 +65,9 @@ class Redirect extends \Magento\Framework\App\Action\Action
return $this->_checkoutSession;
}
/**
* Set redirect
*/
public function execute()
{
$this->_view->loadLayout();
......@@ -98,14 +98,19 @@ class Redirect extends \Magento\Framework\App\Action\Action
return $this->_objectManager->get('Magento\Checkout\Model\Session');
}
/**
* @return mixed
*/
protected function _getQuote()
{
return $this->_objectManager->get('Magento\Quote\Model\Quote');
}
/**
* @return mixed
*/
protected function _getQuoteManagement()
{
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
*/
protected $_orderFactory;
/**
* @param \Magento\Framework\App\Action\Context $context
*/
......@@ -57,7 +56,6 @@ class RedirectPos extends \Magento\Framework\App\Action\Action
parent::__construct($context);
}
/**
* Return checkout session object
*
......@@ -98,14 +96,19 @@ class RedirectPos extends \Magento\Framework\App\Action\Action
return $this->_objectManager->get('Magento\Checkout\Model\Session');
}
/**
* @return mixed
*/
protected function _getQuote()
{
return $this->_objectManager->get('Magento\Quote\Model\Quote');
}
/**
* @return mixed
*/
protected function _getQuoteManagement()
{
return $this->_objectManager->get('\Magento\Quote\Model\QuoteManagement');
}
}
\ No newline at end of file
......@@ -23,8 +23,7 @@
namespace Adyen\Payment\Controller\Process;
use Magento\Customer\Api\AccountManagementInterface;
use Magento\Customer\Api\CustomerRepositoryInterface;
use \Adyen\Payment\Model\Notification;
class Result extends \Magento\Framework\App\Action\Action
{
......@@ -59,6 +58,8 @@ class Result extends \Magento\Framework\App\Action\Action
protected $_adyenLogger;
/**
* Result constructor.
*
* @param \Magento\Framework\App\Action\Context $context
* @param \Adyen\Payment\Helper\Data $adyenHelper
* @param \Magento\Sales\Model\OrderFactory $orderFactory
......@@ -82,12 +83,15 @@ class Result extends \Magento\Framework\App\Action\Action
parent::__construct($context);
}
/**
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function execute()
{
$response = $this->getRequest()->getParams();
$this->_adyenLogger->addAdyenResult(print_r($response, true));
if($response) {
if ($response) {
$result = $this->validateResponse($response);
if ($result) {
......@@ -104,6 +108,9 @@ class Result extends \Magento\Framework\App\Action\Action
}
}
/**
* @param $response
*/
protected function _cancel($response)
{
$session = $this->_session;
......@@ -115,24 +122,32 @@ class Result extends \Magento\Framework\App\Action\Action
$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'));
} else {
$this->messageManager->addError(__('Your payment failed, Please try again later'));
}
}
/**
* @param $response
* @return bool
* @throws \Magento\Framework\Exception\LocalizedException
*/
protected function validateResponse($response)
{
$result = true;
$this->_adyenLogger->addAdyenResult('Processing ResultUrl');
$storeId = null;
if (empty($response)) {
$this->_adyenLogger->addAdyenResult('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'));
$this->_adyenLogger->addAdyenResult(
'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
......@@ -143,7 +158,7 @@ class Result extends \Magento\Framework\App\Action\Action
$incrementId = $response['merchantReference'];
if($incrementId) {
if ($incrementId) {
$order = $this->_getOrder($incrementId);
if ($order->getId()) {
......@@ -155,9 +170,6 @@ class Result extends \Magento\Framework\App\Action\Action
return $response['handled_response'];
}
// set StoreId for retrieving debug log setting
$storeId = $order->getStoreId();
// update the order
$result = $this->_validateUpdateOrder($order, $response);
......@@ -167,17 +179,22 @@ class Result extends \Magento\Framework\App\Action\Action
]);
} 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 {
throw new \Magento\Framework\Exception\LocalizedException(__('Empty merchantReference'));
throw new \Magento\Framework\Exception\LocalizedException(
__('Empty merchantReference')
);
}
return $result;
}
/**
* @param $order
* @param $params
* @param $response
* @return bool
*/
protected function _validateUpdateOrder($order, $response)
{
......@@ -190,7 +207,9 @@ class Result extends \Magento\Framework\App\Action\Action
$pspReference = isset($response['pspReference']) ? trim($response['pspReference']) : '';
$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()
//->setStatus($status)
......@@ -201,28 +220,26 @@ class Result extends \Magento\Framework\App\Action\Action
$history->save();
// needed becuase then we need to save $order objects
// needed because then we need to save $order objects
$order->setAdyenResulturlEventCode($authResult);
switch ($authResult) {
case \Adyen\Payment\Model\Notification::AUTHORISED:
case \Adyen\Payment\Model\Notification::PENDING:
case Notification::AUTHORISED:
case Notification::PENDING:
// do nothing wait for the notification
$result = true;
$this->_adyenLogger->addAdyenResult('Do nothing wait for the notification');
break;
case \Adyen\Payment\Model\Notification::CANCELLED:
case Notification::CANCELLED:
$this->_adyenLogger->addAdyenResult('Cancel or Hold the order');
$result = false;
break;
case \Adyen\Payment\Model\Notification::REFUSED:
case Notification::REFUSED:
// if refused there will be a AUTHORIZATION : FALSE notification send only exception is idea
$this->_adyenLogger->addAdyenResult('Cancel or Hold the order');
$result = false;
break;
case \Adyen\Payment\Model\Notification::ERROR:
case Notification::ERROR:
//attempt to hold/cancel
$this->_adyenLogger->addAdyenResult('Cancel or Hold the order');
$result = false;
......@@ -235,12 +252,12 @@ class Result extends \Magento\Framework\App\Action\Action
return $result;
}
/**
* @desc Authenticate using sha1 Merchant signature
* @see success Action during checkout
* @param Varien_Object $response
* Authenticate using sha1 Merchant signature
*
* @param $response
* @return bool
*/
protected function _authenticate($response) {
......@@ -254,10 +271,10 @@ class Result extends \Magento\Framework\App\Action\Action
ksort($response, SORT_STRING);
// Generate the signing data string
$signData = implode(":",array_map(array($this, 'escapeString'),array_merge(array_keys($response), array_values($response))));
$merchantSig = base64_encode(hash_hmac('sha256',$signData,pack("H*" , $hmacKey),true));
$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));
if (strcmp($merchantSig, $merchantSigNotification) === 0) {
return true;
......@@ -265,16 +282,23 @@ class Result extends \Magento\Framework\App\Action\Action
return false;
}
/*
* @desc The character escape function is called from the array_map function in _signRequestParams
* $param $val
* return string
*/
/**
* The character escape function is called from the array_map function in _signRequestParams
*
* @param $val
* @return mixed
*/
protected function escapeString($val)
{
return str_replace(':','\\:',str_replace('\\','\\\\',$val));
}
/**
* Get order based on increment_id
*
* @param $incrementId
* @return \Magento\Sales\Model\Order
*/
protected function _getOrder($incrementId)
{
if (!$this->_order) {
......@@ -282,5 +306,4 @@ class Result extends \Magento\Framework\App\Action\Action
}
return $this->_order;
}
}
\ No newline at end of file
......@@ -57,6 +57,8 @@ class ResultPos extends \Magento\Framework\App\Action\Action
protected $_adyenLogger;
/**
* ResultPos constructor.
*
* @param \Magento\Framework\App\Action\Context $context
* @param \Adyen\Payment\Helper\Data $adyenHelper
* @param \Magento\Sales\Model\OrderFactory $orderFactory
......@@ -80,6 +82,9 @@ class ResultPos extends \Magento\Framework\App\Action\Action
parent::__construct($context);
}
/**
* Return result
*/
public function execute()
{
$response = $this->getRequest()->getParams();
......@@ -97,23 +102,27 @@ class ResultPos extends \Magento\Framework\App\Action\Action
}
}
/**
* @param $response
* @return bool
*/
private function _validateResponse($response)
{
$result = false;
if($response != null && $response['result'] != "" && $this->_validateChecksum($response)) {
if ($response != null && $response['result'] != "" && $this->_validateChecksum($response)) {
$incrementId = $response['merchantReference'];
$responseResult = $response['result'];
if($incrementId) {
if ($incrementId) {
$order = $this->_getOrder($incrementId);
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');
......@@ -163,6 +172,12 @@ class ResultPos extends \Magento\Framework\App\Action\Action
return $result;
}
/**
* Validate checksum from result parameters
*
* @param $response
* @return bool
*/
protected function _validateChecksum($response)
{
$checksum = $response['cs'];
......@@ -171,51 +186,46 @@ class ResultPos extends \Magento\Framework\App\Action\Action
$currency = $response['originalCustomCurrency'];
$sessionId = $response['sessionId'];
// for android sessionis is with low i
if($sessionId == "") {
if ($sessionId == "") {
$sessionId = $response['sessionid'];
}
// calculate amount checksum
$amount_checksum = 0;
$amountChecksum = 0;
$amountLength = strlen($amount);
for($i=0;$i<$amountLength;$i++)
{
for ($i=0; $i<$amountLength; $i++) {
// ASCII value use ord
$checksumCalc = ord($amount[$i]) - 48;
$amount_checksum += $checksumCalc;
$amountChecksum += $checksumCalc;
}
$currency_checksum = 0;
$currencyChecksum = 0;
$currencyLength = strlen($currency);
for($i=0;$i<$currencyLength;$i++)
{
for ($i=0; $i<$currencyLength; $i++) {
$checksumCalc = ord($currency[$i]) - 64;
$currency_checksum += $checksumCalc;
$currencyChecksum += $checksumCalc;
}
$result_checksum = 0;
$resultChecksum = 0;
$resultLength = strlen($result);
for($i=0;$i<$resultLength;$i++)
{
for ($i=0; $i<$resultLength; $i++) {
$checksumCalc = ord($result[$i]) - 64;
$result_checksum += $checksumCalc;
$resultChecksum += $checksumCalc;
}
$sessionId_checksum = 0;
$sessionIdChecksum = 0;
$sessionIdLength = strlen($sessionId);
for($i=0;$i<$sessionIdLength;$i++)
{
for ($i=0; $i<$sessionIdLength; $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
if($total_result_checksum == $checksum) {
if ($totalResultChecksum == $checksum) {
$this->_adyenLogger->addAdyenResult('Checksum is valid');
return true;
}
......@@ -223,9 +233,13 @@ class ResultPos extends \Magento\Framework\App\Action\Action
return false;
}
/**
* @param $ascii
* @return int
*/
protected function _getAscii2Int($ascii)
{
if (is_numeric($ascii)){
if (is_numeric($ascii)) {
$int = ord($ascii) - 48;
} else {
$int = ord($ascii) - 64;
......@@ -233,6 +247,10 @@ class ResultPos extends \Magento\Framework\App\Action\Action
return $int;
}
/**
* @param $incrementId
* @return \Magento\Sales\Model\Order
*/
protected function _getOrder($incrementId)
{
if (!$this->_order) {
......@@ -241,6 +259,9 @@ class ResultPos extends \Magento\Framework\App\Action\Action
return $this->_order;
}
/**
* @param $response
*/
protected function _cancel($response)
{
$session = $this->_session;
......@@ -250,15 +271,15 @@ class ResultPos extends \Magento\Framework\App\Action\Action
$order = $this->_order;
if($order) {
if ($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'));
} else {
$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
protected $_adyenHelper;
/**
* Validate3d constructor.
*
* @param \Magento\Framework\App\Action\Context $context
* @param \Adyen\Payment\Logger\AdyenLogger $adyenLogger
* @param \Adyen\Payment\Helper\Data $adyenHelper
......@@ -60,6 +62,9 @@ class Validate3d extends \Magento\Framework\App\Action\Action
$this->_adyenHelper = $adyenHelper;
}
/**
* Validate 3D secure payment
*/
public function execute()
{
$active = null;
......@@ -67,19 +72,18 @@ class Validate3d extends \Magento\Framework\App\Action\Action
// check if 3d is active
$order = $this->_getOrder();
if($order->getPayment()) {
if ($order->getPayment()) {
$active = $order->getPayment()->getAdditionalInformation('3dActive');
}
// check if 3D secure is active. If not just go to success page
if($active) {
if ($active) {
$this->_adyenLogger->addAdyenResult("3D secure is active");
// check if it is already processed
if ($this->getRequest()->isPost()) {
$this->_adyenLogger->addAdyenResult("Process 3D secure payment");
$requestMD = $this->getRequest()->getPost('MD');
$requestPaRes = $this->getRequest()->getPost('PaRes');
$md = $order->getPayment()->getAdditionalInformation('md');
......@@ -98,15 +102,16 @@ class Validate3d extends \Magento\Framework\App\Action\Action
if ($result == 'Authorised') {
$order->addStatusHistoryComment(__('3D-secure validation was successful'))->save();
$this->_redirect('checkout/onepage/success');
}
else {
} else {
$order->addStatusHistoryComment(__('3D-secure validation was unsuccessful.'))->save();
$this->_adyenHelper->cancelOrder($order);
}
}
} else {
$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->getLayout()->initMessages();
......
......@@ -36,39 +36,34 @@ class Data extends AbstractHelper
*/
protected $_encryptor;
/**
* @var \Magento\Payment\Model\Config
*/
protected $_config;
/**
* @var \Magento\Framework\Config\DataInterface
*/
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(
\Magento\Framework\App\Helper\Context $context,
\Magento\Framework\Encryption\EncryptorInterface $encryptor,
\Magento\Payment\Model\Config $config,
\Magento\Framework\Config\DataInterface $dataStorage
)
{
) {
parent::__construct($context);
$this->_encryptor = $encryptor;
$this->_config = $config;
$this->_dataStorage = $dataStorage;
}
/**
* @desc return recurring types for configuration setting
* @return array
*/
public function getRecurringTypes() {
public function getRecurringTypes()
{
return [
\Adyen\Payment\Model\RecurringType::ONECLICK => 'ONECLICK',
\Adyen\Payment\Model\RecurringType::ONECLICK_RECURRING => 'ONECLICK,RECURRING',
......@@ -80,7 +75,8 @@ class Data extends AbstractHelper
* @desc return recurring types for configuration setting
* @return array
*/
public function getModes() {
public function getModes()
{
return [
'1' => 'Test Mode',
'0' => 'Production Mode'
......@@ -157,6 +153,11 @@ class Data extends AbstractHelper
return number_format($amount, $format, '', '');
}
/**
* @param $amount
* @param $currency
* @return float
*/
public function originalAmount($amount, $currency)
{
// check the format
......@@ -206,14 +207,15 @@ class Data extends AbstractHelper
*/
public function getStreet($address)
{
if (empty($address)) return false;
if (empty($address)) {
return false;
}
$street = self::formatStreet($address->getStreet());
$streetName = $street['0'];
unset($street['0']);
// $streetNr = implode('',$street);
$streetNr = implode(' ',$street);
return (array('name' => $streetName, 'house_number' => $streetNr));
$streetNr = implode(' ', $street);
return (['name' => $streetName, 'house_number' => $streetNr]);
}
/**
......@@ -228,11 +230,11 @@ class Data extends AbstractHelper
return $street;
}
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']);
$position = $houseNumber['0']['1'];
$streeName = trim(substr($street['0'], 0, $position));
$street = array($streeName,$_houseNumber);
$streetName = trim(substr($street['0'], 0, $position));
$street = [$streetName, $_houseNumber];
}
return $street;
}
......@@ -389,7 +391,7 @@ class Data extends AbstractHelper
*/
public function getWsUsername()
{
if($this->isDemoMode()) {
if ($this->isDemoMode()) {
$wsUsername = trim($this->getAdyenAbstractConfigData('ws_username_test'));
} else {
$wsUsername = trim($this->getAdyenAbstractConfigData('ws_username_live'));
......@@ -403,7 +405,7 @@ class Data extends AbstractHelper
*/
public function getWsPassword()
{
if($this->isDemoMode()) {
if ($this->isDemoMode()) {
$wsPassword = $this->_encryptor->decrypt(trim($this->getAdyenAbstractConfigData('ws_password_test')));
} else {
$wsPassword = $this->_encryptor->decrypt(trim($this->getAdyenAbstractConfigData('ws_password_live')));
......@@ -417,7 +419,7 @@ class Data extends AbstractHelper
*/
public function getWsUrl()
{
if($this->isDemoMode()) {
if ($this->isDemoMode()) {
$url = $this->getAdyenAbstractConfigData('ws_url_test');
} else {
$url = $this->getAdyenAbstractConfigData('ws_url_live');
......@@ -441,7 +443,7 @@ class Data extends AbstractHelper
}
break;
default:
if($order->canCancel()) {
if ($order->canCancel()) {
$order->cancel()->save();
}
break;
......@@ -456,20 +458,22 @@ class Data extends AbstractHelper
*/
public function getMagentoCreditCartType($ccType)
{
$ccTypesMapper = $this->getCcTypesAltData();
if(isset($ccTypesMapper[$ccType])) {
if (isset($ccTypesMapper[$ccType])) {
$ccType = $ccTypesMapper[$ccType]['code'];
}
return $ccType;
}
/**
* @return array
*/
public function getCcTypesAltData()
{
$adyenCcTypes = $this->getAdyenCcTypes();
$types = array();
$types = [];
foreach ($adyenCcTypes as $key => $data) {
$types[$data['code_alt']] = $data;
$types[$data['code_alt']]['code'] = $key;
......@@ -477,6 +481,9 @@ class Data extends AbstractHelper
return $types;
}
/**
* @return mixed
*/
public function getAdyenCcTypes()
{
return $this->_dataStorage->get('adyen_credit_cards');
......@@ -499,6 +506,5 @@ class Data extends AbstractHelper
} else {
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
*
* @var array $levels Logging levels
*/
protected static $levels = array(
protected static $levels = [
100 => 'DEBUG',
101 => 'ADYEN_DEBUG',
200 => 'INFO',
......@@ -55,7 +55,7 @@ class AdyenLogger extends Logger
500 => 'CRITICAL',
550 => 'ALERT',
600 => 'EMERGENCY',
);
];
/**
* Adds a log record at the INFO level.
......@@ -86,7 +86,6 @@ class AdyenLogger extends Logger
return $this->addRecord(static::ADYEN_NOTIFICATION_CRONJOB, $message, $context);
}
/**
* Adds a log record.
*
......
......@@ -23,60 +23,10 @@
namespace Adyen\Payment\Logger\Handler;
use Magento\Framework\Filesystem\DriverInterface;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
use Magento\Framework\Logger\Handler\Base;
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
*
......
......@@ -29,32 +29,22 @@ use Magento\Payment\Helper\Data as PaymentHelper;
class AdyenCcConfigProvider extends CcGenericConfigProvider
{
/**
* @var Config
*/
protected $config;
/**
* @var string[]
*/
protected $methodCodes = [
protected $_methodCodes = [
\Adyen\Payment\Model\Method\Cc::METHOD_CODE
];
/**
* @var \Magento\Payment\Model\Method\AbstractMethod[]
*/
protected $methods = [];
/**
* @var PaymentHelper
*/
protected $paymentHelper;
protected $_paymentHelper;
/**
* @var \Adyen\Payment\Helper\Data
*/
protected $adyenHelper;
protected $_adyenHelper;
/**
* @var AdyenGenericConfig
......@@ -62,9 +52,12 @@ class AdyenCcConfigProvider extends CcGenericConfigProvider
protected $_genericConfig;
/**
* AdyenCcConfigProvider constructor.
*
* @param \Magento\Payment\Model\CcConfig $ccConfig
* @param PaymentHelper $paymentHelper
* @param \Adyen\Payment\Helper\Data $adyenHelper
* @param AdyenGenericConfig $genericConfig
*/
public function __construct(
\Magento\Payment\Model\CcConfig $ccConfig,
......@@ -72,32 +65,35 @@ class AdyenCcConfigProvider extends CcGenericConfigProvider
\Adyen\Payment\Helper\Data $adyenHelper,
\Adyen\Payment\Model\AdyenGenericConfig $genericConfig
) {
parent::__construct($ccConfig, $paymentHelper, $this->methodCodes);
$this->adyenHelper = $adyenHelper;
parent::__construct($ccConfig, $paymentHelper, $this->_methodCodes);
$this->_paymentHelper = $paymentHelper;
$this->_adyenHelper = $adyenHelper;
$this->_genericConfig = $genericConfig;
}
/**
* @return array
*/
public function getConfig()
{
$config = parent::getConfig();
$demoMode = $this->adyenHelper->getAdyenAbstractConfigDataFlag('demo_mode');
$demoMode = $this->_adyenHelper->getAdyenAbstractConfigDataFlag('demo_mode');
if($demoMode) {
$cseKey = $this->adyenHelper->getAdyenCcConfigData('cse_publickey_test');
if ($demoMode) {
$cseKey = $this->_adyenHelper->getAdyenCcConfigData('cse_publickey_test');
} 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;
if($recurringType == "ONECLICK" || $recurringType == "ONECLICK,RECURRING") {
if ($recurringType == "ONECLICK" || $recurringType == "ONECLICK,RECURRING") {
$canCreateBillingAgreement = true;
}
$config['payment'] ['adyenCc']['cseKey'] = $cseKey;
$config['payment'] ['adyenCc']['cseEnabled'] = $cseEnabled;
$config['payment'] ['adyenCc']['cseEnabled'] = $cseEnabled;
......@@ -105,20 +101,21 @@ class AdyenCcConfigProvider extends CcGenericConfigProvider
$config['payment']['adyenCc']['canCreateBillingAgreement'] = $canCreateBillingAgreement;
// show logos turned on by default
if($this->_genericConfig->showLogos()) {
if ($this->_genericConfig->showLogos()) {
$config['payment']['adyenCc']['creditCardPaymentMethodIcon'] = $this->_getCreditCardPaymentMethodIcon();
}
return $config;
}
/**
* @return array|null
*/
protected function _getCreditCardPaymentMethodIcon()
{
$asset = $this->_genericConfig->createAsset('Adyen_Payment::images/logos/img_trans.gif');
$placeholder = $this->_genericConfig->findRelativeSourceFilePath($asset);
$icon = null;
if ($placeholder) {
list($width, $height) = getimagesize($asset->getSourceFile());
$icon = [
......@@ -127,7 +124,6 @@ class AdyenCcConfigProvider extends CcGenericConfigProvider
'height' => $height
];
}
return $icon;
}
}
\ No newline at end of file
......@@ -34,17 +34,17 @@ class AdyenGenericConfig
/**
* @var Repository
*/
protected $assetRepo;
protected $_assetRepo;
/**
* @var RequestInterface
*/
protected $request;
protected $_request;
/**
* @var \Magento\Framework\View\Asset\Source
*/
protected $assetSource;
protected $_assetSource;
/**
* @var \Adyen\Payment\Helper\Data
......@@ -52,11 +52,12 @@ class AdyenGenericConfig
protected $_adyenHelper;
/**
* @param PaymentConfig $paymentConfig
* AdyenGenericConfig constructor.
*
* @param Repository $assetRepo
* @param RequestInterface $request
* @param UrlInterface $urlBuilder
* @param LoggerInterface $logger
* @param Source $assetSource
* @param \Adyen\Payment\Helper\Data $adyenHelper
*/
public function __construct(
Repository $assetRepo,
......@@ -64,9 +65,9 @@ class AdyenGenericConfig
Source $assetSource,
\Adyen\Payment\Helper\Data $adyenHelper
) {
$this->assetRepo = $assetRepo;
$this->request = $request;
$this->assetSource = $assetSource;
$this->_assetRepo = $assetRepo;
$this->_request = $request;
$this->_assetSource = $assetSource;
$this->_adyenHelper = $adyenHelper;
}
......@@ -79,21 +80,28 @@ class AdyenGenericConfig
*/
public function createAsset($fileId, array $params = [])
{
$params = array_merge(['_secure' => $this->request->isSecure()], $params);
return $this->assetRepo->createAsset($fileId, $params);
$params = array_merge(['_secure' => $this->_request->isSecure()], $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()
{
$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 false;
}
}
\ No newline at end of file
......@@ -27,69 +27,51 @@ use Magento\Payment\Helper\Data as PaymentHelper;
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[]
*/
protected $methodCodes = [
protected $_methodCodes = [
\Adyen\Payment\Model\Method\Cc::METHOD_CODE,
\Adyen\Payment\Model\Method\Hpp::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
* @param \Magento\Checkout\Model\Session $session
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
* AdyenGenericConfigProvider constructor.
*
* @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
*/
public function __construct(
\Magento\Framework\Model\Context $context,
\Magento\Checkout\Model\Session $session,
\Magento\Store\Model\StoreManagerInterface $storeManager,
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
) {
$this->_appState = $context->getAppState();
$this->_session = $session;
$this->_storeManager = $storeManager;
$this->_paymentHelper = $paymentHelper;
$this->_localeResolver = $localeResolver;
$this->_config = $config;
$this->_adyenHelper = $adyenHelper;
$this->_adyenLogger = $adyenLogger;
$this->_genericConfig = $genericConfig;
foreach ($this->methodCodes as $code) {
$this->methods[$code] = $this->_paymentHelper->getMethodInstance($code);
foreach ($this->_methodCodes as $code) {
$this->_methods[$code] = $this->_paymentHelper->getMethodInstance($code);
}
}
/**
* Define foreach payment methods the RedirectUrl
*
......@@ -101,8 +83,8 @@ class AdyenGenericConfigProvider implements ConfigProviderInterface
'payment' => []
];
foreach ($this->methodCodes as $code) {
if ($this->methods[$code]->isAvailable()) {
foreach ($this->_methodCodes as $code) {
if ($this->_methods[$code]->isAvailable()) {
$config['payment'][$code] = [
'redirectUrl' => $this->getMethodRedirectUrl($code)
......@@ -111,13 +93,11 @@ class AdyenGenericConfigProvider implements ConfigProviderInterface
}
// show logos turned on by default
if($this->_genericConfig->showLogos()) {
if ($this->_genericConfig->showLogos()) {
$config['payment']['adyen']['showLogo'] = true;
} else {
$config['payment']['adyen']['showLogo'] = false;
}
return $config;
}
......@@ -129,6 +109,6 @@ class AdyenGenericConfigProvider implements ConfigProviderInterface
*/
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
/**
* @var string[]
*/
protected $methodCodes = [
protected $_methodCodes = [
\Adyen\Payment\Model\Method\Oneclick::METHOD_CODE
];
......@@ -86,11 +86,18 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
*/
protected $_genericConfig;
/**
* AdyenOneclickConfigProvider constructor.
*
* @param \Magento\Framework\Model\Context $context
* @param \Magento\Payment\Model\CcConfig $ccConfig
* @param PaymentHelper $paymentHelper
* @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(
\Magento\Framework\Model\Context $context,
......@@ -103,7 +110,7 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Adyen\Payment\Model\AdyenGenericConfig $genericConfig
) {
parent::__construct($ccConfig, $paymentHelper, $this->methodCodes);
parent::__construct($ccConfig, $paymentHelper, $this->_methodCodes);
$this->_paymentHelper = $paymentHelper;
$this->_adyenHelper = $adyenHelper;
$this->_billingAgreementCollectionFactory = $billingAgreementCollectionFactory;
......@@ -114,13 +121,16 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
$this->_genericConfig = $genericConfig;
}
/**
* @return array
*/
public function getConfig()
{
$config = parent::getConfig();
$demoMode = $this->_adyenHelper->getAdyenAbstractConfigDataFlag('demo_mode');
if($demoMode) {
if ($demoMode) {
$cseKey = $this->_adyenHelper->getAdyenCcConfigData('cse_publickey_test');
} else {
$cseKey = $this->_adyenHelper->getAdyenCcConfigData('cse_publickey_live');
......@@ -130,26 +140,24 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
$recurringType = $this->_adyenHelper->getAdyenAbstractConfigData('recurring_type');
$canCreateBillingAgreement = false;
if($recurringType == "ONECLICK" || $recurringType == "ONECLICK,RECURRING") {
if ($recurringType == "ONECLICK" || $recurringType == "ONECLICK,RECURRING") {
$canCreateBillingAgreement = true;
}
$config['payment'] ['adyenOneclick']['cseKey'] = $cseKey;
$config['payment'] ['adyenOneclick']['cseEnabled'] = $cseEnabled;
$config['payment'] ['adyenOneclick']['cseEnabled'] = $cseEnabled;
$config['payment']['adyenOneclick']['generationTime'] = date("c");
$config['payment']['adyenOneclick']['canCreateBillingAgreement'] = $canCreateBillingAgreement;
foreach ($this->methodCodes as $code) {
foreach ($this->_methodCodes as $code) {
if ($this->methods[$code]->isAvailable()) {
$recurringContractType = $this->_getRecurringContractType();
$config['payment'] ['adyenOneclick']['billingAgreements'] = $this->getAdyenOneclickPaymentMethods();
$config['payment'] ['adyenOneclick']['recurringContractType'] = $recurringContractType;
if($recurringContractType == \Adyen\Payment\Model\RecurringType::ONECLICK) {
if ($recurringContractType == \Adyen\Payment\Model\RecurringType::ONECLICK) {
$config['payment'] ['adyenOneclick']['hasCustomerInteraction'] = true;
} else {
$config['payment'] ['adyenOneclick']['hasCustomerInteraction'] = false;
......@@ -159,16 +167,15 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
return $config;
}
/**
* @return array
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function getAdyenOneclickPaymentMethods()
{
$billingAgreements = [];
if ($this->_customerSession->isLoggedIn()) {
$customerId = $this->_customerSession->getCustomerId();
// is admin?
if ($this->_appState->getAreaCode() === \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE) {
//retrieve storeId from quote
......@@ -190,29 +197,31 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
$agreementData = $billingAgreement->getAgreementData();
// no agreementData and contractType then ignore
if((!is_array($agreementData)) || (!isset($agreementData['contractTypes']))) {
if ((!is_array($agreementData)) || (!isset($agreementData['contractTypes']))) {
continue;
}
// check if contractType is supporting the selected contractType for OneClick payments
$allowedContractTypes = $agreementData['contractTypes'];
if(in_array($recurringPaymentType, $allowedContractTypes)) {
if (in_array($recurringPaymentType, $allowedContractTypes)) {
// check if AgreementLabel is set and if contract has an recurringType
if($billingAgreement->getAgreementLabel()) {
if ($billingAgreement->getAgreementLabel()) {
$data = ['reference_id' => $billingAgreement->getReferenceId(),
'agreement_label' => $billingAgreement->getAgreementLabel(),
'agreement_data' => $agreementData
];
if($this->_genericConfig->showLogos()) {
if ($this->_genericConfig->showLogos()) {
$logoName = $agreementData['variant'];
// for Ideal use sepadirectdebit because it is
if($agreementData['variant'] == 'ideal') {
if ($agreementData['variant'] == 'ideal') {
$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);
$icon = null;
......@@ -225,9 +234,7 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
];
}
$data['logo'] = $icon;
}
$billingAgreements[] = $data;
}
}
......@@ -236,6 +243,9 @@ class AdyenOneclickConfigProvider extends CcGenericConfigProvider
return $billingAgreements;
}
/**
* @return mixed
*/
protected function _getRecurringContractType()
{
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
*/
private $_adyenHelper;
/**
* Agreement constructor.
*
* @param \Adyen\Payment\Helper\Data $adyenHelper
* @param \Magento\Framework\Model\Context $context
* @param \Magento\Framework\Registry $registry
* @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\Data\Collection\AbstractDb|null $resourceCollection
* @param \Adyen\Payment\Helper\Data $adyenHelper
* @param array $data
*/
public function __construct(
......@@ -51,10 +54,16 @@ class Agreement extends \Magento\Paypal\Model\Billing\Agreement
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
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;
}
......@@ -68,7 +77,10 @@ class Agreement extends \Magento\Paypal\Model\Billing\Agreement
return $this->getCustomerId();
}
/**
* @param $data
* @return $this
*/
public function parseRecurringContractData($data)
{
$this
......@@ -118,6 +130,10 @@ class Agreement extends \Magento\Paypal\Model\Billing\Agreement
return $this;
}
/**
* @param $data
* @return $this
*/
public function setAgreementData($data)
{
if (is_array($data)) {
......@@ -130,6 +146,9 @@ class Agreement extends \Magento\Paypal\Model\Billing\Agreement
return $this;
}
/**
* @return mixed
*/
public function getAgreementData()
{
return json_decode($this->getData('agreement_data'), true);
......
......@@ -28,7 +28,8 @@ namespace Adyen\Payment\Model\Config;
class Converter implements \Magento\Framework\Config\ConverterInterface
{
/**
* {@inheritdoc}
* @param \DOMDocument $source
* @return array
*/
public function convert($source)
{
......@@ -91,8 +92,6 @@ class Converter implements \Magento\Framework\Config\ConverterInterface
return $left['order'] - $right['order'];
}
/**
* Convert methods xml tree to array
*
......
......@@ -35,63 +35,4 @@ class Reader extends \Magento\Framework\Config\Reader\Filesystem
protected $_idAttributes = [
'/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;
class CaptureMode implements \Magento\Framework\Option\ArrayInterface
{
/**
* @var \Magento\Sales\Model\Order\Config
*/
protected $_orderConfig;
/**
* @var \Adyen\Payment\Helper\Data
*/
......@@ -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
*/
public function __construct(
\Magento\Sales\Model\Order\Config $orderConfig,
\Adyen\Payment\Helper\Data $adyenHelper
)
{
$this->_orderConfig = $orderConfig;
) {
$this->_adyenHelper = $adyenHelper;
}
......
......@@ -26,26 +26,19 @@ namespace Adyen\Payment\Model\Config\Source;
class DemoMode implements \Magento\Framework\Option\ArrayInterface
{
/**
* @var \Magento\Sales\Model\Order\Config
*/
protected $_orderConfig;
/**
* @var \Adyen\Payment\Helper\Data
*/
protected $_adyenHelper;
/**
* @param \Magento\Sales\Model\Order\Config $orderConfig
* DemoMode constructor.
*
* @param \Adyen\Payment\Helper\Data $adyenHelper
*/
public function __construct(
\Magento\Sales\Model\Order\Config $orderConfig,
\Adyen\Payment\Helper\Data $adyenHelper
)
{
$this->_orderConfig = $orderConfig;
) {
$this->_adyenHelper = $adyenHelper;
}
......
......@@ -26,11 +26,6 @@ namespace Adyen\Payment\Model\Config\Source;
class PaymentRoutine implements \Magento\Framework\Option\ArrayInterface
{
/**
* @var \Magento\Sales\Model\Order\Config
*/
protected $_orderConfig;
/**
* @var \Adyen\Payment\Helper\Data
*/
......@@ -41,11 +36,8 @@ class PaymentRoutine implements \Magento\Framework\Option\ArrayInterface
* @param \Adyen\Payment\Helper\Data $adyenHelper
*/
public function __construct(
\Magento\Sales\Model\Order\Config $orderConfig,
\Adyen\Payment\Helper\Data $adyenHelper
)
{
$this->_orderConfig = $orderConfig;
) {
$this->_adyenHelper = $adyenHelper;
}
......
......@@ -27,26 +27,19 @@ class RecurringPaymentType implements \Magento\Framework\Option\ArrayInterface
{
const UNDEFINED_OPTION_LABEL = 'NONE';
/**
* @var \Magento\Sales\Model\Order\Config
*/
protected $_orderConfig;
/**
* @var \Adyen\Payment\Helper\Data
*/
protected $_adyenHelper;
/**
* @param \Magento\Sales\Model\Order\Config $orderConfig
* RecurringPaymentType constructor.
*
* @param \Adyen\Payment\Helper\Data $adyenHelper
*/
public function __construct(
\Magento\Sales\Model\Order\Config $orderConfig,
\Adyen\Payment\Helper\Data $adyenHelper
)
{
$this->_orderConfig = $orderConfig;
) {
$this->_adyenHelper = $adyenHelper;
}
......@@ -58,7 +51,8 @@ class RecurringPaymentType implements \Magento\Framework\Option\ArrayInterface
$recurringTypes = $this->_adyenHelper->getRecurringTypes();
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];
}
}
......
......@@ -26,27 +26,21 @@ namespace Adyen\Payment\Model\Config\Source;
class RecurringType implements \Magento\Framework\Option\ArrayInterface
{
const UNDEFINED_OPTION_LABEL = 'NONE';
/**
* @var \Magento\Sales\Model\Order\Config
*/
protected $_orderConfig;
/**
* @var \Adyen\Payment\Helper\Data
*/
protected $_adyenHelper;
/**
* @param \Magento\Sales\Model\Order\Config $orderConfig
* RecurringType constructor.
*
* @param \Adyen\Payment\Helper\Data $adyenHelper
*/
public function __construct(
\Magento\Sales\Model\Order\Config $orderConfig,
\Adyen\Payment\Helper\Data $adyenHelper
)
{
$this->_orderConfig = $orderConfig;
$this->_adyenHelper = $adyenHelper;
}
......
......@@ -33,9 +33,9 @@ class RenderMode implements \Magento\Framework\Option\ArrayInterface
*/
public function toOptionArray()
{
return array(
array('value' => self::MODE_TITLE, 'label' => __('Title')),
array('value' => self::MODE_TITLE_IMAGE, 'label' => __('Logo + Title')),
);
return [
['value' => self::MODE_TITLE, 'label' => __('Title')],
['value' => self::MODE_TITLE_IMAGE, 'label' => __('Logo + Title')]
];
}
}
......@@ -33,10 +33,10 @@ class SepaFlow implements \Magento\Framework\Option\ArrayInterface
*/
public function toOptionArray()
{
return array(
array('value' => self::SEPA_FLOW_SALE, 'label' => __('Sale')),
array('value' => self::SEPA_FLOW_AUTHCAP, 'label' => __('Auth/Cap')),
);
return [
['value' => self::SEPA_FLOW_SALE, 'label' => __('Sale')],
['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
* @var bool
*/
protected $_isGateway = false;
/**
* @var bool
*/
protected $_canAuthorize = false;
/**
* @var bool
*/
protected $_isInitializeNeeded = false;
/**
* Post request to gateway and return response
*
* @param Object $request
* @param DataObject $request
* @param ConfigInterface $config
*
* @return DataObject
*
* @throws \Exception
*/
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
* @var string
*/
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
......@@ -63,18 +66,25 @@ class Oneclick extends \Adyen\Payment\Model\Method\Cc
public function assignData(\Magento\Framework\DataObject $data)
{
parent::assignData($data);
if (!$data instanceof \Magento\Framework\DataObject) {
$data = new \Magento\Framework\DataObject($data);
}
$additionalData = $data->getAdditionalData();
$infoInstance = $this->getInfoInstance();
// get from variant magento code for creditcard type and set this in ccType
$variant = $data['variant'];
$variant = $additionalData['variant'];
$ccType = $this->_adyenHelper->getMagentoCreditCartType($variant);
$infoInstance->setCcType($ccType);
// 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');
if($recurringPaymentType == \Adyen\Payment\Model\RecurringType::ONECLICK) {
if ($recurringPaymentType == \Adyen\Payment\Model\RecurringType::ONECLICK) {
$customerInteraction = true;
} else {
$customerInteraction = false;
......@@ -85,12 +95,16 @@ class Oneclick extends \Adyen\Payment\Model\Method\Cc
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)
{
$targetStatus = $agreement->getStatus();
if($targetStatus == \Magento\Paypal\Model\Billing\Agreement::STATUS_CANCELED) {
if ($targetStatus == \Magento\Paypal\Model\Billing\Agreement::STATUS_CANCELED) {
try {
$this->_paymentRequest->disableRecurringContract(
$agreement->getReferenceId(),
......@@ -102,5 +116,4 @@ class Oneclick extends \Adyen\Payment\Model\Method\Cc
}
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
const REPORT_AVAILABLE = "REPORT_AVAILABLE";
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(
\Magento\Framework\Model\Context $context,
\Magento\Framework\Registry $registry,
......@@ -60,7 +69,6 @@ class Notification extends \Magento\Framework\Model\AbstractModel
parent::__construct($context, $registry, $resource, $resourceCollection, $data);
}
/**
* Initialize resource model
*
......@@ -73,12 +81,14 @@ class Notification extends \Magento\Framework\Model\AbstractModel
/**
* Check if the Adyen Notification is already stored in the system
*
* @param $pspReference
* @param $event
* @param $eventCode
* @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);
return (empty($result)) ? false : true;
}
......@@ -263,17 +273,14 @@ class Notification extends \Magento\Framework\Model\AbstractModel
}
/**
* Sets Reason.
*
* @param string $reason
* @param $live
* @return $this
*/
public function setLive($live)
{
return $this->setData(self::LIVE, $live);
}
/**
* Gets the AdditionalData for the notification.
*
......@@ -357,6 +364,4 @@ class Notification extends \Magento\Framework\Model\AbstractModel
{
return $this->setData(self::UPDATED_AT, $timestamp);
}
}
\ No newline at end of file
......@@ -30,14 +30,19 @@ class RecurringType {
const ONECLICK_RECURRING = 'ONECLICK,RECURRING';
const RECURRING = 'RECURRING';
/**
* @var array
*/
protected $_allowedRecurringTypesForListRecurringCall = [
self::ONECLICK,
self::RECURRING
];
/**
* @return array
*/
public function getAllowedRecurringTypesForListRecurringCall()
{
return $this->_allowedRecurringTypesForListRecurringCall;
}
}
\ No newline at end of file
......@@ -26,13 +26,17 @@ namespace Adyen\Payment\Model\Resource;
class Notification extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
{
/**
* Construct
*/
public function _construct()
{
$this->_init('adyen_notification', 'entity_id');
}
/**
* @desc get Notification for duplicate check
* Get Notification for duplicate check
*
* @param $pspReference
* @param $eventCode
* @param $success
......@@ -47,5 +51,4 @@ class Notification extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
->where('notification.success=?', $success);
return $this->getConnection()->fetchAll($select);
}
}
\ No newline at end of file
......@@ -25,9 +25,11 @@ namespace Adyen\Payment\Model\Resource\Notification;
class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
{
/**
* Construct
*/
public function _construct()
{
$this->_init('Adyen\Payment\Model\Notification', 'Adyen\Payment\Model\Resource\Notification');
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
......@@ -2,7 +2,7 @@
"name": "adyen/module-payment",
"description": "Official Magento2 Plugin to connect to Payment Service Provider Adyen.",
"type": "magento2-module",
"version": "1.2.1",
"version": "1.3.0",
"license": [
"OSL-3.0",
"AFL-3.0"
......
......@@ -40,6 +40,7 @@
<include path="Adyen_Payment::system/adyen_cc.xml"/>
<include path="Adyen_Payment::system/adyen_oneclick.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"/>
</group>
<group id="test" translate="label" type="text" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -31,6 +31,7 @@
<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_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>
</arguments>
</type>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment