12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Signifyd\Model\PaymentMethodMapper;
- use Magento\Framework\Config\Dom\ValidationSchemaException;
- /**
- * Converts XML config file to payment methods mapping.
- */
- class XmlToArrayConfigConverter implements \Magento\Framework\Config\ConverterInterface
- {
- /**
- * Node type wrapper for magento and signifyd payment codes
- *
- * @var string
- */
- private static $paymentMethodNodeType = 'payment_method';
- /**
- * Node type for payment methods code
- *
- * @var string
- */
- private static $magentoCodeNodeType = 'magento_code';
- /**
- * Node type for Sygnifyd payment methods code
- *
- * @var string
- */
- private static $signifydCodeNodeType = 'signifyd_code';
- /**
- * @inheritdoc
- */
- public function convert($source)
- {
- $paymentMethods = $source->getElementsByTagName(self::$paymentMethodNodeType);
- $paymentsList = [];
- foreach ($paymentMethods as $paymentMethod) {
- $paymentsList += $this->getPaymentMethodMapping($paymentMethod);
- }
- return $paymentsList;
- }
- /**
- * Adds a payment method as key and a Sygnifyd payment method as value
- * in the payment list array
- *
- * @param \DOMElement $payment
- * @return array
- * @throws ValidationSchemaException
- */
- private function getPaymentMethodMapping(\DOMElement $payment)
- {
- $paymentMethodCode = $this->readSubnodeValue($payment, self::$magentoCodeNodeType);
- $signifyPaymentMethodCode = $this->readSubnodeValue($payment, self::$signifydCodeNodeType);
- return [$paymentMethodCode => $signifyPaymentMethodCode];
- }
- /**
- * Reads node value by node type
- *
- * @param \DOMElement $element
- * @param string $subNodeType
- * @return mixed
- * @throws ValidationSchemaException
- */
- private function readSubnodeValue(\DOMElement $element, $subNodeType)
- {
- $domList = $element->getElementsByTagName($subNodeType);
- if (empty($domList[0])) {
- throw new ValidationSchemaException(__('Only single entrance of "%1" node is required.', $subNodeType));
- }
- $subNodeValue = trim($domList[0]->nodeValue);
- if (!$subNodeValue) {
- throw new ValidationSchemaException(__('Not empty value for "%1" node is required.', $subNodeType));
- }
- return $subNodeValue;
- }
- }
|