0

I would like to display some additional information of a transaction in the admin panel's order details screen (Sales > Order > click "view" on whatever order) for a custom payment method I am developing to integrate with a payment gateway. I made the custom payment method to create a new custom table in the database upon installation.

What I want the custom payment method to do:

  • Additional information are obtained from the response sent back from the payment gateway after a transaction is completed, and will be stored into the custom table
  • Query the additional information from the custom table of the selected order and display them under the "Payment and Shipping Method" section in the order details screen.

enter image description here

Red box is where I want the information to be display at. Please help :(

1 Answer 1

0

you can pull the information by extending Payment Method Block.

registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    '[VendorName]_[ModuleName]',
    __DIR__
);

Info.php

<?php

namespace [VendorName]\[ModuleName]\Block\Adminhtml\Order\View\Tab;

class Info extends  \Magento\Sales\Block\Adminhtml\Order\View\Tab\Info{



}

etc/adminhtml/di.xml

<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Magento\Sales\Block\Adminhtml\Order\View\Tab\Info" type="[VendorName]\[ModuleName]\Block\Adminhtml\Order\View\Tab\Info" />
</config>

view/adminhtml/layout/sales_order_view.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="order_tab_info">
            <action method="setTemplate">
                <argument name="template" translate="true" xsi:type="string">order/view/tab/Info.phtml</argument>
            </action>
        </referenceBlock>
    </body>
</page>

view/adminhtml/templates/order/view/tab/Info.phtml

    <?php
    /**
     * Copyright © 2016 Magento. All rights reserved.
     * See COPYING.txt for license details.
     */
    
    // @codingStandardsIgnoreFile
    
    ?>
    <?php /** @var $block \Magento\Sales\Block\Adminhtml\Order\View\Tab\Info */ ?>
    <?php $_order = $block->getOrder() ?>
    
    <div id="order-messages">
        <?php echo $block->getChildHtml('order_messages') ?>
    </div>
    
    <?php echo $block->getChildHtml('order_info') ?>
    <input type="hidden" name="order_id" value="<?php /* @escapeNotVerified */ echo $_order->getId() ?>"/>
    
    <section class="admin__page-section order-view-billing-shipping">
        <div class="admin__page-section-title">
            <span class="title"><?php /* @escapeNotVerified */ echo __('Payment &amp; Shipping Method') ?></span>
        </div>
<!-- this is Sample Text -->
        <h1>Magento 2 Custom Payment Text</h1>
        <div class="admin__page-section-content">
            <div class="admin__page-section-item order-payment-method<?php if ($_order->getIsVirtual()): ?> order-payment-method-virtual<?php endif; ?>">
                <?php /* Payment Method */ ?>
                <div class="admin__page-section-item-title">
                    <span class="title"><?php /* @escapeNotVerified */ echo __('Payment Information') ?></span>
                </div>
                <div class="admin__page-section-item-content">
                    <div class="order-payment-method-title"><?php echo $block->getPaymentHtml() ?></div>
                    <div class="order-payment-currency"><?php /* @escapeNotVerified */ echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?></div>
                    <div class="order-payment-additional">
                        <?php echo $block->getChildHtml('order_payment_additional'); ?>
                        <?php echo $block->getChildHtml('payment_additional_info'); ?>
                    </div>
                </div>
            </div>
            <?php echo $block->getChildHtml('order_shipping_view') ?>
        </div>
    </section>
    
    <?php echo $block->getGiftOptionsHtml() ?>
    
    <section class="admin__page-section">
        <div class="admin__page-section-title">
            <span class="title"><?php /* @escapeNotVerified */ echo __('Items Ordered') ?></span>
        </div>
        <?php echo $block->getItemsHtml() ?>
    </section>
    
    <section class="admin__page-section">
        <div class="admin__page-section-title">
            <span class="title"><?php /* @escapeNotVerified */ echo __('Order Total') ?></span>
        </div>
        <div class="admin__page-section-content">
            <div class="admin__page-section-item order-comments-history">
                <div class="admin__page-section-item-title">
                    <span class="title"><?php /* @escapeNotVerified */ echo __('Notes for this Order') ?></span>
                </div>
                <?php echo $block->getChildHtml('order_history') ?>
            </div>
    
            <div class="admin__page-section-item order-totals">
                <div class="admin__page-section-item-title">
                    <span class="title"><?php /* @escapeNotVerified */ echo __('Order Totals') ?></span>
                </div>
                <?php echo $block->getChildHtml('order_totals') ?>
            </div>
        </div>
    </section>
    
    <?php echo $block->getChildHtml('popup_window');?>
    
    <script>
        require([
            "prototype",
            "Magento_Sales/order/giftoptions_tooltip"
        ], function(){
    
    //<![CDATA[
            /**
             * Retrieve gift options tooltip content
             */
            function getGiftOptionsTooltipContent(itemId) {
                var contentLines = [];
                var headerLine = null;
                var contentLine = null;
    
                $$('#gift_options_data_' + itemId + ' .gift-options-tooltip-content').each(function (element) {
                    if (element.down(0)) {
                        headerLine = element.down(0).innerHTML;
                        contentLine = element.down(0).next().innerHTML;
                        if (contentLine.length > 30) {
                            contentLine = contentLine.slice(0,30) + '...';
                        }
                        contentLines.push(headerLine + ' ' + contentLine);
                    }
                });
                return contentLines.join('<br/>');
            }
            giftOptionsTooltip.setTooltipContentLoaderFunction(getGiftOptionsTooltipContent);
            window.getGiftOptionsTooltipContent = getGiftOptionsTooltipContent;
    //]]>
    
        });
    </script>

By this way you can override the Payment Section.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.