Magento 2: Как передать значение конфигурации способа оплаты в html-шаблон


Я развернул модуль платежного шлюза на основе образца с github https://github.com/magento/magento2-samples/tree/master/sample-module-payment-gateway.

На данный момент я пытаюсь показать дополнительную информацию, которая была установлена в конфигурации администратора на /view/frontend/web/template/payment/form.html. Однако существует всего несколько методов, с помощью которых я могу попытаться получить данные: getCode(), getTitle(), и т.д. То, что я пытаюсь получить, - это другое поле (скажем, FieldA, которое определяется как field_a на файл конфигурации xml администратора в папке etc.

Я проверил переменную window.checkoutConfig, но, похоже, она не отображала много информации, заданной в конфигурации оплаты администратором.

Я пропустил шаг, прежде чем смогу передать данные конфигурации в файл блока?

Спасибо,

Author: frostshoxx, 2016-08-23

1 answers

Прежде всего, трудно проверить json, если мы не используем инструмент форматирования.

Мы можем использовать этот веб-сайт для отображения json: http://www.jsoneditoronline.org/

enter image description here

Второй:

Я собираюсь добавить и получить новое поле - фиксированную сумму комиссии к нашему платежу.

--Получить фиксированную сумму в поставщике конфигурации.

Sample-module-payment-gateway/Model/Ui/ConfigProvider.php

final class ConfigProvider implements ConfigProviderInterface
{


    const CODE = 'sample_gateway';

    protected $method;

    /**
     * Payment ConfigProvider constructor.
     * @param \Magento\Payment\Helper\Data $paymentHelper
     */
    public function __construct(
        \Magento\Payment\Helper\Data $paymentHelper
    ) {
        $this->method = $paymentHelper->getMethodInstance(self::CODE);
    }
    /**
     * Retrieve assoc array of checkout configuration
     *
     * @return array
     */

    public function getConfig()
    {
        return [
            'payment' => [
                self::CODE => [
                    'transactionResults' => [
                        ClientMock::SUCCESS => __('Success'),
                        ClientMock::FAILURE => __('Fraud')
                    ],
                    'fixedamount' => $this->getFixedAmount(),
                ]
            ]
        ];
    }
    //Get fixed amount
    protected function getFixedAmount()
    {
        return $this->method->getFixedAmount();
    }
}

-- Исправляться сумма от платежа js

Sample-module-payment-gateway/view/frontend/web/js/view/payment/method-renderer/sample_gateway.js

        getFixedAmount: function() {
            return window.checkoutConfig.payment.sample_gateway.fixedamount;
        },

--Добавить в шаблон оплаты

Sample-module-payment-gateway/view/frontend/web/template/payment/form.html

<div class="payment-method" data-bind="css: {'_active': (getCode() == isChecked())}">
     ......
     <div class="fixed-amount">
        <span data-bind="text: getFixedAmount()"></span>
     </div>
     ......
</div>

--Добавьте в нашу конфигурацию администратора:

Sample-module-payment-gateway/etc/adminhtml/system.xml

<field id="fixedamount" translate="label" type="text" sortOrder="53" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Fixed Amount</label>
                    <frontend_class>validate-number validate-zero-or-greater</frontend_class>
</field>

-- И последнее, но не менее важное: не забудьте снова запустить развертывание статического содержимого.

 3
Author: Khoa TruongDinh, 2016-08-24 10:28:43