วิธีปรับแต่งกระบวนการชำระเงินใน Magento 2
เผยแพร่แล้ว: 2018-04-23สารบัญ
ใน Magento 2 กระบวนการเช็คเอาต์ได้รับการออกแบบใหม่เพื่อประสบการณ์ที่รวดเร็วและง่ายขึ้น หน้าการชำระเงินจะนำลูกค้าไปสู่ 2 ขั้นตอนง่ายๆ ของกระบวนการ ลูกค้าที่ลงชื่อเข้าใช้บัญชีของตนสามารถชำระเงินได้อย่างรวดเร็ว เนื่องจากข้อมูลส่วนใหญ่อยู่ในบัญชีอยู่แล้ว ขั้นตอนแรกของกระบวนการเช็คเอาต์คือให้ลูกค้ากรอกข้อมูลที่อยู่สำหรับจัดส่ง และเลือกวิธีการจัดส่ง ในขั้นตอนที่สอง ลูกค้าจะเลือกวิธีการชำระเงิน และใช้คูปองเพื่อดำเนินการซื้อให้เสร็จสิ้น
ปรับแต่งการชำระเงินเริ่มต้นของ Magento 2
คุณสามารถเพิ่มขั้นตอนการชำระเงินใหม่หรือเปลี่ยนมุมมองของการชำระเงินที่มีอยู่เพื่อปรับแต่งการชำระเงินเริ่มต้นในแบบของคุณเอง
เพิ่มขั้นตอนการชำระเงินใหม่
คุณสามารถเพิ่มขั้นตอนการชำระเงินที่กำหนดเองได้ ซึ่งควรนำไปใช้เป็นส่วนประกอบ UI เพื่อความเข้ากันได้ การอัพเกรด และการบำรุงรักษาง่าย อย่าแก้ไขโค้ด Magento เริ่มต้น เพิ่มการปรับแต่งของคุณในโมดูลแยกต่างหาก
ขั้นตอนที่ 1: สร้างส่วนมุมมองของส่วนประกอบขั้นตอนการชำระเงิน
ในการสร้างส่วนมุมมองของขั้นตอนการชำระเงินใหม่:
- เพิ่มไดเร็กทอรีโมดูล ไฟล์ที่กำหนดเองทั้งหมดจะต้องเก็บไว้ที่นั่น เพื่อให้การปรับแต่งการชำระเงินของคุณใช้งานได้อย่างถูกต้อง โมดูลที่กำหนดเองของคุณควรขึ้นอยู่กับโมดูล
Magento_Checkoutอย่าใช้Uiสำหรับชื่อโมดูลที่กำหนดเองของคุณ เนื่องจากต้องใช้สัญกรณ์%Vendor%_Uiเมื่อระบุพาธ อาจทำให้เกิดปัญหาได้ - สร้างไฟล์ .
.jsที่ใช้โมเดลมุมมอง - สร้างเทมเพลต
.htmlสำหรับส่วนประกอบ
แต่ละขั้นตอนมีรายละเอียดด้านล่าง:
1. เพิ่มไฟล์ JavaScript ที่ใช้ขั้นตอนใหม่
ต้องใช้ขั้นตอนการชำระเงินใหม่เป็นองค์ประกอบ UI กล่าวคือ การใช้งาน JavaScript ต้องเป็นโมดูล JavaScript
ไฟล์ต้องถูกเก็บไว้ภายใต้ <your_module_dir>/view/frontend/web/js/view
<your_module_dir> สัญกรณ์หมายถึงพาธไปยังไดเร็กทอรีโมดูลของคุณจากไดเร็กทอรีราก โดยปกติแล้วจะเป็นหนึ่งในสิ่งต่อไปนี้: app/code/<YourVendor>/<YourModule> or vendor/<yourvendor>/module-<module>-<name>
ตัวอย่าง my-step-view.js พร้อมความคิดเห็นดังนี้:
กำหนด(
['ko', 'uiComponent', 'underscore', 'Magento_Checkout / js / model / step - เนวิเกเตอร์'],
การทำงาน(
โก
ส่วนประกอบ,
_,
stepNavigator
) {'
ใช้อย่างเข้มงวด';
/**
*
* mystep – คือชื่อของเทมเพลต .html ของคอมโพเนนต์
* <Vendor>_<Module> – คือชื่อของไดเร็กทอรีโมดูลของคุณ
*
*/
ส่งคืน Component.extend ({
ค่าเริ่มต้น: {
แม่แบบ: ' < ผู้ขาย > _ < โมดูล > /mystep'
},
// เพิ่มตรรกะของคุณที่นี่เพื่อแสดงขั้นตอน
isVisible: ko.observable(จริง),
/**
*
* @returns {*}
*/
เริ่มต้น: ฟังก์ชั่น () {
this._super();
// ลงทะเบียนขั้นตอนของคุณ
stepNavigator.registerStep(
//รหัสขั้นตอนจะถูกใช้เป็นรหัสเนื้อหาขั้นตอนในเทมเพลตส่วนประกอบ
'step_code',
//ขั้นตอนนามแฝง
โมฆะ,
//ค่าชื่อขั้นตอน
'ชื่อขั้นตอน'
// คุณสมบัติที่สังเกตได้พร้อมตรรกะเมื่อแสดงขั้นตอนหรือซ่อนขั้นตอน
this.isVisible,
_.bind(this.navigate, นี่)
/**
* เรียงลำดับมูลค่า
* 'จัดเรียงมูลค่าการสั่งซื้อ' < 10: แสดงขั้นตอนก่อนขั้นตอนการจัดส่ง;
* 10 < 'sort order value' < 20 : แสดงขั้นตอนระหว่างขั้นตอนการจัดส่งและการชำระเงิน
* 'sort order value' > 20 : แสดงขั้นตอนหลังจากขั้นตอนการชำระเงิน
*/
15
);
ส่งคืนสิ่งนี้;
},
/**
* วิธีนำทาง () มีหน้าที่ในการนำทางระหว่างขั้นตอนการชำระเงิน
* ระหว่างชำระเงิน คุณสามารถเพิ่มตรรกะที่กำหนดเองได้ ตัวอย่างเช่น เงื่อนไขบางอย่าง
* เพื่อเปลี่ยนเป็นขั้นตอนที่คุณกำหนดเอง
*/
นำทาง: ฟังก์ชั่น () {
},
/**
* @returns เป็นโมฆะ
*/
NaviToNextStep: ฟังก์ชั่น () {
stepNavigator.next();
}
});
}
);2. เพิ่ม .html template
ในไดเร็กทอรีโมดูล เพิ่มเทมเพลต .html สำหรับส่วนประกอบ ต้องอยู่ใต้ <your_module_dir>/view/frontend/web/template
ตัวอย่าง mystep.html มีดังนี้:
<!–ควรใช้ค่า 'step_code' จากไฟล์ .js–>
<li data-bind="fadeVisible: isVisible">
<div class="step-title" data-bind="i18n: 'Step Title'" data-role="title"></div>
<div class="step-content" data-role="content">
<form data-bind="submit: navigationToNextStep" novalidate="novalidate">
<div class="actions-toolbar">
<div class="primary">
<button data-role="opc-continue" type="submit" class="button action continue primary">
<span><!– ko i18n: 'Next'–><!– /ko –></span>
</button>
</div>
</div>
</form>
</div>
</li>ขั้นตอนที่ 2: เพิ่มขั้นตอนของคุณลงในเค้าโครงหน้าชำระเงิน
สำหรับขั้นตอนใหม่ที่จะแสดงบนเพจ คุณต้องประกาศในโครงร่างหน้า Checkout ซึ่งกำหนดไว้ใน checkout_index_index.xml
ดังนั้น คุณต้องเพิ่มไฟล์โครงร่าง checkout_index_index.xml แบบขยายในตำแหน่งต่อไปนี้: <your_module_dir>/view/frontend/layout/checkout_index_index.xml
ตัวอย่าง checkout_index_index.xml มีดังนี้:
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="checkout.root">
<อาร์กิวเมนต์>
<ชื่ออาร์กิวเมนต์="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="my-new-step" xsi:type="array">
<item name="component" xsi:type="string">%Vendor%_%Module%/js/view/my-step-view</item>
<!–หากต้องการแสดงเนื้อหาขั้นตอนก่อนจัดส่ง ค่าขั้นตอน "sortOrder" ควรเป็น < 1–>
<!–เพื่อแสดงเนื้อหาขั้นตอนระหว่างขั้นตอนการจัดส่งและขั้นตอนการชำระเงิน 1 < "sortOrder" < 2 –>
<!–เพื่อแสดงเนื้อหาขั้นตอนหลังจากขั้นตอนการชำระเงิน "sortOrder" >2 –>
<item name="sortOrder" xsi:type="string">2</item>
<item name="children" xsi:type="array">
<!–เพิ่มการประกาศองค์ประกอบลูกสำหรับขั้นตอนของคุณ–>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</อาร์กิวเมนต์>
</arguments>
</referenceBlock>
</body>
</page> 
ฟิลด์กำหนดเองของ Magento 2 Checkout

