Processo de Fechamento de Pedido através do Storefront API

Etapas

  1. Cadastro de Usuário: Criação de um novo usuário
  2. Cadastro de Endereço de Usuário: Cadastro de um endereço do usuário
  3. Criando um Carrinho:
    3.1 Adicionando ou Removendo Produtos ao Carrinho: Inserindo ou Removendo um produto ao carrinho.
    3.2 Adicionando produto com assinatura ao Carrinho: Inserindo um produto de assinatura ao carrinho.
    3.3 Adicionando produto com personalização ao Carrinho: Inserindo um produto com personalização ao carrinho.
  4. Realizando Login Autenticado : e-mail e senha: Criando um token de acesso às informações de um usuário.
  5. Associando o Cliente ao Carrinho: Criação de um novo carrinho e posterior associação ao cliente.
  6. Selecionando Endereço de Entrega: Selecionando um endereço de entrega para o checkout.
  7. Listagem das Formas de Envio: A API retorna as opções de envio disponíveis para o carrinho.
  8. Seleção da Forma de Envio: A opção de envio é selecionada.
    8.1 Agendamento de Entrega: Opção de agendar a entrega do produto.
    8.2 Retirada na Loja(com informações adicionais): Opção de retirar o produto na loja.
  9. Aplicando um Cupom de Desconto: Adicionando um cupom de desconto ao carrinho.
  10. Listagem das Formas de Pagamento: A API retorna todas as opções de pagamento disponíveis para o carrinho.
  11. Seleção da Forma de Pagamento: A opção de pagamento é selecionada.
  12. Seleção do Parcelamento de Forma de Pagamento: Selecionando um parcelamento conforme configurado na loja.
  13. Fechamento do Carrinho: O carrinho é fechado e o pedido é concluído.

Cadastrando um usuário

Para realizar o cadastro de um usuário, basta enviar a requisição com os parâmetros necessários.

mutation($input: CustomerCreateInput) { customerCreate(input: $input) { customerId customerName customerType } }
{ "input": { "address": "Rua das Flores", "addressNumber": "111", "cep": "80200-000", "city": "Curitiba", "cpf": "070.347.090-68", "email": "teste2023@gmail.com", "fullName": "Feliciano da Silva", "gender": "MALE", "state": "PR", "neighborhood": "Fioravante Marino", "primaryPhoneAreaCode": "41", "primaryPhoneNumber": "99111-0001", "password": "123456", "passwordConfirmation": "123456", "customerType": "PERSON", "birthDate": "10/01/1980", "receiverName": "Joaquim Pereira" } }
{ "data": { "customerCreate": { "customerId": 407675, "customerName": "Feliciano da Silva", "customerType": "Física" } } }

Realizando o Login Autenticado

Para realizar o Login é necessário realizar a requisição conforme exemplo abaixo.

mutation { customerAuthenticatedLogin(input:{input: $input, password: $pass}) { isMaster token type validuntil } }
{ "input": "meuemail@teste.com.br", "pass": "123456", }
{ "data": { "customerAuthenticatedLogin": { "isMaster": true, "token": "token", "type": "AUTHENTICATED", "validUntil": "2023-12-07-18T15:27:36.087-03:00" } } }

Cadastrando o Endereço do Usuário

Para realizar o cadastro de um endereço do usuário, basta enviar a requisição com os parâmetros necessários.

mutation($address: CreateCustomerAddressInput!, $customerAccessToken: String!) { customerAddressCreate( address: $address customerAccessToken: $customerAccessToken ) { id name addressDetails } }
{ "address": { "addressNumber": "120", "cep": "05707-001", "city": "São Paulo", "country": "BR", "email": "teste2023@gmail.com", "name": "Vanderléia dos Santos", "neighborhood": "Novo Horizonte", "phone": "1199122-0001", "state": "SP", "street": "Rua Itapaiuna" }, "customerAccessToken": "CFyqybUNFBllxImseZwTKiS2d7405lpiC9Ph3YtqGiCB+6cWEkFZfA2Xgw1YAZCiqocNxMFGrI5PVjirwXJuRDwmPJoHSJnV1MflmTqtpVw7WdE/1RRmo8uMHhit7Guw63gCxKj+ilPd77Y9YcAetv/QfRk3l9/54tnYRF31A5s6oBmqFIBtaU3dx42WbKTX" }
{ "data": { "customerAddressCreate": { "id": "eyJFbnRpdHkiOiJDdXN0b21lckFkZHJlc3MiLCJJZCI6NjgwNDg0fQ==", "name": "Vanderléia dos Santos", "addressDetails": null } } }

Criando um Carrinho

