/** * set payment specific request data * * @param \WirecardCEE_QPay_FrontendClient $init * @param \Magento\Checkout\Model\Cart $cart */ protected function setAdditionalRequestData($init, $cart) { if (!$this->_dataHelper->getConfigData('options/paymenttypesortorder')) { return; } $blacklist = ['wirecard_checkoutpage_ccardmoto', 'wirecard_checkoutpage_invoiceb2b']; $map = ['TRUSTLY' => 'INSTANTBANK']; $paymenttypes = array(); /* read all payment methods, regardless whether they are active or not */ foreach ($this->_scopeConfig->getValue('payment', ScopeInterface::SCOPE_STORE, null) as $paymentCode => $data) { if (isset($data['model']) && isset($data['sort_order']) && $data['sort_order'] != 0) { /** @var AbstractPayment $paymentModel */ if ($paymentCode == $this->getCode()) { continue; } if (!preg_match('/^wirecard_checkoutpage/i', $paymentCode)) { continue; } if (in_array($paymentCode, $blacklist)) { continue; } /** @var AbstractMethod|null $methodModel Actually it's wrong interface */ $paymentModel = $this->_paymentMethodFactory->create($data['model']); $paymentModel->setId($paymentCode); $paymentModel->setStore(null); $paymenttype = $paymentModel->getPaymentMethod(); if (isset($map[$paymentModel->getPaymentMethod()])) { $paymenttype = $map[$paymentModel->getPaymentMethod()]; } $paymenttypes[$paymenttype] = $paymentModel->getConfigData('sort_order'); } } if (count($paymenttypes)) { asort($paymenttypes); $init->setPaymenttypeSortOrder(array_keys($paymenttypes)); } }