$119,00

การชำระเงิน Magento 2 ขั้นตอนเดียว
$99 $119,00
ปรับแต่งมุมมองของการชำระเงินที่มีอยู่
ในแอปพลิเคชัน Magento การชำระเงินจะดำเนินการโดยใช้ส่วนประกอบ UI คุณสามารถปรับแต่งแต่ละขั้นตอนโดยเปลี่ยน JavaScriptimplementation หรือเทมเพลตสำหรับส่วนประกอบ เพิ่ม ลบ หรือปิดใช้งานส่วนประกอบ
ขั้นตอนที่ 1: เปลี่ยนการใช้งานและเทมเพลต .js ของคอมโพเนนต์
หากต้องการเปลี่ยนการใช้งาน . .js และเทมเพลตที่ใช้สำหรับการแสดงผลคอมโพเนนต์ คุณต้องประกาศไฟล์ใหม่ในเลย์เอาต์ของหน้าเช็คเอาต์ โดยทำตามขั้นตอนต่อไปนี้:
- ในไดเร็กทอรีโมดูลที่กำหนดเองของคุณ ให้สร้างไฟล์ใหม่ต่อไปนี้:
<your_module_dir>/view/frontend/layout/checkout_index_index.xml(เพื่อให้การปรับแต่งการชำระเงินของคุณใช้งานได้อย่างถูกต้อง โมดูลที่กำหนดเองของคุณควรขึ้นอยู่กับโมดูล Magento_Checkout) - ในไฟล์นี้ เพิ่มสิ่งต่อไปนี้:
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="checkout.root">
<อาร์กิวเมนต์>
<ชื่ออาร์กิวเมนต์="jsLayout" xsi:type="array">
<!– การปรับแต่งของคุณจะอยู่ที่นี่ –>
…
</อาร์กิวเมนต์>
</arguments>
</referenceBlock>
</body>
</page>- ในไฟล์
<Magento_Checkout_module_dir>/view/frontend/layout/checkout_index_index.xmlให้ค้นหาส่วนประกอบที่คุณต้องการปรับแต่ง คัดลอกโหนดที่เกี่ยวข้องและโหนดหลักทั้งหมดไม่เกิน<argument>ไม่จำเป็นต้องทิ้งแอตทริบิวต์และค่าทั้งหมดของโหนดหลัก เนื่องจากคุณจะไม่ทำการเปลี่ยนแปลง - เปลี่ยนพาธไปยังไฟล์ .
.jsของคอมโพเนนต์ เทมเพลต หรือคุณสมบัติอื่นๆ
ตัวอย่าง:
โมดูล Magento_Shipping เพิ่มองค์ประกอบที่แสดงเป็นลิงก์ไปยังข้อมูลนโยบายการจัดส่งไปยังขั้นตอนการจัดส่ง:
<Magento_Shipping_module_dir>/view/frontend/layout/checkout_index_index.xml
ดูเหมือนว่าต่อไปนี้:
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="checkout.root">
<อาร์กิวเมนต์>
<ชื่ออาร์กิวเมนต์="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="shipping-step" xsi:type="array">
<item name="children" xsi:type="array">
<item name="shippingAddress" xsi:type="array">
<item name="children" xsi:type="array">
<item name="before-shipping-method-form" xsi:type="array">
<item name="children" xsi:type="array">
<item name="shipping_policy" xsi:type="array">
<item name="component" xsi:type="string">Magento_Shipping/js/view/checkout/shipping/shipping-policy</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</อาร์กิวเมนต์>
</arguments>
</referenceBlock>
</body>
</page> ขั้นตอนที่ 2: เพิ่มองค์ประกอบใหม่ให้กับเค้าโครงหน้าชำระเงิน
คอมโพเนนต์ UI ใดๆ จะถูกเพิ่มใน checkout_index_index.xml เหมือนกับวิธีการเพิ่มคอมโพเนนต์ขั้นตอนการชำระเงิน
ตรวจสอบให้แน่ใจว่าคุณได้ประกาศส่วนประกอบเพื่อให้แสดงผลได้อย่างถูกต้องโดยองค์ประกอบหลัก หากองค์ประกอบหลักเป็นองค์ประกอบ UI ทั่วไป (อ้างอิงโดยนามแฝง uiComponent ) ส่วนประกอบย่อยจะแสดงผลโดยไม่มีเงื่อนไขใดๆ แต่ถ้าองค์ประกอบหลักเป็นส่วนขยายของส่วนประกอบ UI ทั่วไป การเรนเดอร์ลูกอาจถูกจำกัดในบางวิธี ตัวอย่างเช่น ส่วนประกอบสามารถแสดงผลเฉพาะลูกจาก displayArea บางตัว
ขั้นตอนที่ 3 : ปิดการใช้งานส่วนประกอบ
หากต้องการปิดใช้งานคอมโพเนนต์ใน checkout_index_index.xml ให้ใช้คำแนะนำต่อไปนี้:
<item name="%the_component_to_be_disabled%" xsi:type="array">
<item name="config" xsi:type="array">
<item name="componentDisabled" xsi:type="boolean">จริง</item>
</item>
</item>ขั้นตอนที่ 4: ลบส่วนประกอบ
ในการลบส่วนประกอบออกจากการแสดงผลเลย์เอาต์ คุณต้องสร้างปลั๊กอินสำหรับวิธี \Magento\Checkout\Block\Checkout\LayoutProcessor::process ในปลั๊กอินของคุณ ใช้เมธอด around เพื่อลบโหนดเลย์เอาต์ที่เกี่ยวข้องในขณะใช้งาน
ตัวอย่างต่อไปนี้เป็นตัวอย่างของวิธีการ around ที่ลบส่วนประกอบ:
unset($jsLayout['components']['checkout']['children']['steps'][%path_to_target_node%]); //%path_to_target_node% คือเส้นทางไปยังโหนดของส่วนประกอบใน checkout_index_index.xml ส่งคืน $jsLayout;
(ถ้าคุณต้องการใช้ตัวอย่างนี้ในโค้ดของคุณ ให้แทนที่ตัวยึดตำแหน่ง %path_to_target_node% ด้วยค่าจริง)
*ปิดการใช้งาน vs ลบส่วนประกอบ: หากคุณปิดใช้งานส่วนประกอบ ส่วนประกอบจะถูกโหลดแต่จะไม่แสดงผล หากคุณลบส่วนประกอบ ส่วนประกอบจะไม่ถูกโหลด
กระทู้ที่เกี่ยวข้อง:
วิธีเพิ่มรหัสส่วนลดเพื่อชำระเงินใน Magento
วิธีเพิ่มการชำระเงินแบบกำหนดเองให้กับ Magento 2 Checkout
