Magento2 Rest API 주문 흐름


13

주문 배치를 위해 magento 웹 사이트에 REST API 호출을 수행하고 있습니다. 아래는 전화 순서입니다.

  1. 장바구니 만들기 rest/V1/guest-carts/
  2. 카트 가져 오기 rest/V1/guest-carts/bae0af147b83f1561f66cc4e3c97916e
  3. 장바구니에 제품 추가 rest/V1/guest-carts/24/items
  4. 결제 정보 추가, 결제 방법 설정 및 주문 rest/V1/guest-carts/24/payment-information

이 순서에서 주문은 주문 상태가 "대기 중"인 주문을받습니다. 지불을 처리하고 송장을 생성하기 위해 지불 게이트웨이 (예 : PayPal)가 관련된 경우 API를 통해 지불이 어떻게 캡처되는지 궁금합니다.

지불을 캡처하기 위해 위의 흐름에서 누락 된 API가 있습니까?

답변:


11

Magento2 CE 2.2.0-dev를 사용하여 다음을 새로 설치하고 기본 "Luma"테마도 그대로 두었습니다.

Miagent , Braintree , PayPal 등과 같은 외부 지불 방법 (게이트웨이)과 관련하여 Magento는 이러한 게이트웨이를 기본적으로 지원하지만 다른 "Checkout"API와 함께 사용할 수있는 API를 제공하지 않습니다.

따라서 Magento의 API를 사용하여 결제 앱 / 페이지를 구축하려는 경우 SDK / API를 사용하여 이러한 서비스와 수동으로 통합해야합니다. 다행히도 Magento가 구축 된 서비스와 이러한 서비스를 어떻게 통합하는지 확인하여 많은 내용을 배울 수 있습니다 통합.

이것을 이해하려면 Braintree가 가장 쉬우므로 구성해야했습니다.

  1. https://www.braintreepayments.com/sandbox 에서 샌드 박스 계정을 만듭니다.
  2. Magento 관리 영역에 액세스합니다.
  3. 상점> 구성> 영업> 지불 방법> Braintree> 구성.
  4. "환경"이 "샌드 박스"인지 확인하고 "판매자 ID", "공개 키"및 "개인 키"를 입력하십시오.
  5. 구성을 저장하십시오.
  6. 캐시를 다시 색인화하거나 새로 고쳐야 할 수도 있습니다.

장바구니에 제품을 추가하고 결제를 진행하면 마지막 단계에서 Braintree 결제 방법을 선택한 다음 "주문하기"버튼을 클릭하면 다음과 같은 AJAX 요청이 표시됩니다.

  1. 2는 Braintree API에 카드의 유효성을 검사하고 트랜잭션을 수행하며 트랜잭션 상태로 응답하도록 요청합니다.
  2. guest-carts/cartId/payment-informationMagento의 API 설명서에 설명 된대로 일반적인 본문으로 Magento의 API에 대한 요청 입니다.

이후 마지막 요청이 주문을 포함하는 JSON으로 응답하면 성공 페이지로 리디렉션하여 프로세스가 계속 진행됩니다. entity_id

여기에 이미지 설명을 입력하십시오

이를 통해 외부 서비스 (예 : 브레인 트리)에 대한 호출은 내부적으로 Magento가 아닌 체크 아웃 페이지에서 수행되므로 자체 체크 아웃 페이지 / 앱을 개발하려면 동일한 작업을 수행해야합니다.

주문 상태를 제어하기 위해 더 깊이 파고 들었고 MiGS, Braintree 또는 PayPal과 같은 지불 방법을 사용 processing하면 평소 대신 상태가 주문됨을 알았습니다. pending이것은 지불 방법 구성 또는 관찰자라고 생각했습니다 이지만 구성 인 것 같습니다. 자세한 내용은 다음과 같습니다.

클래스 : 마 젠토 \ 판매 \ 모델 \ 주문 \ 지불

방법 : Place ()

검사하는 경우가있는 조건이 Initialization방법 필요가 if ($methodInstance->isInitializeNeeded())그런 경우, 방법은, initialize()당신이 정의하는 실행, 당신은 모두를 지정할 수있다 statestatus.


지불 정보 API에 대한 페이로드를 공유 할 수 있습니까
blakcaps

1
{ "cartId": "a98697cba964d6ba0d3b64d78a31df33", "billingAddress": { "countryId": "EG", "regionId": null, "region": "", "street": [ "street", ""], "회사 ":"내 회사 ","전화 ":"12346987 ","우편 번호 ":"12345 ","도시 ":"도시 ","이름 ":"f 이름 ","성 ":"l 이름 "," saveInAddressBook ": null},"paymentMethod ": {"method ":"braintree ","additional_data ": {"payment_method_nonce ":"ef27df81-7c29-4a74-9049-15de33f1f49f "}},"email ":"email @ example .com "}
Mahmoud Tantawy

페이로드에 감사드립니다. "payment_method_nonce"를 생성하는 방법이 궁금합니다.
blakcaps

실제로는 모르지만 실제로 nonce로 작동하는 경우 nonce를 쉽게 검색 할 수 있다는 요청을 앞뒤로 검사하여 생각합니다.
Mahmoud Tantawy

1
Braintree는 REST API를 통해 쉽게 통합 할 수 있습니다. 그러나 Papal 또는 Ingenico와 같은 외부 리디렉션 지불 게이트웨이를 통합하는 방법은 무엇입니까?
Franck Garnier
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.