วิธีเพิ่มการชำระเงินแบบกำหนดเองให้กับ Magento 2 Checkout
เผยแพร่แล้ว: 2021-05-11สารบัญ
หนึ่งในการปรับปรุงครั้งใหญ่ของ Magento 2.x เหนือ Magento 1.x คือสามารถรวมวิธีการชำระเงินแบบกำหนดเองเข้ากับการชำระเงินได้ ในบทช่วยสอนนี้ เราจะแสดงวิธีใช้งานการแสดงผลวิธีการชำระเงินในการชำระเงิน Magento 2
ขั้นตอนที่ 1: สร้างไฟล์คอมโพเนนต์ .js
ในการเริ่มต้น ตัวแสดงวิธีการชำระเงินของคุณควรทำหน้าที่เป็นส่วนประกอบ UI ที่ขึ้นอยู่กับโมดูล Magento_Checkout และขยายองค์ประกอบวิธีการชำระเงินเริ่มต้น (ตัวแสดงวิธีการชำระเงินเริ่มต้นอยู่ใน <Magento_Checkout_module_dir>/view/frontend/web/js/view/payment/default.js )
สร้างไฟล์ . .js ของคอมโพเนนต์ (ตัวแสดงวิธีการชำระเงิน) ในไดเร็กทอรีโมดูลที่กำหนดเองของคุณ ต้องเก็บไว้ใน <your_module_dir>/view/frontend/web/js/view/
มุมมองทั่วไปของตัวแสดงวิธีการชำระเงินมีดังต่อไปนี้:
กำหนด(
['Magento_Checkout / js / ดู / ชำระเงิน /
ค่าเริ่มต้น'
],
ฟังก์ชั่น (ส่วนประกอบ) {
'
ใช้อย่างเข้มงวด';
ส่งคืน Component.extend ({
ค่าเริ่มต้น: {
แม่แบบ: ' % เส้นทางไปยังแม่แบบ % '
},
// เพิ่มตรรกะที่จำเป็นที่นี่
});
}
); เพื่อให้วิธีการชำระเงินใหม่นี้สามารถ เข้าถึงข้อมูลการกำหนดค่าระบบ ได้ ต้องใช้อินเทอร์เฟซ \Magento\Checkout\Model\ConfigProviderInterface และคลาสที่ใช้จะต้องส่งไปยังผู้ให้บริการการกำหนดค่าคอมโพสิตผ่านการกำหนดค่าส่วนหน้า DI
ตัวอย่างไฟล์ .php ที่ใช้ \Magento\Checkout\Model\ConfigProviderInterface :
คลาส MyCustomPaymentConfigProvider ใช้ \Magento\Checkout\Model\ConfigProviderInterface
{
...
ฟังก์ชั่นสาธารณะ getConfig()
{
กลับ [
// 'คีย์' => 'ค่า' คู่การกำหนดค่า
];
}
...
} และในกรณีที่วิธีการชำระเงินใหม่ของคุณต้องการ ข้อมูลบัตรเครดิต คุณควรใช้ตัวแสดง Magento เพื่อใช้แบบฟอร์มบัตรเครดิต (อยู่ใน <Magento_Payment_module_dir>/view/frontend/web/js/view/payment/cc-form.js )
ขั้นตอนที่ 2: สร้างคอมโพเนนต์ .js ที่ลงทะเบียนตัวแสดงภาพ
ในไดเรกทอรีโมดูลที่กำหนดเองของคุณ ให้สร้างองค์ประกอบ .js UI ซึ่งลงทะเบียนตัวแสดงวิธีการชำระเงินในรายการตัวแสดง ต้องอยู่ใต้ <your_module_dir>/view/frontend/web/js/view/
เนื้อหาของไฟล์มีดังนี้:
กำหนด(
['uiComponent', 'Magento_Checkout / js / model / การชำระเงิน / renderer - รายการ'],
การทำงาน(
ส่วนประกอบ,
rendererList
) {
'
ใช้อย่างเข้มงวด';
rendererList.push ({
ประเภท: ' % payment_method_code % ',
องค์ประกอบ: ' % js_renderer_component % '
},
// ตัวแสดงวิธีการชำระเงินอื่น ๆ หากจำเป็น
);
/** เพิ่มตรรกะการดูที่นี่ หากจำเป็น */
ส่งคืน Component.extend({});
}
);ขั้นตอนที่ 3: สร้างเทมเพลตสำหรับองค์ประกอบวิธีการชำระเงิน
สร้างไฟล์ <your_module_dir>/view/frontend/web/template/<your_template>.html ใหม่ในไดเร็กทอรีโมดูลที่กำหนดเองของคุณ เทมเพลตสามารถใช้ไวยากรณ์ Knockout JS
เช่น เทมเพลตสำหรับแสดงวิธีการชำระเงิน PayPal Express:
https://github.com/magento/magento2/blob/2.4/app/code/Magento/Paypal/view/frontend/web/template/payment/paypal-express.html
ขั้นตอนที่ 4: ประกาศวิธีการชำระเงินในรูปแบบ
- สร้างไฟล์
<your_module_dir>/view/frontend/layout/checkout_index_index.xmlใหม่ในไดเร็กทอรีโมดูลที่คุณกำหนดเอง - เพิ่มรหัสต่อไปนี้ในไฟล์นั้น
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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="billing-step" xsi:type="array">
<item name="component" xsi:type="string">uiComponent</item>
<item name="children" xsi:type="array">
<item name="payment" xsi:type="array">
<item name="children" xsi:type="array">
<!-- ประกาศเพิ่มเติมก่อนส่วนประกอบการชำระเงิน เริ่ม -->
<item name="beforeMethods" xsi:type="array">
<item name="component" xsi:type="string">uiComponent</item>
<item name="displayArea" xsi:type="string">ก่อนวิธีการ</item>
<item name="children" xsi:type="array">
<item name="%your_feature_name%" xsi:type="array">
<item name="component" xsi:type="string">%path/to/your/feature_js_component%</item>
</item>
</item>
</item>
<!-- ประกาศเพิ่มเติมก่อนส่วนประกอบการชำระเงิน END -->
<!-- ประกาศวิธีการชำระเงิน (องค์ประกอบที่ลงทะเบียนในรายการ) เริ่ม -->
<item name="renders" xsi:type="array">
<item name="children" xsi:type="array">
<ชื่อรายการ="%ชื่อกลุ่มของวิธีการชำระเงิน%" xsi:type="array">
<!-- ตัวอย่างมูลค่า: Magento_Paypal/view/frontend/web/js/view/payment-->
<item name="component" xsi:type="string">%component_that_registers_payment_renderer%</item>
<item name="methods" xsi:type="array">
<!-- เพิ่มสิ่งนี้หากวิธีการชำระเงินของคุณกำหนดให้ป้อนที่อยู่สำหรับการเรียกเก็บเงิน-->
<item name="%payment_method_code%" xsi:type="array">
<item name="isBillingAddressRequired" xsi:type="boolean">จริง</item>
</item>
</item>
</item>
</item>
</item>
<!-- ประกาศวิธีการชำระเงิน (องค์ประกอบที่ลงทะเบียนในรายการ) END -->
<!-- ประกาศส่วนประกอบเพิ่มเติมหลังการชำระเงิน เริ่ม -->
<item name="afterMethods" xsi:type="array">
<item name="component" xsi:type="string">uiComponent</item>
<item name="displayArea" xsi:type="string">afterMethods</item>
<item name="children" xsi:type="array">
<item name="%your_feature_name%" xsi:type="array">
<item name="component" xsi:type="string">%path/to/your/feature_js_component%</item>
</item>
</item>
</item>
<!-- ประกาศส่วนประกอบเพิ่มเติมหลังการชำระเงิน END -->
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</อาร์กิวเมนต์>
</arguments>
</referenceBlock>
</body>
</page>(สำหรับโหมดการผลิตเท่านั้น) ขั้นตอนที่ 5 : รันคำสั่ง CLI
ในโหมดใช้งานจริง คุณจะต้องเรียกใช้คำสั่งเพิ่มเติมสองสามคำสั่งดังนี้:

การตั้งค่า php bin/magento:di:compile การตั้งค่า php bin/magento:static-content:deploy php bin/magento cache:ล้าง

Magento 2 Checkout Extension Suite
หน้าชำระเงินเป็นปลายทางที่สำคัญที่สุดของเว็บไซต์ออนไลน์ใด ๆ ที่สามารถนำลูกค้าเข้าสู่ผู้บริโภคหรือผลักพวกเขาออกจากจุดขาย
โชคดีที่ Magento 2 Checkout Extension นี้ช่วยเพิ่มประสิทธิภาพการชำระเงินของคุณได้อย่างง่ายดาย
ตรวจสอบชุดสูทตอนนี้!
ดูสิ่งนี้ด้วย:
วิธีปรับแต่งกระบวนการชำระเงินใน Magento 2
วิธีเพิ่มรหัสส่วนลดเพื่อชำระเงินใน Magento