A primeira requisição é uma mutation que cria um novo carrinho. A requisição deve conter a lista de produtos que devem ser adicionados ao carrinho. A resposta da API será um objeto que representa o carrinho criado.

mutation($products: [CheckoutProductItemInput]) { createCheckout(products: $products) { ...checkoutFields } } fragment checkoutFields on Checkout { checkoutId products { productVariantId quantity } }
{ "products": [ { "productVariantId": 258198, "quantity": 1 } ] }
{ "data": { "createCheckout": { "checkoutId": "ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438", "products": [ { "productVariantId": 258198, "quantity": 1 } ] } } }

Associando o usuário ao carrinho

A próxima requisição é uma mutation que associa um cliente ao carrinho criado. A requisição deve conter o ID do carrinho e o token do cliente.

mutation($customerAccessToken: String!, $checkoutId: Uuid!) { checkoutCustomerAssociate( customerAccessToken: $customerAccessToken checkoutId: $checkoutId ) { ...checkoutFields } } fragment checkoutFields on Checkout { cep checkoutId customer { cnpj cpf creditLimit creditLimitBalance customerId customerName email phoneNumber } selectedAddress { addressNumber cep city complement id neighborhood referencePoint state street } }
{ "checkoutId": "ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438", "customerAccessToken": "CFyqybUNFBllxImseZwTKiS2d7405lpiC9Ph3YtqGiCB+6cWEkFZfA2Xgw1YAZCiqocNxMFGrI5PVjirwXJuRDwmPJoHSJnV1MflmTqtpVw7WdE/1RRmo8uMHhit7Guw63gCxKj+ilPd77Y9YcAetv/QfRk3l9/54tnYRF31A5s6oBmqFIBtaU3dx42WbKTX" }
{ "data": { "checkoutCustomerAssociate": { "cep": 5707001, "checkoutId": "ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438", "customer": { "cnpj": "", "cpf": "07034709068", "creditLimit": 0, "creditLimitBalance": 0, "customerId": 407675, "customerName": "Feliciano da Silva", "email": "teste2023@gmail.com", "phoneNumber": "4199111-0001" }, "selectedAddress": { "addressNumber": "120", "cep": 5707001, "city": "São Paulo", "complement": null, "id": "680484", "neighborhood": "Novo Horizonte", "referencePoint": null, "state": "SP", "street": "Rua Itapaiuna" } } } }

Selecionando Endereço de Entrega

Para selecionar um endereço para entrega, basta enviar a requisição com os parâmetros necessários.

mutation($customerAccessToken: String!, $addressId: ID!, $checkoutId: Uuid!) { checkoutAddressAssociate( customerAccessToken: $customerAccessToken addressId: $addressId checkoutId: $checkoutId ) { cep checkoutId url updateDate } }
{ "customerAccessToken": "CFyqybUNFBllxImseZwTKiS2d7405lpiC9Ph3YtqGiCB+6cWEkFZfA2Xgw1YAZCiqocNxMFGrI5PVjirwXJuRDwmPJoHSJnV1MflmTqtpVw7WdE/1RRmo8uMHhit7Guw63gCxKj+ilPd77Y9YcAetv/QfRk3l9/54tnYRF31A5s6oBmqFIBtaU3dx42WbKTX", "addressId":"eyJFbnRpdHkiOiJDdXN0b21lckFkZHJlc3MiLCJJZCI6NjgwNDg0fQ==", "checkoutId":"ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438" }
{ "data": { "checkoutAddressAssociate": { "cep": 5707001, "checkoutId": "ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438", "url": "https://lojacss.checkout.fbits.store/", "updateDate": "2023-07-06T15:53:48.820-03:00" } } }

Listando as Formas de Envio

A seguinte requisição é uma query que retorna todas as opções de envio disponíveis para o carrinho. A requisição deve conter o ID do carrinho. A resposta da API será uma lista de opções de envio.

query($checkoutId: Uuid!) { shippingQuotes(checkoutId: $checkoutId, useSelectedAddress: true) { deadline name products { productVariantId value } shippingQuoteId type value } }
{ "checkoutId": "ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438" }
{ "data": { "shippingQuotes": [ { "deadline": 0, "name": "Teste 859", "products": [ { "productVariantId": 258198, "value": 0 } ], "shippingQuoteId": "0f1ddf45-4feb-4a7d-a8b3-2bd7cd83d126", "type": "Retirada", "value": 0 }, { "deadline": 0, "name": "Tray Corp - Macapá", "products": [ { "productVariantId": 258198, "value": 0 } ], "shippingQuoteId": "503a4fb8-dfff-4d3f-952d-9b6f3403495d", "type": "Retirada", "value": 0 }, { "deadline": 13, "name": "Transportadora Ágil", "products": [ { "productVariantId": 258198, "value": 25.12 } ], "shippingQuoteId": "d455624d-aa1a-40ae-be89-5ef52b4d0e37", "type": "Tabela", "value": 25.12 }, { "deadline": 3, "name": "Teste contrato 1", "products": [ { "productVariantId": 258198, "value": 106 } ], "shippingQuoteId": "476151ee-682d-4f82-b7ed-465d5641a4ef", "type": "Tabela", "value": 106 } ] } }

