Потік замовлень API Magento2 Rest


13

Я роблю дзвінки API REST на веб-сайт magento для розміщення замовлення. Нижче послідовність моїх дзвінків.

  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

У цій послідовності замовлення отримує розміщення зі статусом замовлення "очікує на розгляд". Мені цікаво, як платіж фіксується через api, якщо будь-який платіжний шлюз (напр. PayPal) задіяний для обробки платежу та отримання рахунку-фактури.

Чи немає у папці, яка не міститься у вищезгаданому потоці, для збору платежів.

Відповіді:


12

Я використав нову інсталяцію для наступного за допомогою Magento2 CE 2.2.0-dev, і залишив також тему "Luma" за замовчуванням.

Що стосується зовнішніх способів оплати (шлюзів), таких як MiGS , Braintree , PayPal та ін., Magento підтримує ці шлюзи поза коробкою, але надає для них НІ API, які ви можете використовувати разом з іншими API "Checkout".

Отже, якщо ви плануєте створити додаток / сторінку для оформлення замовлень за допомогою API Magento, вам потрібно буде вручну інтегруватися з цими службами за допомогою їх SDK / API, на щастя, ви можете багато чого дізнатися, перевіривши, як Magento інтегрується з цими послугами у вбудованому -в інтеграції.

Щоб зрозуміти це, мені довелося налаштувати Braintree, оскільки це найпростіше:

  1. Створіть обліковий запис пісочниці на https://www.braintreepayments.com/sandbox
  2. Доступ до адміністративної зони Magento.
  3. Магазини> Конфігурація> Продажі> Способи оплати> Braintree> Налаштувати.
  4. Переконайтесь, що "Навколишнє середовище" - "Пісочниця" та введіть "Ідентифікатор продавця", "Публічний ключ" та "Приватний ключ".
  5. Зберегти Config.
  6. Можливо, вам доведеться перевстановити кеш і / або оновити кеш.

Після додавання товару в кошик і приступаючи до оформлення замовлення, на останньому кроці виберіть спосіб оплати Braintree, після чого натиснувши кнопку "Розмістити замовлення", ви помітите такі запити AJAX:

  1. 2 запити API Braintree для підтвердження картки, проведення транзакції та відповіді зі статусом транзакції.
  2. Запит до API Magento guest-carts/cartId/payment-informationзі звичайним тілом, як пояснено в документації API Magento.

Після цього процес продовжується, як очікувалося, перенаправленням на сторінку успіху, коли останній запит відповідає у JSON, що містить замовлення entity_id

введіть тут опис зображення

Це підтверджує, що дзвінки до зовнішніх служб -Braintree у нашому прикладі- виконуються на сторінці оформлення замовлення НЕ Magento внутрішньо, тому нам потрібно буде зробити те саме, якщо ми хочемо розробити власну сторінку / додаток для оформлення замовлення.

Щодо контролю за статусом замовлення, я заглибився і з’ясував, що використання таких способів оплати, як MiGS, Braintree або PayPal, призвело до замовлення зі статусом processingзамість звичайного pending, я підозрював, що це або конфігурація способу оплати, або спостерігач , але, здавалося, це конфігурація, ось детальніше.

Клас: Magento \ Продажі \ Модель \ Замовлення \ Оплата

Спосіб: Місце ()

Існує умовна умова, яка перевіряє, чи Initializationпотрібен метод if ($methodInstance->isInitializeNeeded()), якщо це так, initialize()виконується метод , який ви визначаєте, і дозволяє вказати і те, stateі status.


Ви можете поділитися корисним навантаженням для платіжно-інформаційної api
blakcaps

1
{"cartId": "a98697cba964d6ba0d3b64d78a31df33", "billingAddress": {"countryId": "EG", "regionId": null, "region": "", "street": ["street", ""], "компанія ":" моя компанія "," телефон ":" 12346987 "," поштовий індекс ":" 12345 "," місто ":" місто "," ім'я ":" f ім'я "," прізвище ":" l ім'я "," saveInAddressBook ": null}," PaymentMethod ": {" метод ":" braintree "," Additional_data ": {" Payment_method_nonce ":" ef27df81-7c29-4a74-9049-15de33f1f49f "}}," email ":" email @ example .com "}
Махмуд Тантаві,

Дякуємо за корисне навантаження. Мені цікаво, як генерувати "Payment_method_nonce".
blakcaps

Не знаю насправді, але я думаю, оглядаючи запити вперед і назад, що це неможливо легко виявити, якщо воно справді функціонує як нікчемне.
Махмуд Тантаві

1
Інтеграція Braintree легко інтегрувати за допомогою REST API. Але як інтегрувати зовнішній шлюз платежів за переадресацію, такий як Papal чи Ingenico?
Франк Гарньє
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.