Tôi đã tạo một mô-đun tùy chỉnh cho phép tôi di chuyển hộp kiểm T & C bên dưới các phương thức thanh toán và nút đặt hàng bên trong div tóm tắt, như vậy:
Bây giờ, bất cứ khi nào tôi chọn phương thức thanh toán, hãy chọn hộp từ Điều khoản và Điều kiện và nhấn 'Đặt hàng', thông báo sau sẽ bật lên:
Tôi đã thử những điều sau đây, nhưng tiếc là không có may mắn:
Magento 2 - vị trí điều khoản và điều kiện di chuyển trong thanh toán
Tải trọng Ajax sau khi gửi đơn đặt hàng:
Khi sử dụng thanh toán mà không có mô-đun, nội dung của tải trọng (thông tin thanh toán) có:
extension_attributes: {agreement_ids: ["1"]}
agreement_ids: ["1"]
Trong khi sử dụng mô-đun tùy chỉnh của tôi, nó như sau:
extension_attributes: {agreement_ids: [""]}
agreement_ids: [""]
Vì vậy, nó trống rỗng ... điều này có vẻ là vấn đề. Làm thế nào để tôi sửa lỗi này?
MÃ
mô-đun
<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Vendor_Checkout" setup_version="1.0.0">
<sequence>
<module name="Magento_Checkout"/>
</sequence>
</module>
</config>
kiểm tra_index_index.xml
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<css src="Vendor_Checkout::css/checkout.css"/>
</head>
<body>
<!-- Disabling the T&C checkbox under payment methods -->
<referenceBlock name="checkout.root">
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
<item name="checkout" xsi:type="array">
<item name="children" xsi:type="array">
<item name="steps" xsi:type="array">
<item name="children" xsi:type="array">
<item name="billing-step" xsi:type="array">
<item name="children" xsi:type="array">
<item name="payment" xsi:type="array">
<item name="children" xsi:type="array">
<item name="payments-list" xsi:type="array">
<item name="children" xsi:type="array">
<item name="before-place-order" xsi:type="array">
<item name="componentDisabled" xsi:type="boolean">true</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</argument>
</arguments>
</referenceBlock>
<!-- Moving terms and conditions after payment methods -->
<referenceBlock name="checkout.root">
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
<item name="checkout" xsi:type="array">
<item name="children" xsi:type="array">
<item name="steps" xsi:type="array">
<item name="children" xsi:type="array">
<item name="billing-step" xsi:type="array">
<item name="children" xsi:type="array">
<item name="payment" xsi:type="array">
<item name="children" xsi:type="array">
<item name="afterMethods" xsi:type="array">
<item name="children" xsi:type="array">
<item name="agreements" xsi:type="array">
<item name="component" xsi:type="string">Magento_CheckoutAgreements/js/view/checkout-agreements</item>
<item name="sortOrder" xsi:type="string">100</item>
<item name="displayArea" xsi:type="string">before-place-order</item>
<item name="dataScope" xsi:type="string">checkoutAgreements</item>
<item name="provider" xsi:type="string">checkoutProvider</item>
</item>
<item name="agreements-validator" xsi:type="array">
<item name="component" xsi:type="string">Magento_CheckoutAgreements/js/view/agreement-validation</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</argument>
</arguments>
</referenceBlock>
<!-- Moving place order button to sidebar -->
<referenceBlock name="checkout.root">
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
<item name="checkout" xsi:type="array">
<item name="children" xsi:type="array">
<item name="sidebar" xsi:type="array">
<item name="children" xsi:type="array">
<item name="summary" xsi:type="array">
<item name="children" xsi:type="array">
<item name="children" xsi:type="array">
<item name="component" xsi:type="string">Vendor_Checkout/js/view/payment</item>
<item name="config" xsi:type="array">
<item name="template" xsi:type="string">Vendor_Checkout/button</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</argument>
</arguments>
</referenceBlock>
</body>
</page>
web / mẫu / button.html
<!-- ko if: (isVisible()) -->
<div class="actions-toolbar-trigger" id="place-order-trigger-wrapper">
<button type="button" class="button action primary" id="place-order-trigger" value="Place Order" >
<span data-bind="i18n: 'Place Order'">Place Order</span>
</button>
</div>
<!-- /ko -->
web / js / lượt xem / Payment.js
define(
[
'jquery',
'ko',
'Magento_Checkout/js/view/summary',
'Magento_Checkout/js/model/step-navigator'
],
function(
$,
ko,
Component,
stepNavigator
) {
'use strict';
console.log('Running');
return Component.extend({
isVisible: function () {
return stepNavigator.isProcessed('shipping');
},
initialize: function () {
$(function() {
$('body').on("click", '#place-order-trigger', function () {
// Parse JSON here somehow?
$(".payment-method._active").find('.action.primary.checkout').trigger( 'click' );
});
});
var self = this;
this._super();
}
});
}
);