Я використав нову інсталяцію для наступного за допомогою Magento2 CE 2.2.0-dev, і залишив також тему "Luma" за замовчуванням.
Що стосується зовнішніх способів оплати (шлюзів), таких як MiGS , Braintree , PayPal та ін., Magento підтримує ці шлюзи поза коробкою, але надає для них НІ API, які ви можете використовувати разом з іншими API "Checkout".
Отже, якщо ви плануєте створити додаток / сторінку для оформлення замовлень за допомогою API Magento, вам потрібно буде вручну інтегруватися з цими службами за допомогою їх SDK / API, на щастя, ви можете багато чого дізнатися, перевіривши, як Magento інтегрується з цими послугами у вбудованому -в інтеграції.
Щоб зрозуміти це, мені довелося налаштувати Braintree, оскільки це найпростіше:
- Створіть обліковий запис пісочниці на https://www.braintreepayments.com/sandbox
- Доступ до адміністративної зони Magento.
- Магазини> Конфігурація> Продажі> Способи оплати> Braintree> Налаштувати.
- Переконайтесь, що "Навколишнє середовище" - "Пісочниця" та введіть "Ідентифікатор продавця", "Публічний ключ" та "Приватний ключ".
- Зберегти Config.
- Можливо, вам доведеться перевстановити кеш і / або оновити кеш.
Після додавання товару в кошик і приступаючи до оформлення замовлення, на останньому кроці виберіть спосіб оплати Braintree, після чого натиснувши кнопку "Розмістити замовлення", ви помітите такі запити AJAX:
- 2 запити API Braintree для підтвердження картки, проведення транзакції та відповіді зі статусом транзакції.
- Запит до 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
.