Flusso ordine API Rest di Magento2


13

Sto effettuando chiamate API REST al sito Web di Magento per il posizionamento degli ordini. Di seguito è la sequenza delle mie chiamate.

  1. Crea un carrello rest/V1/guest-carts/
  2. Prendi il carrello rest/V1/guest-carts/bae0af147b83f1561f66cc4e3c97916e
  3. Aggiungi prodotti al carrello rest/V1/guest-carts/24/items
  4. Aggiungi le informazioni di fatturazione, imposta il metodo di pagamento e effettua l'ordine rest/V1/guest-carts/24/payment-information

In questa sequenza l'ordine sta ottenendo il posto con lo stato dell'ordine "in sospeso". Mi chiedo come il pagamento viene acquisito tramite API se un gateway di pagamento (es. PayPal) è coinvolto per elaborare il pagamento e generare la fattura.

C'è qualche API mancante nel flusso sopra per l'acquisizione dei pagamenti.

Risposte:


11

Ho usato una nuova installazione per quanto segue usando Magento2 CE 2.2.0-dev, e ho lasciato anche il tema predefinito "Luma".

Per quanto riguarda i metodi di pagamento esterni (gateway) come MiGS , Braintree , PayPal e altri, Magento supporta questi gateway immediatamente , ma NON fornisce API per loro che è possibile utilizzare insieme ad altre API "Checkout".

Quindi, se stai pianificando di creare un'app / pagina di checkout usando le API di Magento, dovrai integrarti manualmente con questi servizi usando il loro SDK / API, per fortuna, puoi imparare molto controllando come Magento si integra con questi servizi nella build -in integrazioni.

Per capirlo, ho dovuto configurare Braintree poiché è il più semplice:

  1. Crea un account sandbox su https://www.braintreepayments.com/sandbox
  2. Accedi all'area di amministrazione di Magento.
  3. Negozi> Configurazione> Vendite> Metodi di pagamento> Braintree> Configura.
  4. Assicurati che "Ambiente" sia "Sandbox" e inserisci "ID commerciante", "Chiave pubblica" e "Chiave privata".
  5. Salva config.
  6. Potrebbe essere necessario reindicizzare e / o aggiornare la cache.

Dopo aver aggiunto un prodotto al carrello e procedendo al pagamento, nell'ultimo passaggio, scegli il metodo di pagamento Braintree, quindi dopo aver fatto clic sul pulsante "Effettua ordine", noterai le seguenti richieste AJAX:

  1. 2 richieste all'API di Braintree per convalidare la carta, eseguire la transazione e rispondere con lo stato della transazione.
  2. Una richiesta all'API di Magento guest-carts/cartId/payment-informationcon il solito corpo come spiegato nella documentazione dell'API di Magento.

Successivamente il processo continua come previsto con il reindirizzamento alla pagina di successo quando l'ultima richiesta risponde in JSON contenente l'ordine entity_id

inserisci qui la descrizione dell'immagine

Ciò conferma che le chiamate a servizi esterni -Braintree nel nostro esempio- vengono eseguite dalla pagina di checkout NON da Magento internamente, quindi dovremo fare lo stesso se vogliamo sviluppare la nostra pagina / app di checkout.

Per quanto riguarda il controllo dello stato dell'ordine, ho scavato più a fondo e ho scoperto che l'utilizzo di metodi di pagamento come MiGS, Braintree o PayPal, ha portato a un ordine con stato processinganziché al solito pending, sospettavo che si tratti di una configurazione del metodo di pagamento o di un osservatore , ma sembrava essere una configurazione, qui ci sono più dettagli.

Classe: Magento \ Vendite \ Modello \ Ordine \ Pagamento

Metodo: Place ()

Esiste un condizionale che controlla se Initializationè richiesto per il metodo if ($methodInstance->isInitializeNeeded()), in tal caso, initialize()viene eseguito un metodo che si definisce e consente di specificare sia statee status.


puoi condividere il payload per l'API delle informazioni di pagamento
blakcaps,

1
{ "CARTID": "a98697cba964d6ba0d3b64d78a31df33", "billingAddress": { "countryID": "EG", "regionId": null, "regione": "", "strada": [ "strada", ""], "società ":" la mia azienda "," telefono ":" 12346987 "," codice postale ":" 12345 "," città ":" città "," nome ":" nome f "," cognome ":" nome "," saveInAddressBook ": null}," paymentmethod ": {" metodo ":" Braintree " "additional_data": { "payment_method_nonce": "ef27df81-7c29-4a74-9049-15de33f1f49f"}}, "email":" e-mail @ esempio .com "}
Mahmoud Tantawy

Grazie per il payload. Mi chiedo come generare "payment_method_nonce".
blakcaps

Non lo so, ma penso esaminando le richieste avanti e indietro che il nonce può essere facilmente scoperto, se funziona davvero come un nonce.
Mahmoud Tantawy,

1
Braintree sembra facile da integrare tramite l'API REST. Ma come integrare il gateway di pagamento di reindirizzamento esterno come Papal o Ingenico?
Franck Garnier,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.