stone_smart_flutter

Creator: coderz1093

Last updated:

0 purchases

stone_smart_flutter Image
stone_smart_flutter Images

Languages

Categories

Add to Cart

Description:

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

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.