Wallet Google Pay e Apple Pay

Esta documentação descreve o processo de integração para criar um fluxo de pagamento com wallets, incluindo: criação de cliente, sessão de checkout e envio de dados de pagamento.


1. Criação do customer na Barte

Para que o fluxo funcione, esta deve ser a primeira API que deve ser utilizada em usa integração.

Utilizando o método POST em /v2/buyers, você cadastra o comprador que irá realizar a compra. A seguir está um exemplo de chamada de cadastro:

POST /v2/buyers HTTP/1.1
Host: api.barte.com
X-Token-Api: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 400

{
  "document": {
    "documentNumber": "36880261019",
    "documentType": "cpf",
    "documentNation": "BR"
  },
  "name": "Tester",
  "email": "comprador@email.com",
  "countryCode": "+55",
  "phone": "34999991111",
  "alternativeEmail": "compradoralt@email.com",
  "address": {
    "street": "Rua Orleans",
    "number": "100",
    "complement": "Bloco A",
    "district": "Jardim Europa",
    "city": "Uberlândia",
    "state": "Minas Gerais",
    "country": "BR",
    "zipCode": "38414552"
  }
}

Quando o cliente for criado com sucesso, será retornado um uuid na resposta, um identificador único do cliente na Barte. Esse identificador será necessário na etapa subsequente.

Resposta de sucesso:

{
    "uuid": "1ee849a4-6bb3-47f0-b32a-293a8f0e811c",
    "document": "05212972130",
    "name": "Christian",
    "countryCode": "+55",
    "phone": "34999991111",
    "email": "comprador@email.com",
    "alternativeEmail": "compradoralt@email.com"
}

Você também poderá recuperar o uuid do buyer através do método GET em /v2/buyers, filtrando pelo parâmetro de sua preferência, como documento, nome ou e-mail.


2. Criar customer na Yuno

Após a criação do cliente na Barte, é necessário registrar o cliente também na Yuno para sincronizar os dados entre as duas plataformas. Para isso, você pode seguir o exemplo da chamada abaixo:

curl --location --request POST '<https://api.barte.com/v2/providers/yuno/buyers/{{uuid_buyer_barte}>}' \\
--header 'X-Token-Api: {{seu_token_api}}' \\
--header 'Content-Type: application/json'

Quando o cliente for criado com sucesso, será retornado o integrationCustomerId na resposta, um identificador único do cliente na Yuno.

Resposta de sucesso:

{
    "integrationCustomerId": "98cafcac-6d3b-4863-959b-f4ceabf96cdf"
}

3. Criar sessão de checkout

Com o cliente criado, o próximo passo é iniciar uma sessão de checkout. Realize um chamada POST para /v2/providers/yuno/session - abaixo está o exemplo do JSON que deverá ser enviado:

