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:
- Utwórz konto w piaskownicy na https://www.braintreepayments.com/sandbox
- Uzyskaj dostęp do obszaru administracyjnego Magento.
- Sklepy> Konfiguracja> Sprzedaż> Metody płatności> Braintree> Konfiguruj.
- Upewnij się, że „Środowisko” to „Piaskownica” i wprowadź „Identyfikator sprzedawcy”, „Klucz publiczny” i „Klucz prywatny”.
- Zapisz konfigurację
- 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:
- 2 żądania do interfejsu API Braintree w celu zweryfikowania karty, wykonania transakcji i odpowiada stanem transakcji.
- Żądanie do API Magento
guest-carts/cartId/payment-information
ze 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
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 processing
zamiast 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 Initialization
metoda jest wymagana if ($methodInstance->isInitializeNeeded())
, w takim przypadku initialize()
wykonywana jest metoda zdefiniowana przez użytkownika, która umożliwia określenie zarówno state
i status
.