Selecionando a Forma de Envio com informações adicionais

A próxima requisição é uma mutation que seleciona a opção de envio para o carrinho.

mutation( $checkoutId: Uuid! $shippingQuoteId: Uuid! $additionalInformation: InStorePickupAdditionalInformationInput ) { checkoutSelectShippingQuote( checkoutId: $checkoutId shippingQuoteId: $shippingQuoteId additionalInformation: $additionalInformation ) { ...checkoutFields } } fragment checkoutFields on Checkout { cep checkoutId shippingFee total subtotal selectedShipping { deadline name shippingQuoteId type value deliverySchedule { date endDateTime endTime startDateTime startTime } } }
{ "shippingQuoteId": "503a4fb8-dfff-4d3f-952d-9b6f3403495d", "checkoutId": "ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438", "additionalInformation": { "document": "123456", "name": "Armando" } }
{ "data": { "checkoutSelectShippingQuote": { "cep": 5707001, "checkoutId": "ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438", "shippingFee": 0, "total": 8721.7, "subtotal": 670.9, "selectedShipping": { "deadline": 0, "name": "Tray Corp - Macapá", "shippingQuoteId": "503a4fb8-dfff-4d3f-952d-9b6f3403495d", "type": "Retirada", "value": 0, "deliverySchedule": null } } } }

Aplicando um Cupom de Desconto

Para aplicar um cupom de desconto a um carrinho, basta enviar a requisição com os parâmetros necessários.

mutation($checkoutId: Uuid!, $coupon: String!, $customerAccessToken: String) { checkoutAddCoupon( checkoutId: $checkoutId coupon: $coupon customerAccessToken: $customerAccessToken ) { checkoutId coupon total subtotal } }
{ "checkoutId": "ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438", "coupon": "promo1", "customerAccessToken":"CFyqybUNFBllxImseZwTKiS2d7405lpiC9Ph3YtqGiCB+6cWEkFZfA2Xgw1YAZCiqocNxMFGrI5PVjirwXJuRDwmPJoHSJnV1MflmTqtpVw7WdE/1RRmo8uMHhit7Guw63gCxKj+ilPd77Y9YcAetv/QfRk3l9/54tnYRF31A5s6oBmqFIBtaU3dx42WbKTX" }
{ "data": { "checkoutAddCoupon": { "checkoutId": "ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438", "coupon": "promo1", "total": 8721.7, "subtotal": 670.9 } } }

Listagem das Formas de Pagamento

Para obter a listagem das formas de pagamento, basta realizar a consulta conforme exemplo da requisição abaixo.

query($checkoutId: Uuid!) { paymentMethods(checkoutId: $checkoutId) { id name imageUrl } }
{ "checkoutId": "ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438" }
{ "data": { "paymentMethods": [ { "id": "eyJFbnRpdHkiOiJQYXltZW50TWV0aG9kIiwiSWQiOjM3Nzd9", "name": "Boleto", "imageUrl": "https://conector.ecommercegateway.com.br/Recursos/Imagens/055b3df3-d185-438b-8e1a-b0b9c5d639d2.png" } ] } }

Selecionando a Forma de Pagamento

A próxima requisição é uma mutation que seleciona a opção de pagamento para o carrinho.

mutation($checkoutId: Uuid!, $paymentMethodId: ID!) { checkoutSelectPaymentMethod( checkoutId: $checkoutId paymentMethodId: $paymentMethodId ) { ...checkoutFields } } fragment checkoutFields on Checkout { checkoutId total subtotal selectedPaymentMethod { id installments { adjustment number total value } selectedInstallment { adjustment number total value } } }
{ "checkoutId": "ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438", "paymentMethodId": "eyJFbnRpdHkiOiJQYXltZW50TWV0aG9kIiwiSWQiOjM3Nzd9" }
{ "data": { "checkoutSelectPaymentMethod": { "checkoutId": "ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438", "total": 8721.7, "subtotal": 670.9, "selectedPaymentMethod": { "id": "25a95a84-5013-42a8-ae5e-7f7710f91238", "installments": [ { "adjustment": -0.1, "number": 1, "total": 7849.53, "value": 7849.53 } ], "selectedInstallment": { "adjustment": -0.1, "number": 1, "total": 7849.53, "value": 7849.53 } } } } }

