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.
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 deCheckoutData
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 doCheckoutValues
. 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'),
)
)
)
);
}
}