Поток заказов Magento2 Rest API

13

Я делаю вызовы REST API на сайт 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) используется для обработки платежа и создания счета.

Есть ли в приведенном выше потоке API для сбора платежей.

blakcaps
источник

Ответы:

11

Я использовал новую установку для 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. Сохранить конфигурацию
  6. Возможно, вам придется переиндексировать и / или обновить кэш.

После добавления товара в корзину и перехода к оформлению заказа на последнем шаге выберите способ оплаты Braintree, затем, нажав кнопку «Оформить заказ», вы увидите следующие запросы AJAX:

  1. 2 запроса к Braintree API для проверки карты, выполнения транзакции и ответа о статусе транзакции.
  2. Запрос к 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.

Махмуд Тантави
источник
Можете
1
{ "cartId": "a98697cba964d6ba0d3b64d78a31df33", "billingAddress": { "CountryId": "EG", "RegionId": нулевой, "область": "", "улица": [ "улица", ""], "компания ":" моя компания "," телефон ":" 12346987 "," почтовый индекс ":" 12345 "," город ":" город "," имя ":" имя f "," фамилия ":" имя l "," saveInAddressBook ": нулевой}," PAYMENTMETHOD ": {" метод ":" Брэйнтри " "additional_data": { "payment_method_nonce": "ef27df81-7c29-4a74-9049-15de33f1f49f"}}, "электронная почта":" электронная почта @ пример .com "}
Махмуд Тантави,
Спасибо за полезную нагрузку. Мне интересно, как генерировать "payment_method_nonce".
Blakcaps
Не знаю, но я думаю, проверяя запросы назад и вперед, что одноразовый номер может быть легко обнаружен, если он действительно функционирует как одноразовый номер.
Махмуд Тантави
1
Braintree, кажется, легко интегрировать через REST API. Но как интегрировать внешний платежный шлюз перенаправления, такой как Papal или Ingenico?
Франк Гарнье