POST /v2/providers/yuno/session HTTP/1.1
Host: api.barte.com
X-Token-Api: YOUR_API_KEY
Accept: */*

{
    "country": "BR",
    "amount": {
        "currency": "BRL",
        "value": 349
    },
    "uuidBuyer": "{{uuidBuyer}}",
    "merchantOrderId": "{{merchantOrderId}}",
    "paymentDescription": "Teste de pagamento"
}

Parâmetros:

  • uuidBuyer: você deverá enviar o uuid do buyer criado com a Barte;

  • merchantOrderId: UUID único gerado exclusivamente para essa transação. Salve-o para uso posterior.

Resposta de sucesso:

{
    "checkoutSession": "886eb109-4149-41c3-8f2f-6c85545bda21",
    "country": "BR",
    "paymentDescription": "Teste erick",
    "customerId": "98cafcac-6d3b-4863-959b-f4ceabf96cdf",
    "amount": {
        "currency": "BRL",
        "value": 349
    },
    "createdAt": "2024-11-11T14:44:22.534439Z",
    "workflow": "SDK_CHECKOUT",
    "installments": {}
}

4. Listar métodos de pagamento

Com o checkout criado, você deve listar os métodos de pagamentos disponíveis. Eles deverão se mostrados no front-end para que o seu cliente possa escolher.

curl --location -g --request GET '<https://api.barte.com/v2/providers/yuno/session/{{checkoutSessionId}>}/payment-methods' \\\\
--header 'X-Token-Api: {{seu_token_api}}'

Parâmetros:

  • checkoutSessionId: você deverá enviar o checkoutSession que foi retornado na etapa anterior.

Resposta de sucesso:

[
   {
        "name": "Google Pay",
        "description": "Google Pay",
        "type": "GOOGLE_PAY",
        "category": "WALLET",
        "icon": "<https://icons.prod.y.uno/googlepay_logosimbolo.png>",
        "lastSuccessfullyUsed": "true",
        "lastSuccessfullyUsedAt": "2024-11-11T14:49:09.546983419Z",
        "checkout": {
            "session": "db5df2bf-62b1-4b3e-8b78-ba7c922b2fb0",
            "sdkRequiredAction": false,
            "conditions": {
                "enabled": true
            }
        },
        "preferred": false
   }  
]

🚨O parâmetro type deverá ser enviado como paymentMethodType na seção *Iniciando o checkout.* Possíveis types: GOOGLE_PAY, APPLE_PAY


5. Selecionar um método de pagamento

Quando o cliente escolhe um método de pagamento, o processo de checkout deverá ser iniciado com o método selecionado.


6. Iniciando o checkout

Com o método selecionado, você conseguirá iniciar o SDK do checkout. Chame a função buildCheckout apresentada abaixo - será gerado o OneTimeToken, esse uuid deve ser usado para iniciar o pagamento.

Exemplo abaixo:

<!DOCTYPE html>
<html lang="pt-BR">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>SDK Integration</title>
    <script src="<https://sdk-web.y.uno/v1/static/js/main.min.js>"></script>
  </head>
  <body>
    <script>
      
	    async function buildCheckout() {
	    
		    const yuno = Yuno.initialize(public_key);
	    
        yuno.startCheckout({
          checkoutSession: checkoutSessionId,
          elementSelector: "#root",
          countryCode: "BR",
          language: "pt",
          showLoading: true,
          keepLoader: true,
          issuersFormEnable: true,
          renderMode: {
            type: "element",
            elementSelector: "#rootElement",
          },
          card: {
            type: "extends",
            cardSaveEnable: true,
          },
       
          onLoading: (args) => {
            console.log(args);
          },
       
          async yunoCreatePayment(oneTimeToken) {
	          console.log("oneTimeToken: " + oneTimeToken)
	          
            **await createPayment();**          
            
            yuno.continuePayment({ showPaymentStatus: true });
          },
          yunoPaymentMethodSelected(data) {
            console.log("onPaymentMethodSelected", data);
          },
          yunoPaymentResult(data) {
            console.log("yunoPaymentResult", data);
            yuno.hideLoader();
          },
          yunoError: (error) => {
            console.log("There was an error", error);
            yuno.hideLoader();
          },
        });

        yuno.mountCheckoutLite({
          paymentMethodType: "{{type}}",
        });
      }
    </script>
  </body>
</html>

🚨Nota: A função createPayment() deve ser substituída pelo endpoint explicado na etapa seguinte.

Parâmetros:

  • public_key: envie a sua chave pública cadastrada na Yuno;

  • checkoutSessionId: você deverá enviar o checkoutSession que foi retornado na etapa “ Criar sessão de checkout”;

  • paymentMethodType: você passará o type retornado na etapa 4.

    ⚠️Possíveis types: GOOGLE_PAY, APPLE_PAY

Documentações complementares:

https://docs.y.uno/docs/lite-checkout-ios - IOS

https://docs.y.uno/docs/lite-checkout-android - Android

7. Criar ordem de pagamento

O último passo é chamar a API de orders e, assim, iniciar o pagamento via wallet.

curl --location --request POST '<https://api.barte.com/v2/orders>' \\
--header 'X-Token-Api: {{seu_token_api}}' \\
--header 'Content-Type: application/json' \\
--data-raw '{
    "startDate": "2025-09-10",
    "value": 1250,
    "installments": 3,
    "title": "Titulo - Lili UfdeDn",
    "payment": {
        "method": "{{type}}",
        "wallet": {
            "oneTimeToken": "{{oneTimeToken}}",
            "checkoutSessionUuid": "{{checkoutSessionId}}",
            "integrationOrderId" : "{{merchantOrderId}}"
        },
        "fraudData": {
            "internationalDocument": {
                "documentNumber": "53824569337",
                "documentType": "CPF",
                "documentNation": "BR"
            },
            "name": "Lili",
            "email": "strigus@mock.com",
            "phone": "5511999994444",
            "billingAddress": {
                "country": "BR",
                "state": "MG",
                "city": "Uberlandia",
                "district": "Patrimonio",
                "street": "Rua de test",
                "zipCode": "38411999"
            }
        }
    },
    "metadata": [
        {
            "key": "RegressivoVersion1",
            "value": "rdjwbK"
        }
    ],
    "uuidBuyer": "{{uuidBuyer}}"
}'

Quando a requisição for processada com sucesso você terá o seguinte retorno:

{
    "uuid": "435d2dbb-1253-45c7-acb8-ad70fcb8b6cc",
    "status": "SENT",
    "title": "Título da Ordem",
    "value": 349,
    "installments": 1,
    "startDate": "2024-11-11",
    "payment": "GOOGLE_PAY",
    "customer": {
        "document": "04386909079",
        "type": "CPF",
        "documentCountry": "BR",
        "name": "João da Barte",
        "email": "joao@email.com",
        "phone": "34999992222",
        "alternativeEmail": "alternativo@mock.com",
        "integrationCustomerId": "98cafcac-6d3b-4863-959b-f4ceabf96cdf"
    },
    "idempotencyKey": "83ae7caf-6291-4884-977a-e4c405b3db46"
}

Atualizado

Isto foi útil?