Я использовал новую установку для 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> Конфигурировать.
- Убедитесь, что «Среда» - «Песочница», и введите «Идентификатор продавца», «Открытый ключ» и «Закрытый ключ».
- Сохранить конфигурацию
- Возможно, вам придется переиндексировать и / или обновить кэш.
После добавления товара в корзину и перехода к оформлению заказа на последнем шаге выберите способ оплаты Braintree, затем, нажав кнопку «Оформить заказ», вы увидите следующие запросы AJAX:
- 2 запроса к Braintree API для проверки карты, выполнения транзакции и ответа о статусе транзакции.
- Запрос к API Magento
guest-carts/cartId/payment-information
с обычным телом, как описано в документации по API Magento.
После этого процесс продолжается, как и ожидалось, с перенаправлением на страницу успеха, когда последний запрос отвечает в JSON, содержащем заказ entity_id
Это подтверждает, что вызовы внешних сервисов - в нашем примере Brainree - выполняются страницей оформления покупок, а не компанией Magento, поэтому нам нужно будет сделать то же самое, если мы хотим разработать собственную страницу / приложение оформления заказа.
Что касается контроля статуса заказа, я углубился и обнаружил, что использование таких способов оплаты, как MiGS, Braintree или PayPal, привело к заказу со статусом processing
вместо обычного pending
, я подозревал, что это либо конфигурация метода оплаты, либо наблюдатель. , но, похоже, это была конфигурация, вот больше подробностей.
Класс: Magento \ Продажи \ Модель \ Заказ \ Оплата
Метод: Разместить ()
Существует условие, которое проверяет, Initialization
требуется ли для метода if ($methodInstance->isInitializeNeeded())
, если это так, выполняется метод, initialize()
который вы определяете, и позволяет вам указать state
и status
.