Magento2 Rest API注文フロー


13

注文のためにmagento Webサイトに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」テーマも残しました。

MiGSBraintreePayPalなどの外部支払い方法(ゲートウェイ)に関して、Magentoはこれらのゲートウェイをそのままサポートしていますが、他の「チェックアウト」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. カードを検証し、トランザクションを実行し、トランザクションステータスで応答するためのBraintree APIへの2つのリクエスト。
  2. guest-carts/cartId/payment-informationMagentoのAPIドキュメントで説明されている通常のボディを使用したMagentoのAPIへのリクエスト。

その後、プロセスは、最後のリクエストがオーダーを含むJSONで応答するときに、成功ページへのリダイレクトで期待どおりに続行します entity_id

ここに画像の説明を入力してください

これにより、外部サービス(この例ではBraintree)への呼び出しは、Magentoではなくチェックアウトページによって実行されるため、独自のチェックアウトページ/アプリを開発する場合も同じことを行う必要があります。

注文ステータスの制御に関しては、さらに掘り下げて、MiGS、Braintree、PayPalなどの支払い方法を使用するとprocessing、通常ではなくステータスのある注文が発生することがわかりました。pendingこれは、支払い方法の構成またはオブザーバーのいずれか、構成のように見えますが、ここに詳細があります。

クラス:Magento \ Sales \ Model \ Order \ Payment

メソッド:Place()

かどうかをチェックするには、条件があるInitialization方法のために必要とされるには、if ($methodInstance->isInitializeNeeded())そのような場合、この方法は、initialize()あなたが定義する実行され、あなたは両方を指定することができますされるstatestatus


支払い情報APIのペイロードを共有できますか?
blakcaps

1
{"cartId": "a98697cba964d6ba0d3b64d78a31df33"、 "billingAddress":{"countryId": "EG"、 "regionId":null、 "region": ""、 "street":["street"、 ""]、 "company ":" my company "、" telephone ":" 12346987 "、" postcode ":" 12345 "、" city ":" city "、" firstname ":" f name "、" lastname ":" l name "、" 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

本当にわかりませんが、リクエストを前後に調べることで、実際にノンスとして機能する場合、ナンスは簡単に発見できると思います。
マフムードタンタウィ

1
BraintreeはREST APIを通じて簡単に統合できるようです。しかし、PapalやIngenicoなどの外部リダイレクト支払いゲートウェイをどのように統合するのでしょうか?
フランクガルニエ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.