Buscar pacotes, repositórios e categorias de apps

Repositório GitHubgabuldev/pagseguro_smart_flutter

pagseguro_smart_flutter

gabuldev/pagseguro_smart_flutter open-source repository details.

Capa do projeto pagseguro_smart_flutter
Estrelas
12
Forks
14
Último push (UTC)
28 de mar. de 2025
Status do projeto
Ativo

README original

Texto original em inglês. Visite o GitHub para a versão atual.

Pagseguro Smart Flutter

PagSeguro

Sobre   |   Tecnologias   |   Configuração   |   Autores   |  


:dart: Sobre

Projeto destinado a facilitar a integração com o SDK da PagSeguro Smart no Flutter. Funciona somente com máquinas smarts

:rocket: Tecnologias

As seguintes ferramentas foram usadas na construção do projeto:

:checkered_flag: Configuração

# Pubspec.yaml

Para usar este plugin, adicione plugpag_flutter como dependência ao seu arquivo pubspec.yaml.

dependencies:
  pagseguro_smart_flutter: any

This will get you the latest version.

# Android Manifest

Para integrar a biblioteca a biblioteca PlugPagService em aplicativos para Android é necessário adicionar a seguinte permissão ao AndroidManifest.xml.

<uses-permission android:name="br.com.uol.pagseguro.permission.MANAGE_PAYMENTS"/>
# Intent-filter

Para que seu aplicativo possa ser escolhido como aplicativo padrão de pagamento e receber Intents de inserção de cartão, é necessário adicionar o seguinte código em seu AndroidManifest.xml dentro da sua Activity principal.

<intent-filter>
 <action android:name="br.com.uol.pagseguro.PAYMENT"/>
 <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
# Build.gradle
=> Wrapper v1.29.5

Em seu build.gradle a nivel do app, a propriedade minSdkVersion precisa ser level 23. Recurso este exigido pela versão do plugpagservice da PagSeguro.

...
defaultConfig {
        applicationId "com.example.pagseguro_example"
        minSdkVersion 23
        targetSdkVersion flutter.targetSdkVersion
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }
...
# Implementação

Para começar é necessário criar uma classe que implemente ´PaymentHandler´, sendo que essa é a responsável por monitorar e retornar os dados da pagseguro.

Criando classe PaymentController
class PaymentController extends PaymentHandler {
  int saleValue = 0;
  bool enable = false;
  bool clickPayment = false;
  bool enableRefund = false;
  String? transactionCode;
  String? transactionId;
  String? response;

  void setSaleValue(double value) {
    if (value > 0.0) {
      saleValue = (value * 100).toInt();
      clickPayment = false;
      enable = true;
    } else {
      clickPayment = false;
      enable = false;
    }
  }

  @override
  void disposeDialog() {
    BotToast.cleanAll();
  }

  @override
  void onAbortedSuccessfully() {
    BotToast.showText(text: "Operação cancelada");
  }

  @override
  void onActivationDialog() {}

  @override
  void onAuthProgress(String message) {
    BotToast.showLoading();
  }

  @override
  void onError(String message) {
    BotToast.showText(text: message);
  }

  @override
  void onMessage(String message) {
    BotToast.showText(text: message);
  }

  @override
  void onFinishedResponse(String message) {
    BotToast.showText(text: message);
  }

  @override
  void onTransactionSuccess() {
    BotToast.showText(text: "Transacao com successo!");
  }

  @override
  void writeToFile({
    String? transactionCode,
    String? transactionId,
    String? response,
  }) {}

  @override
  void onLoading(bool show) {
    if (show) {
      BotToast.showLoading();
      return;
    }
    BotToast.closeAllLoading();
  }

  @override
  void onTransactionInfo({
    String? transactionCode,
    String? transactionId,
    String? response,
  }) {
    this.transactionCode = transactionCode;
    this.transactionId = transactionId;
    this.response = response;
    BotToast.showText(
        text:
            "{transactionCode: $transactionCode \n transactionId: $transactionId}");
    enableRefund = true;
  }
}

Métodos da PaymentHandler
onAbortedSuccessfully

Acionado quando uma transação de abort é concluída com sucesso.

onAuthProgress

Acionado quando uma transação está em progresso. Retorno do status do Pinpad também é mapeado aqui.

onError

Acionado quando uma transação retorna um estado de ´Erro´, devolvendo como parâmetro uma ´String´ com a mensagem.

onMessage

Método responsável por devolver para o usuário uma mensagem retornada da PagSeguro.

onFinishedResponse

Método responsável por devolver uma response da transação.

onTransactionSuccess

Método acionado quando a transação foi concluída com sucesso.