Concluindo o Pedido

Finalmente, concluímos o pedido. Essa mutation fecha o carrinho, e é nesse momento que o pedido é efetivamente criado no sistema. É importante notar que, dependendo do método de pagamento selecionado, informações adicionais de pagamento podem ser necessárias.

mutation ( $checkoutId: Uuid! $paymentData: String! $comments: String $customerAccessToken: String ) { checkoutComplete( checkoutId: $checkoutId paymentData: $paymentData comments: $comments customerAccessToken: $customerAccessToken ) { ...checkoutFields } } fragment checkoutFields on Checkout { checkoutId completed orders { adjustments { name type value } date discountValue interestValue orderId orderStatus products { adjustments { name additionalInformation type value } attributes { name value } imageUrl name productVariantId quantity value } shippingValue totalValue delivery { address { address cep city complement name isPickupStore neighborhood pickupStoreText } cost deliveryTime name } dispatchTimeText payment { invoice { digitableLine paymentLink } name pix { qrCode qrCodeExpirationDate qrCodeUrl } } } }
{ "paymentData": "cpf=72628449030&telefone=11912345674", "comments": "Observação do Pedido", "checkoutId": "ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438", "customerAccessToken": "CFyqybUNFBllxImseZwTKiS2d7405lpiC9Ph3YtqGiCB+6cWEkFZfA2Xgw1YAZCiqocNxMFGrI5PVjirwXJuRDwmPJoHSJnV1MflmTqtpVw7WdE/1RRmo8uMHhit7Guw63gCxKj+ilPd77Y9YcAetv/QfRk3l9/54tnYRF31A5s6oBmqFIBtaU3dx42WbKTX" }
{ "data": { "checkoutComplete": { "checkoutId": "ce8ac3c3-c8f9-4393-9a0a-ac80e2aee438", "completed": true, "orders": [ { "adjustments": [ { "name": "IPI PR", "type": "Formula", "value": 8050.8 } ], "date": "2023-07-06T16:35:40.007-03:00", "discountValue": -872.17, "interestValue": 0, "orderId": 346266, "orderStatus": "AWAITING_PAYMENT", "products": [ { "adjustments": [ { "name": "Tray Corp - Macapá", "additionalInformation": "Tray Corp - Macapá - 503a4fb8-dfff-4d3f-952d-9b6f3403495d", "type": "Frete", "value": 0 }, { "name": "Promoção", "additionalInformation": "{\"id\":10590, \"nome\": \"vale presente\", \"cupom\": \"\"}", "type": "PromocaoProduto", "value": -499 }, { "name": "IPI PR", "additionalInformation": "{\"ChaveAjuste\":\"3c31f902-a117-4118-afe1-8fc360b6896e\",\"Formula\":\"Testes Postman (NÃO INATIVAR!)\",\"Matriz\":\"PR\",\"EndPoint\":null,\"Expressao\":\"(@subtotalCarrinho * 5) / 100 + @matriz \",\"ExpressaoInterpretada\":\"@670.9 *@12\",\"Valor\":8050.8,\"Nome\":\"Testes Postman (NÃO INATIVAR!) PR\",\"ProdutoVarianteId\":258198}", "type": "Formula", "value": 8050.8 }, { "name": "", "additionalInformation": "Pagamento rateado", "type": "FormaPagamento", "value": -872.17 } ], "attributes": [ { "name": "COR", "value": "Vermelho" } ], "imageUrl": "https://lojacss.fbitsstatic.net/img/p/sem-foto.jpg", "name": "Poltrona Cadeira Decorativa Chesterfield Suede Vermelho Recepção Sala de Estar - AM Decor", "productVariantId": 258198, "quantity": 1, "value": 670.9 } ], "shippingValue": 0, "totalValue": 7849.53, "delivery": { "address": { "address": "Avenida Diógenes Silva, 100", "cep": "68901-326", "city": "Macapá - AP", "complement": null, "name": null, "isPickupStore": true, "neighborhood": "Santa Rita", "pickupStoreText": null }, "cost": 0, "deliveryTime": 0, "name": "Tray Corp - Macapá" }, "dispatchTimeText": "(após pedido ser despachado):", "payment": { "invoice": { "digitableLine": "23790.00124 60010.020216 68123.456706 1 94080000784953", "paymentLink": "https://intermediador-sandbox.yapay.com.br/orders/billet/0c53a156b93246e7a712c245af6268d8" }, "name": "Boleto", "pix": null } } ] } } }

Documentações de cada operação