Leleocastro / stone_payments

MIT License
7 stars 7 forks source link

Ao retornar um transação com status DECLINED o app morre #14

Closed mariolandossa closed 2 months ago

mariolandossa commented 2 months ago

Ao efetuar uma compra com o valor de R$ 0,51, que retorna não aprovado o app morre e traz a seguinte pilha de erro:

D/KernelHandler( 5538): state=FinishChipState W/PiccCard( 5538): Unexpected state: FinishChipState D/JNI ( 5538): Callback_Process_EntryPoint E/kernel ( 5538): [11:55:32] QVSDC_Kernel_Func() << (4) D/ERRORPRINT( 5538): TransactionObject{idFromBase=171, amount='51', requestId='null', emailSent='null', timeToPassTransaction='0m 1s', initiatorTransactionKey='L3-1724424932072', recipientTransactionIdentification='33641081653571', cardHolderNumber='4174000736', cardHolderName='PAYWAVE/VISA', date='2024-08-23', time='11:55:32', aid='A0000000031010', arcq='23BB7121FB06D258', authorizationCode='653571', iccRelatedData='820220008407A0000000031010950500000000005F2A0209865F3401009A032408239C01009F02060000000000519F03060000000000009F100706011203A028009F1A0200769F1E085465726D696E616C9F260823BB7121FB06D2589F3303E0F8C89F360200F99F370468B826389F6E0420700000', transactionReference='cc593b1ba1824b7985fe53eca76aa8b3', actionCode='1016', commandActionCode='05', pinpadUsed='null', saleAffiliationKey='B31FD68687274FD3A0A96FC22694985E', cne='null', cvm='null', balance='null', serviceCode='206', subMerchantCategoryCode='null', entryMode=CONTACTLESS, cardBrand=VISA, instalmentTransaction=ONE_INSTALMENT, transactionStatus=DECLINED, instalmentType=None, typeOfTransactionEnum=CREDIT, signature=null, cancellationDate=null, capture=true, shortName='null', subMerchantAddress='null', userModel=UserModel{, merchantUserPhone=UserPhone{merchantAndroidVersion='7.1.1', merchantPhoneModel='L3', merchantPhoneFactory='Positivo'}, merchantName='Integracao Partner Program', saleAffiliationKey='B31FD68687274FD3A0A96FC22694985E', merchantPassword='1234', merchantDocumentNumber='89.324.856/0001-26', stoneCode='206192723', merchantAddress=Address{distric='SP', street='Avenida Doutora Ruth Cardoso', neighborhood='Pinheiros', doorNumber='7221', city='São Paulo'}, tableVersion='1414', currencyCode='986'}, isFallbackTransaction=false, appLabel='VISA CREDITO'} D/ERRORPRINT( 5538): TransactionObject{idFromBase=171, amount='51', requestId='null', emailSent='null', timeToPassTransaction='0m 1s', initiatorTransactionKey='L3-1724424932072', recipientTransactionIdentification='33641081653571', cardHolderNumber='4174000736', cardHolderName='PAYWAVE/VISA', date='2024-08-23', time='11:55:32', aid='A0000000031010', arcq='23BB7121FB06D258', authorizationCode='653571', iccRelatedData='820220008407A0000000031010950500000000005F2A0209865F3401009A032408239C01009F02060000000000519F03060000000000009F100706011203A028009F1A0200769F1E085465726D696E616C9F260823BB7121FB06D2589F3303E0F8C89F360200F99F370468B826389F6E0420700000', transactionReference='cc593b1ba1824b7985fe53eca76aa8b3', actionCode='1016', commandActionCode='05', pinpadUsed='null', saleAffiliationKey='B31FD68687274FD3A0A96FC22694985E', cne='null', cvm='null', balance='null', serviceCode='206', subMerchantCategoryCode='null', entryMode=CONTACTLESS, cardBrand=VISA, instalmentTransaction=ONE_INSTALMENT, transactionStatus=DECLINED, instalmentType=None, typeOfTransactionEnum=CREDIT, signature=null, cancellationDate=null, capture=true, shortName='null', subMerchantAddress='null', userModel=UserModel{, merchantUserPhone=UserPhone{merchantAndroidVersion='7.1.1', merchantPhoneModel='L3', merchantPhoneFactory='Positivo'}, merchantName='Integracao Partner Program', saleAffiliationKey='B31FD68687274FD3A0A96FC22694985E', merchantPassword='1234', merchantDocumentNumber='89.324.856/0001-26', stoneCode='206192723', merchantAddress=Address{distric='SP', street='Avenida Doutora Ruth Cardoso', neighborhood='Pinheiros', doorNumber='7221', city='São Paulo'}, tableVersion='1414', currencyCode='986'}, isFallbackTransaction=false, appLabel='VISA CREDITO'} D/AndroidRuntime( 5538): Shutting down VM E/AndroidRuntime( 5538): FATAL EXCEPTION: main E/AndroidRuntime( 5538): Process: br.com.infocast.infosigacmd, PID: 5538 E/AndroidRuntime( 5538): java.lang.IllegalStateException: Reply already submitted E/AndroidRuntime( 5538): at io.flutter.embedding.engine.dart.DartMessenger$Reply.reply(DartMessenger.java:431) E/AndroidRuntime( 5538): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler$1.error(MethodChannel.java:277) E/AndroidRuntime( 5538): at dev.ltag.stone_payments.StonePaymentsPlugin$onMethodCall$5.invoke(StonePaymentsPlugin.kt:123) E/AndroidRuntime( 5538): at dev.ltag.stone_payments.StonePaymentsPlugin$onMethodCall$5.invoke(StonePaymentsPlugin.kt:116) E/AndroidRuntime( 5538): at dev.ltag.stone_payments.usecases.PrinterUsecase$printReceipt$1.onError(PrinterUsecase.kt:66) E/AndroidRuntime( 5538): at stone.utils.RequestAsyncTaskAbstract.callStoneCallBack(RequestAsyncTaskAbstract.java:170) E/AndroidRuntime( 5538): at stone.utils.RequestAsyncTaskAbstract.onPostExecute(RequestAsyncTaskAbstract.java:159) E/AndroidRuntime( 5538): at android.os.AsyncTask.finish(AsyncTask.java:667) E/AndroidRuntime( 5538): at android.os.AsyncTask.-wrap1(AsyncTask.java) E/AndroidRuntime( 5538): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:684) E/AndroidRuntime( 5538): at android.os.Handler.dispatchMessage(Handler.java:110) E/AndroidRuntime( 5538): at android.os.Looper.loop(Looper.java:203) E/AndroidRuntime( 5538): at android.app.ActivityThread.main(ActivityThread.java:6337) E/AndroidRuntime( 5538): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime( 5538): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1084) E/AndroidRuntime( 5538): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:945)

mariolandossa commented 2 months ago

Apos requisitar a chamada para pagamento eu estava chamando a impressão isso causou o bug coloquei um if verificando se o status é APPROVED e funcionou onPressed: () async { if (listen.isPaused) { listen.resume(); } try { final result = await StonePayments.transaction( value: widget.valor!.toDouble(), typeTransaction: TypeTransactionEnum.debit ); if(result!.transactionStatus == 'APPROVED'){ await StonePayments.printReceipt(TypeOwnerPrintEnum.client); } print('Transaction: $result!.toJson()'); FFAppState().update(() { print('Atualizou FFAppState:'); FFAppState().retornoPag = result!.toJson(); }); context!.pushNamed('pagMesa'); } catch (e) { listen.pause(); setState(() { text = "Falha no pagamento"; }); context.pushNamed('pagMesa'); } }