onTransactionInfo

Método resposável por devolver uma response completa da transação, sendo possível mapear vários campos retornados.

Iniciar transação

Para iniciar a transação é necessário primeiro chamar a função de ativação do PinPad, passando como parâmetro o código de ativação daquele POS (código este informado na sua conta PagBank).

PagseguroSmart.instance().payment.activePinpad('12345');

Logo após ativação, o SDK da PagSeguro fornece algumas opções de transação como:

  • Crédito = PagseguroSmart.instance().payment.creditPayment(12.50)

  • Crédito Parcelado = PagseguroSmart.instance().payment.creditPaymentParc(controller.saleValue, 2)

  • Débito = PagseguroSmart.instance().payment.debitPayment(12.50)

  • PIX = PagseguroSmart.instance().payment.pixPayment.(12.50)

  • Voucher (alimentação) = PagseguroSmart.instance().payment.voucherPayment(12.50)

  • startPayment(Permite chamar diretamente o método startPayment da biblioteca PlugPag) = PagseguroSmart.instance().payment.startPayment( int type, int amount, int installmentType, int installments, String userReference, bool printReceipt, bool partialPay, bool isCarne)

  • Estorno = PagseguroSmart.instance().payment.refund(transactionCode: controller.transactionCode, transactionId: controller.transactionId)

  • Abortar transação = PagseguroSmart.instance().payment.abortTransaction()

  • Última transação = PagseguroSmart.instance().payment.lastTransaction()

  • Obter status de ativação do Pinpad = PagseguroSmart.instance().payment.isAuthenticated()

**Obs: A via do estabelecimento do estabelecimento pode ser impressa ou não baseada no parâmetro printReceipt. Após a finalização do pagamento, um popUp é exibido perguntando se deseja a via do consumidor.

Método de impressão

Deve-se verificar se seu projeto tem a permissão de acesso aos arquivos dentro do dispositivo.

Imprimir um arquivo

PagseguroSmart.instance().payment.printerfromFile(path) => Fornecer o caminho absoluto ao arquivo que deve ser impresso.

Imprimir um widget

Basta chamar a função abaixo, passando o widget a ser impresso pela POS.

PrintRenderWidget.print(
  context,
  pagseguroSmartInstance: pagseguroSmart,
  child: MyCustomWidget(),
);

NfcSmart

Igualmente a classe PagSeguroSmart, essa também é necessário configurar um hanlder e inicializar o plugin antes de qualquer função.

Handler -> Você precisa em uma hanlder que extenda de NfcHandler

Inicializar -> NfcSmart.instance.initNfc(handler);

Para a classe responsável com a integração por meio do NFC, temos os seguintes métodos: NfcSmart.instance.nfc.<método>

//Responsável por fechar o handler de chamadas Future<void> closeMethodCallHandler();

//Responsável por abortar uma transação em andamento Future<bool> abortTransaction();

//Responsável por obter a última transação Future<bool> lastTransaction();

//Responsável por realizar o estorno de uma transação Future<bool> refund({required String transactionCode, required String transactionId});

//Responsável por ler as informações apartir do NFC Future<bool> readNfc(idEvento);

//Responsável pela escrita do método NFC Future<bool> writeNfc(valor, nome, cpf, numeroTag, celular, aberto, idEvento);

//Responsável por regravar informações Future<bool> reWriteNfc(valor, idEvento);

//Responsável por fazer o estorno de uma transação utilizando NFC Future<bool> refundNfc(valor, idEvento);

//Responsável por formatar os dados do cartão Future<bool> formatNfc();

//Responsável por chamar função de débito utilizando NFC Future<bool> debitNfc(idEvento, valor);

:memo: Autores

Este projeto foi desenvolvido por:

 

Voltar para o topo

Gabul - GDE Flutter & Dart GitHub avatar
Autor no GitHub

Gabul - GDE Flutter & Dart ↗

Founder of Gabuldev, Specialist in Mobile Development, participates in the Google Developer Expert in Flutter & Dart, organizer of the GDG Nova Lima

Brazil
LinguagensJavaDartRubyHTMLObjective-CSwiftKotlin

Dependências usadas

Lista de dependências 4 itens

Como escolher um repositório para seu projeto?

Filtre pelo caso de uso, compare a atividade e confira o projeto original antes de adotá-lo.

  1. Busque por nome, autor ou descrição e filtre por tema.
  2. Compare estrelas, forks e envios recentes. Estrelas indicam interesse, mas não garantem qualidade.
  3. Confira o README, a licença e as issues no GitHub antes de usar o projeto.

Fontes e manutenção

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