Magento 2 Checkout에 사용자 정의 결제를 추가하는 방법

게시 됨: 2021-05-11

목차

Magento 1.x에 비해 Magento 2.x의 큰 개선 사항 중 하나는 사용자 지정 결제 방법을 결제에 통합할 수 있다는 것입니다. 이 튜토리얼에서는 Magento 2 체크아웃에서 결제 수단 렌더링을 구현하는 방법을 보여줍니다.

1단계: .js 구성 요소 파일 만들기

시작하려면 결제 수단 렌더러가 Magento_Checkout 모듈에 의존하고 기본 결제 수단 구성 요소를 확장하는 UI 구성 요소로 작동해야 합니다(기본 결제 수단 렌더러는 <Magento_Checkout_module_dir>/view/frontend/web/js/view/payment/default.js 에 있습니다. <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 프론트엔드 구성을 통해 복합 구성 공급자에 주입되어야 합니다.

\Magento\Checkout\Model\ConfigProviderInterface 구현하는 샘플 .php 파일:

 MyCustomPaymentConfigProvider 클래스는 \Magento\Checkout\Model\ConfigProviderInterface를 구현합니다.
{
...
    공개 함수 getConfig()
    {
        반품 [
            // 'key' => 'value' 구성 쌍
        ];
    }
...
}

그리고 새로운 결제 방법에 신용 카드 정보 가 필요한 경우 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 / 모델 / 결제 / 렌더러 - 목록'],
    기능(
        요소,
        렌더러 목록
    ) {
        '
        엄격한 사용';
        rendererList.push({
                유형: ' % 지불 방식_코드 % ',
                구성 요소: ' % 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단계: 레이아웃에서 결제 수단 선언

  1. 사용자 정의 모듈 디렉토리에 새 <your_module_dir>/view/frontend/layout/checkout_index_index.xml 파일을 만듭니다.
  2. 해당 파일에 다음 코드 추가
 <페이지 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <본체>
        <referenceBlock name="checkout.root">
            <인수>
                <인수 이름="jsLayout" xsi:type="배열">
                    <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">
                                                <항목 이름="결제" xsi:type="배열">
                                                    <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">beforeMethods</item>
                                                            <item name="children" xsi:type="array">
                                                                <항목 이름="%your_feature_name%" xsi:type="array">
                                                                    <item name="component" xsi:type="string">%path/to/your/feature_js_component%</item>
                                                                </항목>
                                                            </항목>
                                                        </항목>
                                                        <!-- 지불 구성 요소 전에 추가를 선언하십시오. 종료 -->
                                                        <!-- 결제 수단(목록에 등록하는 구성 요소)을 선언합니다. 시작 -->
                                                        <item name="renders" xsi:type="array">
                                                            <item name="children" xsi:type="array">
                                                                <item name="%결제 수단의 그룹 이름%" xsi:type="array">
                                                                    <!-- 값의 예: Magento_Paypal/view/frontend/web/js/view/payment-->
                                                                    <item name="component" xsi:type="string">%component_that_registers_payment_renderer%</item>
                                                                    <항목 이름="방법" xsi:type="배열">

                                                                        <!-- 결제 방법에 청구서 수신 주소를 입력해야 하는 경우 추가-->
                                                                        <item name="%payment_method_code%" xsi:type="array">
                                                                            <item name="isBillingAddressRequired" xsi:type="boolean">참</item>
                                                                        </항목>
                                                                    </항목>
                                                                </항목>
                                                            </항목>
                                                        </항목>
                                                        <!-- 결제 수단(목록에 등록하는 구성 요소)을 선언합니다. 종료 -->

                                                        <!-- 결제 후 추가 요소를 선언합니다. 시작 -->
                                                        <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">
                                                                <항목 이름="%your_feature_name%" xsi:type="array">
                                                                    <item name="component" xsi:type="string">%path/to/your/feature_js_component%</item>
                                                                </항목>
                                                            </항목>
                                                        </항목>
                                                        <!-- 결제 후 추가 요소를 선언합니다. 종료 -->
                                                    </항목>
                                                </항목>
                                            </항목>
                                        </항목>
                                    </항목>
                                </항목>
                            </항목>
                        </항목>
                    </항목>
                </인수>
            </인수>
        </referenceBlock>
    </바디>
</페이지>

(프로덕션 모드 전용) 5단계: CLI 명령 실행

프로덕션 모드에서는 다음과 같은 몇 가지 명령을 더 실행해야 합니다.

 PHP bin/magento 설정:di:컴파일
PHP bin/magento 설정:정적 콘텐츠:배포
PHP bin/magento 캐시:정리 

Magento 2 체크아웃 확장 제품군

체크아웃 페이지는 단연코 모든 온라인 웹사이트의 가장 중요한 목적지로, 고객을 소비자로 끌어들이거나 판매 시점에서 멀어지게 할 수 있습니다.
고맙게도 이 Magento 2 Checkout Extension을 사용하면 간편하게 결제를 최적화할 수 있습니다.
지금 바로 슈트를 확인해보세요!


또한보십시오:
Magento 2에서 결제 프로세스를 사용자 정의하는 방법
Magento에서 결제에 할인 코드를 추가하는 방법