tsdtech_client_sdk 0.2.1
tsdtech_client_sdk: ^0.2.1 copied to clipboard
SDK Dart para integração com a plataforma TsdTech de pagamentos.
TSDTech Client SDK #
SDK Dart puro para integração com a plataforma TSDTech de pagamentos.
✨ Features #
- Checkout: Pagamentos via cartão (com criptografia), PIX e boleto
- Autenticação: Login e cadastro de usuários clientes
- Vouchers: Listagem e gerenciamento de vouchers
- Serviços: Listagem de serviços e formulários
- Pedidos: Gestão de pedidos
📦 Instalação #
Adicione ao seu pubspec.yaml:
dependencies:
tsdtech_client_sdk: ^0.1.0
🚀 Usage #
Configuração Inicial #
import 'package:tsdtech_client_sdk/tsdtech_sdk_client.dart';
// Configure o base URL antes de usar os serviços
Constants.setBaseUrl('https://api.seu-servidor.com');
Autenticação #
// Login de usuário cliente
final authService = AuthServiceClientUser.instance;
final result = await authService.login(
email: 'usuario@exemplo.com',
password: 'sua-senha',
administratorId: 'admin-123',
);
result.fold(
(loginResponse) {
print('Login bem-sucedido: ${loginResponse.token}');
// Configure o token para requisições autenticadas
BaseApi.setToken(loginResponse.token);
},
(error) {
print('Erro no login: $error');
},
);
// Cadastro de novo usuário
final signupResult = await authService.signup(
SignupRequestClient(
email: 'novo@exemplo.com',
password: 'sua-senha',
name: 'Nome do Usuário',
),
administratorId: 'admin-123',
);
Checkout com PIX #
import 'package:tsdtech_client_sdk/tsdtech_sdk_client.dart';
final checkoutService = CheckoutsService.instance;
// Criar checkout PIX
final result = await checkoutService.createCheckout(
CheckoutRequest(
items: [/* seus itens */],
paymentMethodId: 'pix',
),
);
if (result.isSuccess) {
final pixData = result.value.pix;
// Exiba o QR code PIX para o usuário
print('PIX QR Code: ${pixData?.qrCode}');
print('PIX Copia e Cola: ${pixData?.qrCodeText}');
// Verifique o status do pagamento
final statusResult = await checkoutService.getPixStatus(result.value.paymentId);
print('Status PIX: ${statusResult.value}');
}
Checkout com Cartão (2-step) #
// 1. Criar checkout para obter depositRequestId
final checkoutResult = await checkoutService.createCheckout(
CheckoutRequest(
items: [/* seus itens */],
paymentMethodId: 'card',
),
);
if (checkoutResult.isSuccess) {
final depositRequestId = checkoutResult.value.depositRequestId;
// 2. Usar GatewayClient para criptografar e enviar dados do cartão
// (Implementação depende de GatewayClient - ver task OPA2-470)
}
Checkout com Boleto #
final result = await checkoutService.createCheckout(
CheckoutRequest(
items: [/* seus itens */],
paymentMethodId: 'bill',
),
);
if (result.isSuccess) {
final billData = result.value.bill;
print('Linha digitável: ${billData?.digitableLine}');
print('URL do boleto: ${billData?.url}');
}
Calcular Carrinho #
final calculateResult = await checkoutService.calculateCart(
CalculateRequest(
items: [/* seus itens */],
paymentMethodId: 'card-id',
),
);
if (calculateResult.isSuccess) {
print('Total: ${calculateResult.value.total}');
print('Subtotal: ${calculateResult.value.subtotal}');
}
Listar Meios de Pagamento #
final methodsResult = await checkoutService.getPaymentMethods();
if (methodsResult.isSuccess) {
for (final method in methodsResult.value) {
print('${method.id}: ${method.name}');
}
}
🔧 Estrutura do SDK #
lib/
├── core/
│ ├── constants/
│ │ └── constants.dart # Configurações e URLs
│ └── services/
│ ├── base.api.dart # Cliente HTTP base (Dio)
│ └── intra-api/
│ ├── intra.api.dart # Classe base para serviços
│ ├── md-checkout/ # Serviço de checkout/pagamentos
│ ├── md-authorizers/ # Auth, Memberships, ApiKeys
│ ├── md-vouchers/ # Serviço de vouchers
│ ├── md-services/ # Serviços e tipos de serviço
│ ├── md-orders/ # Serviço de pedidos
│ ├── md-clients/ # Serviço de clientes
│ └── ... # Outros módulos
├── models/
│ ├── value_result.dart # Result type
│ ├── checkouts/ # Models de checkout
│ ├── vouchers/ # Models de voucher
│ ├── auth/ # Models de autenticação
│ └── common/ # Paginação, etc.
└── tsdtech_sdk_client.dart # Barrel file principal
📚 API Reference #
Services Principais #
| Service | Descrição | Métodos Principais |
|---|---|---|
CheckoutsService |
Pagamentos | createCheckout(), calculateCart(), getPaymentMethods(), getPixStatus() |
AuthServiceClientUser |
Autenticação | login(), signup() |
VouchersService |
Vouchers | getVouchersClient(), getVoucherById() |
ServicesService |
Serviços | getPublicServices(), getServiceFormModel(), submitServiceForm() |
OrdersService |
Pedidos | getOrders(), getOrderById() |
Token Management #
// Definir token para requisições autenticadas
BaseApi.setToken('seu-jwt-token');
// Remover token
BaseApi.resetToken();
// Habilitar modo debug (logs)
BaseApi.setDebugMode(true);
ValueResult #
Todas as operações do SDK retornam ValueResult<T>:
final result = await service.someOperation();
````watch command
dart run build_runner watch --delete-conflicting-outputs
// Usando fold
result.fold(
(value) => print('Sucesso: $value'),
(error) => print('Erro: $error'),
);
// Usando isSuccess/isFailure
if (result.isSuccess) {
print(result.value);
} else {
print(result.error);
}
⚠️ Notas Importantes #
- SDK Dart Puro: Este SDK não depende do Flutter e pode ser usado em qualquer projeto Dart
- Gerenciamento de Token: O SDK não armazena tokens automaticamente. Use
BaseApi.setToken()após login - Debug Mode: Use
BaseApi.setDebugMode(true)para habilitar logs de debug
📄 License #
Este projeto está sob a licença MIT - veja o arquivo LICENSE para detalhes.