Flux de commandes de l'API Rest Magento2

13

Je fais des appels API REST au site Web de magento pour passer une commande. Voici la séquence de mes appels.

  1. Créer un panier rest/V1/guest-carts/
  2. Obtenez le panier rest/V1/guest-carts/bae0af147b83f1561f66cc4e3c97916e
  3. Ajouter des produits au panier rest/V1/guest-carts/24/items
  4. Ajouter des informations de facturation, définir un mode de paiement et passer une commande rest/V1/guest-carts/24/payment-information

Dans cette séquence, la commande est placée avec le statut de commande "en attente". Je me demande comment le paiement est capturé via l'API si une passerelle de paiement (Ex. PayPal) est impliquée pour traiter le paiement et générer la facture.

Y a-t-il des API manquantes dans le flux ci-dessus pour capturer les paiements.

blakcaps
la source

Réponses:

11

J'ai utilisé une nouvelle installation pour les éléments suivants en utilisant Magento2 CE 2.2.0-dev, et j'ai également laissé le thème "Luma" par défaut.

En ce qui concerne les méthodes de paiement externes (passerelles) telles que MiGS , Braintree , PayPal et autres, Magento prend en charge ces passerelles prêtes à l' emploi , mais ne leur fournit AUCUNE API que vous pouvez utiliser avec d'autres API "Checkout".

Donc, si vous prévoyez de créer une application / page de paiement à l'aide des API de Magento, vous devrez vous intégrer manuellement à ces services à l'aide de leur SDK / API, heureusement, vous pouvez en apprendre beaucoup en vérifiant comment Magento s'intègre à ces services dans le build intégré. -dans les intégrations.

Pour comprendre cela, j'ai dû configurer Braintree car c'est le plus simple:

  1. Créez un compte sandbox sur https://www.braintreepayments.com/sandbox
  2. Accédez à la zone d'administration de Magento.
  3. Magasins> Configuration> Ventes> Modes de paiement> Braintree> Configurer.
  4. Assurez-vous que «Environnement» est «Sandbox» et entrez «Merchant ID», «Public Key» et «Private Key».
  5. Enregistrez la configuration.
  6. Vous devrez peut-être réindexer et / ou actualiser le cache.

Lors de l'ajout d'un produit au panier et de la procédure de paiement, à la dernière étape, choisissez le mode de paiement Braintree, puis après avoir cliqué sur le bouton "Passer la commande", vous remarquerez les demandes AJAX suivantes:

  1. 2 demandes à l'API Braintree pour valider la carte, effectuer la transaction et répondre avec l'état de la transaction.
  2. Une demande à l'API de Magento guest-carts/cartId/payment-informationavec le corps habituel comme expliqué dans la documentation de l'API de Magento.

Après cela, le processus se poursuit comme prévu avec une redirection vers la page de réussite lorsque la dernière demande répond en JSON contenant la commande entity_id

entrez la description de l'image ici

Cela confirme que les appels à des services externes -Braintree dans notre exemple- sont effectués par la page de paiement PAS par Magento en interne, nous devrons donc faire de même si nous voulons développer notre propre page / application de paiement.

En ce qui concerne le contrôle du statut de la commande, j'ai creusé plus profondément et découvert que l'utilisation de méthodes de paiement comme MiGS, Braintree ou PayPal, a abouti à une commande avec un statut processingau lieu de l'habituel pending, je soupçonnais qu'il s'agissait soit d'une configuration de méthode de paiement ou d'un observateur , mais cela semblait être une configuration, voici plus de détails.

Classe: Magento \ Ventes \ Modèle \ Commande \ Paiement

Méthode: Place ()

Il y a une condition qui vérifie si Initializationest requise pour la méthode if ($methodInstance->isInitializeNeeded()), si c'est le cas, une méthode initialize()est exécutée que vous définissez et vous permet de spécifier les deux stateet status.

Mahmoud Tantawy
la source
pouvez-vous partager la charge utile pour l'api d'informations de paiement
blakcaps
1
{"cartId": "a98697cba964d6ba0d3b64d78a31df33", "billingAddress": {"countryId": "EG", "regionId": null, "region": "", "street": ["street", ""], "company" ":" mon entreprise "," téléphone ":" 12346987 "," code postal ":" 12345 "," ville ":" ville "," prénom ":" f nom "," nom ":" l nom "," saveInAddressBook ": null}," paymentMethod ": {" method ":" braintree "," additional_data ": {" payment_method_nonce ":" ef27df81-7c29-4a74-9049-15de33f1f49f "}}," email ":" email @ example .com "}
Mahmoud Tantawy
Merci pour la charge utile. Je me demande comment générer "payment_method_nonce".
blakcaps
Je ne sais pas vraiment, mais je pense qu'en inspectant les demandes d'avant en arrière, le nonce peut être facilement découvert, s'il fonctionne vraiment comme un nonce.
Mahmoud Tantawy
1
Braintree semble facile à intégrer via l'API REST. Mais comment intégrer la passerelle de paiement de redirection externe telle que Papal ou Ingenico?
Franck Garnier