패키지, 저장소 및 앱 카테고리 검색

GitHub 저장소gabuldev/pagseguro_smart_flutter

pagseguro_smart_flutter

gabuldev/pagseguro_smart_flutter open-source repository details.

pagseguro_smart_flutter 프로젝트 이미지
스타
12
포크
14
최근 푸시(UTC)
2025. 3. 28.
프로젝트 상태
활성

원본 README

아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.

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
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
언어JavaDartRubyHTMLObjective-CSwiftKotlin

사용 중인 의존성

의존성 목록 4 개

프로젝트에 맞는 저장소를 선택하려면?

사용 목적에 따라 검색하고 개발 활동을 비교한 뒤 원본 저장소에서 요구 사항을 확인하세요.

  1. 이름, 작성자 또는 설명으로 검색하고 기술 주제로 범위를 좁힙니다.
  2. 스타, 포크, 최근 푸시를 함께 비교하세요. 스타는 관심의 지표이며 품질을 보장하지 않습니다.
  3. 사용하기 전에 GitHub에서 README, 라이선스, Issues를 확인하세요.

출처 및 관리

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

GitHub Docs — About repositories ↗