Przepływ zamówień Magento2 Rest API

13

Wykonuję wywołania interfejsu API REST na stronie magento w celu złożenia zamówienia. Poniżej znajduje się sekwencja moich połączeń.

  1. Utwórz wózek rest/V1/guest-carts/
  2. Zdobądź wózek rest/V1/guest-carts/bae0af147b83f1561f66cc4e3c97916e
  3. Dodaj produkty do koszyka rest/V1/guest-carts/24/items
  4. Dodaj informacje rozliczeniowe, ustaw metodę płatności i złóż zamówienie rest/V1/guest-carts/24/payment-information

W tej sekwencji zamówienie otrzymuje status ze statusem „w toku”. Zastanawiam się, w jaki sposób płatność jest przechwytywana za pośrednictwem interfejsu API, jeśli jakakolwiek bramka płatności (np. PayPal) jest zaangażowana w przetwarzanie płatności i generowanie faktury.

Czy w powyższym przepływie brakuje interfejsu API do przechwytywania płatności.

blakcaps
źródło

Odpowiedzi:

12

Użyłem świeżej instalacji dla następujących przy użyciu Magento2 CE 2.2.0-dev i pozostawiłem również domyślny motyw „Luma”.

Jeśli chodzi o zewnętrzne metody płatności (bramy), takie jak MiGS , Braintree , PayPal i inne, Magento obsługuje te bramy od razu po wyjęciu z pudełka, ale nie udostępnia żadnych interfejsów API, których można używać wraz z innymi interfejsami API „kasy”.

Jeśli więc planujesz zbudować aplikację / stronę kasy za pomocą interfejsów API Magento, musisz ręcznie zintegrować te usługi za pomocą ich SDK / API. Na szczęście możesz się wiele nauczyć, sprawdzając, jak Magento integruje się z tymi usługami -w integracjach.

Aby to zrozumieć, musiałem skonfigurować Braintree, ponieważ jest to najłatwiejsze:

  1. Utwórz konto w piaskownicy na https://www.braintreepayments.com/sandbox
  2. Uzyskaj dostęp do obszaru administracyjnego Magento.
  3. Sklepy> Konfiguracja> Sprzedaż> Metody płatności> Braintree> Konfiguruj.
  4. Upewnij się, że „Środowisko” to „Piaskownica” i wprowadź „Identyfikator sprzedawcy”, „Klucz publiczny” i „Klucz prywatny”.
  5. Zapisz konfigurację
  6. Może być konieczne ponowne indeksowanie i / lub odświeżanie pamięci podręcznej.

Po dodaniu produktu do koszyka i przejściu do kasy, w ostatnim kroku wybierz metodę płatności Braintree, a następnie po kliknięciu przycisku „Złóż zamówienie” zobaczysz następujące żądania AJAX:

  1. 2 żądania do interfejsu API Braintree w celu zweryfikowania karty, wykonania transakcji i odpowiada stanem transakcji.
  2. Żądanie do API Magento guest-carts/cartId/payment-informationze zwykłym ciałem, jak wyjaśniono w dokumentacji API Magento.

Następnie proces jest kontynuowany zgodnie z oczekiwaniami, z przekierowaniem na stronę sukcesu, gdy ostatnie żądanie odpowiada w JSON zawierającym zamówienie entity_id

wprowadź opis zdjęcia tutaj

Potwierdza to, że połączenia z zewnętrznymi usługami - w naszym przykładzie Braintree - są wykonywane przez stronę kasy NIE przez Magento wewnętrznie, więc będziemy musieli zrobić to samo, jeśli mamy opracować własną stronę / aplikację kasy.

Jeśli chodzi o kontrolowanie statusu zamówienia, kopałem głębiej i dowiedziałem się, że użycie metod płatności, takich jak MiGS, Braintree lub PayPal, spowodowało zamówienie ze statusem processingzamiast zwykłego pending, podejrzewałem, że jest to konfiguracja metody płatności lub obserwator , ale wyglądało to na konfigurację, oto więcej szczegółów.

Klasa: Magento \ Sprzedaż \ Model \ Zamówienie \ Płatność

Metoda: Place ()

Istnieje warunek, który sprawdza, czy Initializationmetoda jest wymagana if ($methodInstance->isInitializeNeeded()), w takim przypadku initialize()wykonywana jest metoda zdefiniowana przez użytkownika, która umożliwia określenie zarówno statei status.

Mahmoud Tantawy
źródło
czy możesz udostępnić ładunek dla interfejsu informacji o płatności
blakcaps,
1
{„cartId”: „a98697cba964d6ba0d3b64d78a31df33”, „billingAddress”: {„countryId”: „EG”, „regionId”: null, „region”: „”, „ulica”: [„ulica”, „”], „firma „:„ moja firma ”,„ telefon ”:„ 12346987 ”,„ kod pocztowy ”:„ 12345 ”,„ miasto ”:„ miasto ”,„ imię ”:„ f imię ”,„ nazwisko ”:„ l imię ”,„ saveInAddressBook ”: null},„ paymentMethod ”: {„ method ”:„ braintree ”,„ additional_data ”: {„ payment_method_nonce ”:„ ef27df81-7c29-4a74-9049-15de33f1f49f ”}},„ email ”:„ email @ przykład .com "}
Mahmoud Tantawy,
Dzięki za ładunek. Zastanawiam się, jak wygenerować „payment_method_nonce”.
blakcaps
Naprawdę nie wiem, ale myślę, że poprzez sprawdzanie żądań tam i z powrotem, że nonce można łatwo odkryć, jeśli naprawdę działa jako nonce.
Mahmoud Tantawy,
1
Braintree wydaje się łatwa do zintegrowania poprzez API REST. Ale jak zintegrować zewnętrzną bramkę płatności przekierowujących, taką jak Papal lub Ingenico?
Franck Garnier