startTransaction method
Implementation
Future<void> startTransaction({
required StonePaymentParams params,
}) async {
isFinishPayment = false;
handler?.clear();
if (handler == null) {
return;
}
credentials = params.credentials;
if (!StoneTech.isPinpadActivated) {
handler!.setStreamStatus(const StoneStatusActivateRunning(message: 'Ativando Terminal...'));
await initialize(stoneCredentials: params.credentials, stonePaymentParams: params);
return;
} else {
stone.payment.setHandler(handler!);
}
final amountInt = _getSaleValueStone(params.amount);
currentMethod = params.type;
switch (currentMethod) {
case StonePaymentType.credit:
{
if (params.installments != null) {
stone.payment.creditPaymentParc(
value: amountInt,
installment: params.installments!,
printEstablishmentSlip: true,
printCustomerSlip: false,
);
} else {
stone.payment.creditPayment(
amountInt,
printEstablishmentSlip: true,
printCustomerSlip: false,
);
}
}
break;
case StonePaymentType.debit:
{
stone.payment.debitPayment(
amountInt,
printEstablishmentSlip: true,
printCustomerSlip: false,
);
}
break;
case StonePaymentType.pix:
{
stone.payment.pixPayment(
amount: amountInt,
qrCodeAuthroization: credentials.qrCodeAuthorization ?? '',
qrCodeProviderid: credentials.qrCodeProviderid ?? '',
printEstablishmentSlip: true,
printCustomerSlip: false,
);
}
break;
case StonePaymentType.voucher:
{
stone.payment.voucherPayment(
amountInt,
printEstablishmentSlip: true,
printCustomerSlip: false,
);
}
break;
default:
throw Exception('Method not supported');
}
}