Pagaleve Flutter

Visão Geral

O SDK Pagaleve para Flutter oferece uma maneira fácil de integrar o processo de checkout do Pagaleve em seu aplicativo Flutter.

Flutter Pub

Instalação

Você pode instalar o SDK da Pagaleve de duas maneiras diferentes

Método 1: Adicionando ao pubspec.yaml

Adicione a dependência diretamente ao seu arquivo pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter
  pagaleve_flutter: ^1.0

Depois, execute o comando:

flutter pub get

Método 2: Usando o comando flutter pub add

Você também pode adicionar o SDK usando o comando flutter pub add no terminal:

flutter pub add pagaleve_flutter

O flutter pub add irá atualizar automaticamente o seu arquivo pubspec.yaml e executar flutter pub get para você.

Inicialização do Checkout

O método checkout inicia o processo de checkout e retorna uma página de OTP. Os parâmetros que serão passados no checkout, são os mesmos que estão na documentação: Criar checkout

Método checkout

Parâmetros

  • context: Objeto que representa a localização de um widget na árvore de widgets do Flutter. Ele é usado para obter informações sobre a árvore de widgets e manipular a navegação e a renderização dos widgets. (Veja mais)

  • data: Instância de CheckoutData que possui os dados necessários para o processo de checkout, os quais incluem informações do pedido, do comprador, dados de envio, entre outros. Esses dados são passados para a API de checkout da Pagaleve para completar a transação. Exemplo:

final CheckoutData checkoutData = CheckoutData(
  metadata: {},
  order: Order(
    amount: 20000,
    description: "description",
    items: [
      Item(
        image: "http://pagaleve.com.br",
        name: "Blusa Verde Lily",
        price: 12000,
        quantity: 1,
        reference: "reference",
        sku: "sku",
        url: "http://pagaleve.com.br",
      ),
      Item(
        image: "http://pagaleve.com.br",
        name: "Sapato Feminino Couro Preto",
        price: 6000,
        quantity: 1,
        reference: "reference",
        sku: "sku",
        url: "http://pagaleve.com.br",
      ),
      Item(
        image: "http://pagaleve.com.br",
        name: "Cinto Faixa Fivela Plástico Gloss Promoção Inverno",
        price: 2000,
        quantity: 1,
        reference: "reference",
        sku: "sku",
        url: "http://pagaleve.com.br",
      ),
    ],
    metadata: {},
    reference: "PL20240625021025",
    shipping: Shipping(
      address: Address(
        city: "São Paulo",
        complement: "",
        name: "Office",
        neighborhood: "Vila Madalena",
        number: "590",
        phoneNumber: "11987654387",
        state: "SP",
        street: "Rua Harmonia",
        zipCode: "05435001",
      ),
      amount: 1000,
      pickup: false,
      tracking: Tracking(carrier: "carrier", code: "code", url: "url"),
    ),
    tax: 20,
  ),
  shopper: Shopper(
    billingAddress: Address(
      city: "City",
      complement: "",
      name: "Jane Doe",
      neighborhood: "Neighborhood",
      number: "123",
      phoneNumber: "11987654321",
      state: "XX",
      street: "Street",
      zipCode: "12345678",
    ),
    birthDate: "2000-01-01T00:00:00.000Z",
    cpf: "12345678901",
    email: "email@email.com",
    firstName: "John",
    lastName: "Doe",
    phone: "99123456789",
  )
);
  • onSuccess: Função chamada quando o checkout é concluído com sucesso. Retorna uma instância do CheckoutValues. Exemplo do retorno:
{
  'checkoutId': 'a1b9f49b-b3ee-48c1-b30d-14f64b80b5ce',
}
  • onError: Função chamada quando ocorre um erro durante o processo de checkout, retorna uma das seguintes exceptions.
Exception Motivo
CheckoutGenericException Erro desconhecido.
CheckoutCancelledException Checkout foi cancelado manualmente pelo usuário.
InvalidCustomerFieldsException Campos do cliente (shopper) estão incompletos ou com erros.

Exemplo

import 'package:pagaleve_flutter/pagaleve_flutter.dart';

void main() {
  runApp(const SdkExample());
}

class SdkExample extends StatefulWidget {
  const SdkExample({super.key});

  @override
  State<SdkExample> createState() => _SdkExampleState();
}

class _SdkExampleState extends State<SdkExample> {
  Pagaleve pagaleve = Pagaleve(
    apiKey: <API-KEY>, // Login
    apiSecret: <API-SECRET>, // Password
    environment: 'Stage', // Optional param. Default: 'Production'
  );

  @override
  Widget build(BuildContext context) {
    onSubmit(CheckoutData data) async {
      await pagaleve.checkout(
        context,
        data: data,
        onSuccess: (CheckoutValues values) {
          // Implemente sua função de sucesso aqui
        },
        onError: (Object error) {
          // Implemente sua função para lidar com erros aqui
        },
      );
    }

    return MaterialApp(
      home: Scaffold(
        body: Padding(
          padding: const EdgeInsets.all(16),
          child: TextButton(
            onPressed: onSubmit(data)
            child: const Text('Criar checkout'),
          )
        )
      )
    );
  }
}