0 purchases
stone smart flutter
Stone Smart Flutter
Sobre |
Tecnologias |
Configuração |
Autores |
Plugin não oficial!!! #
🎯 Sobre #
Projeto destinado a facilitar a integração com o SDK da Stone Smart no Flutter.
Funciona somente com máquinas smarts.
Máquinas compatíveis:
Positivo L300
Positivo L400
Ingenico APOS A8
Sunmi P2
Gertec GPOS700X
🚀 Tecnologias #
As seguintes ferramentas foram usadas na construção do projeto:
Flutter
SDK Stone version: 4.8.7
🏁 Configuração #
# Pubspec.yaml #
Para usar este plugin, adicione stone_smart_flutter como dependência ao seu arquivo pubspec.yaml.
dependencies:
stone_smart_flutter: any
copied to clipboard
This will get you the latest version.
# Build.gradle #
Em seu build.gradle a nivel do app, a propriedade minSdkVersion precisa ser level 23. Recurso este exigido pela versão 4.8.7 do SDK Stone.
...
defaultConfig {
applicationId "com.example.stone_example"
minSdkVersion 23
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
...
copied to clipboard
# Implementação #
Para começar é necessário criar uma classe que implemente ´StoneHandler´, sendo que essa é a responsável por monitorar e retornar os dados da Stone.
Criando classe StoneController #
class StoneController extends StoneHandler {
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;
}
@override
void onChanged(String message) {
}
}
copied to clipboard
Métodos da ´StoneHandler´
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 um objeto em formato ´String´ com a mensagem e o método.
onMessage
Método responsável por devolver para o usuário uma mensagem retornada da Stone.
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.
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).
StoneSmart.instance().payment.activePinpad(stoneCode: '12345');
Logo após ativação, o SDK da Stone fornece algumas opções de transação como:
Crédito = StoneSmart.instance().payment.creditPayment(12.50)
Crédito Parcelado = StoneSmart.instance().payment.creditPaymentParc(value: controller.amount, installment: 2)
Débito = StoneSmart.instance().payment.debitPayment(12.50)
PIX = StoneSmart.instance().payment.pixPayment.(amount: 1250, qrCodeAuthorization: '', qrCodeProviderid: '')
Voucher (alimentação) = StoneSmart.instance().payment.voucherPayment(12.50)
Estorno = StoneSmart.instance().payment.cancelTransaction(amount: controller.saleValue, transactionType: PaymentTypeTransaction.CREDIT)
Abortar transação = StoneSmart.instance().payment.abortTransaction()
**Obs: Por padrão o SDK da Stone SEMPRE imprime a via do consumidor.
Modelo de resposta #
Método onAuthProgress, onChanged e onError
Estes métodos iram retornar um objeto em formato de string com a seguinte estrutura:
{
"method": "transaction",
"message": "Transação aprovada",
"errorMessage": "",
"result": 0,
}
copied to clipboard
O campo errorMessage só é preenchido caso venha algum erro;
Métodos mapeados para o campo method: abort, transaction, active, printer, reversal;
Método onFinishedResponse
Este método irá retornar um objeto em formato de String com a seguinte estrutura:
{
"method": "transaction",
"idFromBase": 0,
"amount": 1250,
"cardHolderNumber": "",
"cardBrand": "",
"date": "",
"time": "",
"aid": "",
"arcq": "",
"transactionReference": "",
"saleAffiliationKey": "",
"entryMode": "",
"typeOfTransactionEnum": "",
"serialNumber": "",
"manufacture": "",
"actionCode": "",
"transactionStatus": "",
"messageFromAuthorize": "",
"errorMessage": "",
"result": 0,
}
copied to clipboard
Observações:
Para a transação com PIX é necessário fornecer nos parâmetros o qrCodeAuthroization e o qrCodeProviderid fornecidos pela Stone.
No método onChanged, pode vir um retorno com o campo "method" preenchido como "QRCode" e no campo message virá a imagem em formato Bitmap, convertida em String, ficando a cargo do desenvolvedor mostrar o QRCode gerado para o usuário final.
Cancelamento
Para cancelar uma transação é necessário chamar o método cancelTransaction passando o ID da transação.
Caso você não tenha a informação do ID da transação, é necessário chamar o método getAllTransactions para trazer todas transações em forma de lista, e você conseguir pegar as informações de valor, id e status.
📝 Autores #
Este projeto foi desenvolvido por:
Jhonathan Queiroz
Jhonathan Queiroz e
QZ Tech
Voltar para o topo
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.