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:
- Créez un compte sandbox sur https://www.braintreepayments.com/sandbox
- Accédez à la zone d'administration de Magento.
- Magasins> Configuration> Ventes> Modes de paiement> Braintree> Configurer.
- Assurez-vous que «Environnement» est «Sandbox» et entrez «Merchant ID», «Public Key» et «Private Key».
- Enregistrez la configuration.
- 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:
- 2 demandes à l'API Braintree pour valider la carte, effectuer la transaction et répondre avec l'état de la transaction.
- Une demande à l'API de Magento
guest-carts/cartId/payment-information
avec 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
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 processing
au 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 Initialization
est 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 state
et status
.