ms_infinitepay 1.0.0 copy "ms_infinitepay: ^1.0.0" to clipboard
ms_infinitepay: ^1.0.0 copied to clipboard

Pacote para criação de Checkouts de pagamentos pela InfinitePay

ms_infinitepay #

Biblioteca Dart/Flutter para integração com a API de checkout da InfinitePay.

Com essa integração, você pode gerar links de pagamento automaticamente e acompanhar as vendas em tempo real de forma incrivelmente simples!

Features #

  • ✅ Criação de links de checkout de forma simples e direta
  • ✅ Verificação de status de pagamentos
  • ✅ Suporte a webhooks para notificações em tempo real
  • ✅ Suporte completo a Pix e Cartão de Crédito
  • ✅ API totalmente documentada em português
  • ✅ Type-safe com modelos de dados bem definidos

Getting started #

Instalação #

Adicione a dependência no seu pubspec.yaml:

dependencies:
  ms_infinitepay: ^1.0.0

Pré-requisitos #

Você precisará de:

  • Uma conta na InfinitePay
  • Sua InfiniteTag (nome de usuário no App InfinitePay, sem o símbolo $)

Usage #

import 'package:ms_infinitepay/ms_infinitepay.dart';

final service = CheckoutService();

// Configure o payload com as informações do pedido
final payload = Payload(
  handle: 'seu-handle', // Sua InfiniteTag sem o $
  items: [
    Item(
      description: 'Produto Exemplo',
      quantity: 2,
      price: 5000, // R$ 50,00 em centavos
    ),
    Item(
      description: 'Outro Produto',
      quantity: 1,
      price: 3000, // R$ 30,00 em centavos
    ),
  ],
  orderNSU: 'pedido-123', // Identificador do seu sistema (opcional)
  redirectUrl: 'https://seusite.com/pagamento-concluido',
  webhookUrl: 'https://seusite.com/webhook',
  customer: Customer(
    name: 'João Silva',
    email: 'joao@email.com',
    phoneNumber: '+5511999887766',
  ),
  address: Address(
    cep: '12345678',
    street: 'Rua das Flores',
    neighborhood: 'Centro',
    number: '123',
    complement: 'Apto 45',
  ),
);

try {
  final checkoutUrl = await service.createCheckout(payload);
  print('Link de checkout criado: $checkoutUrl');
  // Redirecione o cliente para checkoutUrl
} catch (e) {
  print('Erro ao criar checkout: $e');
}

2. Verificar status de pagamento #

Após o cliente finalizar o pagamento, ele será redirecionado para sua redirectUrl com os seguintes parâmetros:

  • receipt_url: Link do comprovante de pagamento
  • order_nsu: O número do pedido no seu sistema
  • slug: Código da fatura na InfinitePay
  • capture_method: Como foi pago ("credit_card" ou "pix")
  • transaction_nsu: ID único da transação

Use esses parâmetros para verificar o status:

final request = PaymentCheckRequest(
  handle: 'seu-handle',
  orderNSU: 'pedido-123',
  transactionNSU: 'uuid-recebido-na-url',
  slug: 'codigo-fatura',
);

try {
  final response = await service.checkPayment(request);
  
  if (response.paid) {
    print('✅ Pagamento confirmado!');
    print('Valor pago: R\$ ${response.paidAmount / 100}');
    print('Método: ${response.captureMethod}');
    print('Parcelas: ${response.installments}x');
  } else {
    print('❌ Pagamento não confirmado');
  }
} catch (e) {
  print('Erro ao verificar pagamento: $e');
}

3. Receber webhooks (Recomendado) #

Para uma integração mais robusta, configure um endpoint para receber webhooks:

import 'package:shelf/shelf.dart';
import 'dart:convert';
import 'package:ms_infinitepay/ms_infinitepay.dart';

Response webhookHandler(Request request) async {
  try {
    final body = await request.readAsString();
    final json = jsonDecode(body);
    final webhookBody = WebhookBody.fromMap(json);
    
    // Valide se o order_nsu corresponde a um pedido real no seu sistema
    if (await isValidOrder(webhookBody.orderNSU)) {
      // Processe o pagamento aprovado
      await processPayment(webhookBody);
      
      print('✅ Pagamento recebido!');
      print('Order NSU: ${webhookBody.orderNSU}');
      print('Valor: R\$ ${webhookBody.paidAmount / 100}');
      print('Comprovante: ${webhookBody.receiptUrl}');
      
      // Responda rapidamente com 200 OK (< 1 segundo)
      return Response.ok('OK');
    } else {
      // Retorne 400 se houver erro (InfinitePay tentará reenviar)
      return Response(400, body: 'Order NSU inválido');
    }
  } catch (e) {
    print('Erro ao processar webhook: $e');
    return Response(400, body: 'Erro ao processar webhook');
  }
}

Conceitos importantes #

Valores em centavos #

Todos os valores monetários devem ser informados em centavos:

  • R$ 10,00 = 1000 centavos
  • R$ 155,50 = 15550 centavos

Order NSU #

É o identificador do pedido no seu sistema. Se não for informado, a InfinitePay gerará um automaticamente. Sempre valide se o order_nsu corresponde a um pedido real.

Webhooks vs Consulta manual #

  • Webhook: Mais eficiente, você recebe notificações em tempo real
  • Consulta manual: Útil como fallback ou para verificações pontuais

Segurança #

  • Sempre valide os dados recebidos via webhook
  • Guarde o transaction_nsu para futuras consultas
  • Teste bastante no ambiente de desenvolvimento antes de colocar em produção

Endpoints da API #

  • Criar checkout: POST https://api.infinitepay.io/invoices/public/checkout/links
  • Verificar pagamento: POST https://api.infinitepay.io/invoices/public/checkout/payment_check

Métodos de pagamento suportados #

  • Pix: Pagamento instantâneo
  • Cartão de Crédito: Com opção de parcelamento

Additional information #

Contribuindo #

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests.

Suporte #

Para questões sobre a API da InfinitePay, consulte a documentação oficial ou entre em contato com o suporte da InfinitePay.

Licença #

Veja o arquivo LICENSE para mais informações.

1
likes
140
points
94
downloads

Documentation

API reference

Publisher

verified publishermarcussoftware.info

Weekly Downloads

Pacote para criação de Checkouts de pagamentos pela InfinitePay

License

MIT (license)

Dependencies

flutter, http, logging

More

Packages that depend on ms_infinitepay