Magento2 CE 2.2.0-dev를 사용하여 다음을 새로 설치하고 기본 "Luma"테마도 그대로 두었습니다.
Miagent , Braintree , PayPal 등과 같은 외부 지불 방법 (게이트웨이)과 관련하여 Magento는 이러한 게이트웨이를 기본적으로 지원하지만 다른 "Checkout"API와 함께 사용할 수있는 API를 제공하지 않습니다.
따라서 Magento의 API를 사용하여 결제 앱 / 페이지를 구축하려는 경우 SDK / API를 사용하여 이러한 서비스와 수동으로 통합해야합니다. 다행히도 Magento가 구축 된 서비스와 이러한 서비스를 어떻게 통합하는지 확인하여 많은 내용을 배울 수 있습니다 통합.
이것을 이해하려면 Braintree가 가장 쉬우므로 구성해야했습니다.
- https://www.braintreepayments.com/sandbox 에서 샌드 박스 계정을 만듭니다.
- Magento 관리 영역에 액세스합니다.
- 상점> 구성> 영업> 지불 방법> Braintree> 구성.
- "환경"이 "샌드 박스"인지 확인하고 "판매자 ID", "공개 키"및 "개인 키"를 입력하십시오.
- 구성을 저장하십시오.
- 캐시를 다시 색인화하거나 새로 고쳐야 할 수도 있습니다.
장바구니에 제품을 추가하고 결제를 진행하면 마지막 단계에서 Braintree 결제 방법을 선택한 다음 "주문하기"버튼을 클릭하면 다음과 같은 AJAX 요청이 표시됩니다.
- 2는 Braintree API에 카드의 유효성을 검사하고 트랜잭션을 수행하며 트랜잭션 상태로 응답하도록 요청합니다.
guest-carts/cartId/payment-information
Magento의 API 설명서에 설명 된대로 일반적인 본문으로 Magento의 API에 대한 요청 입니다.
이후 마지막 요청이 주문을 포함하는 JSON으로 응답하면 성공 페이지로 리디렉션하여 프로세스가 계속 진행됩니다. entity_id
이를 통해 외부 서비스 (예 : 브레인 트리)에 대한 호출은 내부적으로 Magento가 아닌 체크 아웃 페이지에서 수행되므로 자체 체크 아웃 페이지 / 앱을 개발하려면 동일한 작업을 수행해야합니다.
주문 상태를 제어하기 위해 더 깊이 파고 들었고 MiGS, Braintree 또는 PayPal과 같은 지불 방법을 사용 processing
하면 평소 대신 상태가 주문됨을 알았습니다. pending
이것은 지불 방법 구성 또는 관찰자라고 생각했습니다 이지만 구성 인 것 같습니다. 자세한 내용은 다음과 같습니다.
클래스 : 마 젠토 \ 판매 \ 모델 \ 주문 \ 지불
방법 : Place ()
검사하는 경우가있는 조건이 Initialization
방법 필요가 if ($methodInstance->isInitializeNeeded())
그런 경우, 방법은, initialize()
당신이 정의하는 실행, 당신은 모두를 지정할 수있다 state
및 status
.