pagseguro_smart 1.1.0
pagseguro_smart: ^1.1.0 copied to clipboard
Plugin em Flutter para integração com o PlugPagServiceWrapper da PagSeguro.
pagseguro_smart #
pagseguro_smart é um plugin Flutter para integração completa com as maquininhas PagSeguro Smart (P2 A7, P2 A11 e GPOS A11).
Permite pagamentos, estornos, callbacks de transação, reimpressão de recibos e comunicação direta com o PlugPagServiceWrapper no Android.
⚠️ Plugin não oficial — Compatível somente com Android.
📘 Sumário #
- Sobre
- Instalação
- Configuração Android
- Como Utilizar
- Constantes
- Models
- Notas Importantes
- Desenvolvedor
- Licença
- Contribuições
🎯 Sobre #
O objetivo do plugin é oferecer uma interface simples, segura e moderna para comunicação com o SDK PagSeguro PlugPagServiceWrapper diretamente de projetos Flutter.
Compatível apenas com máquinas POS Smart P2 A7, P2 A11 e GPOS A11.
📦 Instalação #
No pubspec.yaml:
dependencies:
pagseguro_smart: ^1.0.5+5
Execute:
flutter pub get
⚙️ Configuração Android #
1️⃣ Permissão necessária #
Adicione ao AndroidManifest.xml:
<uses-permission android:name="br.com.uol.pagseguro.permission.MANAGE_PAYMENTS"/>
2️⃣ Intent-Filter #
Dentro da <activity> principal:
<intent-filter>
<action android:name="br.com.uol.pagseguro.PAYMENT"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
3️⃣ Ajustar minSdk / targetSdk #
A PagSeguro exige Assinatura V1 + V2, que requer configurar o projeto para aceitar minSdkVersion 23:
📍 1. Editar android/local.properties #
Adicione:
flutter.minSdkVersion=23
flutter.targetSdkVersion=28
Você pode ajustar o targetSdkVersion depois, mas o default usado pelo plugin é 28 para máxima compatibilidade.
📍 2. Editar android/app/build.gradle.kts (Kotlin) ou build.gradle (Groovy) #
Para permitir que o app ajuste automaticamente o minSdkVersion e targetSdkVersion usando o arquivo local.properties, siga as instruções conforme o tipo do seu arquivo Gradle.
🟦 Se você usa Kotlin DSL (build.gradle.kts) #
Adicione no topo do arquivo:
import java.util.Properties
import java.io.FileInputStream
val localProps = Properties()
val localPropsFile = rootProject.file("local.properties")
if (localPropsFile.exists()) {
localProps.load(FileInputStream(localPropsFile))
}
val minSdkFromLocal = localProps.getProperty("flutter.minSdkVersion")?.toInt() ?: 23
val targetSdkFromLocal = localProps.getProperty("flutter.targetSdkVersion")?.toInt() ?: 34
Agora substitua (ou ajuste) a seção:
android {
defaultConfig {
minSdk = minSdkFromLocal
targetSdk = targetSdkFromLocal
}
}
🟧 Se você usa Groovy DSL (build.gradle) #
Adicione no topo do arquivo:
import java.util.Properties
import java.io.FileInputStream
def localProps = new Properties()
def localPropsFile = rootProject.file("local.properties")
if (localPropsFile.exists()) {
localProps.load(new FileInputStream(localPropsFile))
}
def minSdkFromLocal = (localProps.getProperty("flutter.minSdkVersion") ?: "23") as Integer
def targetSdkFromLocal = (localProps.getProperty("flutter.targetSdkVersion") ?: "34") as Integer
Agora substitua (ou ajuste) a seção:
android {
defaultConfig {
minSdkVersion minSdkFromLocal
targetSdkVersion targetSdkFromLocal
}
}
Isso permite que seu app use automaticamente os valores do local.properties.
🚀 Como Utilizar #
Importação #
import 'package:pagseguro_smart/pagseguro_smart.dart';
🔌 Inicialização #
Verificando se PinPad está Autenticado #
final PagSeguroService pagSeguro = PagSeguroService();
Future<void> isAuthenticated() async {
final result = await pagSeguro.isAuthenticated();
if (result['success']) {
print('PinPad Autenticado!');
} else {
print('${result['message']}');
}
}
Ativando o PinPad #
Future<void> initPinPad(String codigoAtivacao) async {
final result = await pagSeguro.initPinPad(codigoAtivacao);
if (result['success']) {
print('PinPad Ativado!');
} else {
print('${result['message']}');
}
}
💳 Pagamentos #
final result = await pagSeguro.doPayment(
type: PagSeguroType.credit,
value: 50.00,
userReference: 'pedido123',
printReceipt: true,
);
if (result['success']) {
final transaction = TransactionModel.fromJsonToModel(result['data']);
print('Pagamento aprovado!');
} else {
print('Falha: ${result['message']}');
}
⛔ Estorno #
final estorno = await pagSeguro.voidPayment(
transactionCode: '123456',
transactionId: '987654',
voidType: PagSeguroVoid.common,
printReceipt: true,
);
🧾 Reimpressão & Recibos #
Reimprimir via Cliente:
await pagSeguro.reprintCustomerReceipt();
Reimprimir via Loja:
await pagSeguro.reprintEstablishmentReceipt();
Enviar recibo via SMS:
await pagSeguro.sendReceiptSMS(
transactionCode: '123456',
phoneNumber: '11999999999',
);
📡 Callbacks #
O plugin envia mensagens de progresso durante o pagamento, recomendado colocar no initState:
@override
void initState() {
super.initState();
_pagSeguro.onPaymentProgress = (message, canAbort) {
print('Status: $message');
if (canAbort) {
print('Permitido Cancelar Pagamento.');
}
};
}
🔧 Constantes #
Tipos de Pagamento #
PagSeguroType.creditPagSeguroType.debitPagSeguroType.pixPagSeguroType.voucher
Parcelamento #
PagSeguroInstallment.singlePayPagSeguroInstallment.forMerchantPagSeguroInstallment.forCustomer
Estorno #
PagSeguroVoid.commonPagSeguroVoid.qrCode
📄 Models #
Inclui:
UserDataModelTransactionModel
Todos com fromJsonToModel() para parse automático.
📝 Notas Importantes #
- O plugin funciona somente em Android.
- A maquininha deve estar vinculada a um usuário ativo na PagSeguro e com o aplicativo configurado (salvo maquininha debug).
- Callbacks dependem do texto da maquininha — o comportamento pode variar por modelo.
- Recomenda-se testar em dispositivo físico real.
👨💻 Desenvolvedor #
⚖️ Licença #
MIT © 2025 Fernando Takeo Miyaji
⭐ Contribuições #
Pull Requests são sempre Bem Vindos!
Se você gostou desse package, considere dar um Like no pub.dev ou no GitHub.