Fluxo de pedidos da API Rest Magento2

13

Estou fazendo chamadas da API REST ao site magento para fazer pedidos. Abaixo está a sequência das minhas chamadas.

  1. Crie um carrinho rest/V1/guest-carts/
  2. Obter o carrinho rest/V1/guest-carts/bae0af147b83f1561f66cc4e3c97916e
  3. Adicionar produtos ao carrinho rest/V1/guest-carts/24/items
  4. Adicione informações de cobrança, defina a forma de pagamento e faça o pedido rest/V1/guest-carts/24/payment-information

Nesta sequência, o pedido está sendo colocado com o status do pedido "pendente". Gostaria de saber como o pagamento é capturado através da API, se houver algum gateway de pagamento (por exemplo, PayPal) envolvido para processar o pagamento e gerar fatura.

Existe alguma API ausente no fluxo acima para capturar pagamentos.

blakcaps
fonte

Respostas:

11

Eu usei uma nova instalação para o seguinte, usando o Magento2 CE 2.2.0-dev, e também deixei o tema "Luma" padrão.

Em relação aos métodos de pagamento externos (gateways), como MiGS , Braintree , PayPal e outros, o Magento suporta esses gateways , mas não fornece APIs para eles que você pode usar junto com outras APIs "Checkout".

Portanto, se você planeja criar um aplicativo / página de checkout usando as APIs do Magento, precisará integrar-se manualmente com esses serviços usando o SDK / API deles, felizmente, poderá aprender muito verificando como o Magento se integra a esses serviços em integrações.

Para entender isso, eu tive que configurar o Braintree, pois é o mais fácil:

  1. Crie uma conta sandbox em https://www.braintreepayments.com/sandbox
  2. Acesse a área de administração do Magento.
  3. Lojas> Configuração> Vendas> Métodos de Pagamento> Braintree> Configurar.
  4. Verifique se "Ambiente" é "Sandbox" e insira "ID do comerciante", "Chave pública" e "Chave privada".
  5. Salvar configuração.
  6. Pode ser necessário reindexar e / ou atualizar o cache.

Ao adicionar um produto ao carrinho e proceder ao checkout, na última etapa, escolha o método de pagamento Braintree e, depois de clicar no botão "Fazer pedido", você notará as seguintes solicitações AJAX:

  1. 2 solicitações à Braintree API para validar o cartão, executar a transação e responder com o status da transação.
  2. Uma solicitação para a API do Magento guest-carts/cartId/payment-informationcom o corpo usual, conforme explicado na documentação da API do Magento.

Depois disso, o processo continua conforme o esperado com o redirecionamento para a página de sucesso quando a última solicitação responde em JSON que contém o pedido entity_id

insira a descrição da imagem aqui

Isso confirma que as chamadas para serviços externos - Braintree em nosso exemplo - são realizadas pela página de checkout NÃO pelo Magento internamente, portanto, precisaremos fazer o mesmo para desenvolver nossa própria página / aplicativo de checkout.

Quanto ao controle do status do pedido, examinei mais profundamente e descobri que o uso de métodos de pagamento como MiGS, Braintree ou PayPal resultou em um pedido com status em processingvez do usualpending . Suspeitei que essa seja uma configuração do método de pagamento ou um observador , mas parecia ser uma configuração, veja mais detalhes.

Classe: Magento \ Vendas \ Modelo \ Pedido \ Pagamento

Método: Place ()

Existe uma condicional que verifica se Initializationé necessário para o método if ($methodInstance->isInitializeNeeded()), se for esse o caso, initialize()é executado um método que você define e permite especificar ambos statee status.

Mahmoud Tantawy
fonte
você pode compartilhar a carga para a api de pagamento de informações
blakcaps
1
{"cartId": "a98697cba964d6ba0d3b64d78a31df33", "billingAddress": {"countryId": "EG", "regionId": null, "region": "" "," street ": [" street "," "]," company ":" minha empresa "," telefone ":" 12346987 "," código postal ":" 12345 "," cidade ":" cidade "," nome ":" nome f "," sobrenome ":" nome l "," saveInAddressBook ": null}," paymentMethod ": {" method ":" braintree "," additional_data ": {" payment_method_nonce ":" ef27df81-7c29-4a74-9049-15de33f1f49f "}}," email ":" email @ example " .com "}
Mahmoud Tantawy,
Obrigado pela carga útil. Gostaria de saber como gerar "payment_method_nonce".
blakcaps
Realmente não sei, mas acho que, examinando as solicitações, o nonce pode ser facilmente descoberto, se realmente funcionar como um nonce.
Mahmoud Tantawy
1
O Braintree parece fácil de integrar através da API REST. Mas como integrar o gateway de pagamento de redirecionamento externo, como Papal ou Ingenico?
Franck Garnier