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; } }