package Ġvn . pay oo . flutter Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . util . Log Ċ import Ġandroidx . annotation . NonNull Ċ import Ġio . flutter . embedding . engine . plugins . Flutter Plugin Ċ import Ġio . flutter . embedding . engine . plugins . activity . Activity Aware Ċ import Ġio . flutter . embedding . engine . plugins . activity . Activity Plugin Binding Ċ import Ġio . flutter . plugin . common . MethodCall Ċ import Ġio . flutter . plugin . common . Method Channel Ċ import Ġio . flutter . plugin . common . Method Channel . MethodCall Handler Ċ import Ġio . flutter . plugin . common . Method Channel . Result Ċ import Ġio . flutter . plugin . common . Plugin Registry Ċ import Ġvn . pay oo . pay bill sdk . Pay oo Merchant Ċ import Ġvn . pay oo . pay bill sdk . Pay oo Pay bill SDK Ċ import Ġvn . pay oo . top up sdk . Pay oo Top up Merchant Ċ import Ġvn . pay oo . top up sdk . Pay oo Top up SDK Ċ import Ġvn . pay oo . top up sdk . Top up Environment ĊĊ Ċ /** ĠPay oo Vn Plugin Ġ*/ Ċ class ĠPay oo Vn Plugin Ġ: ĠFlutter Plugin , ĠMethod Call Handler , ĠActivity Aware Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Pay oo Vn Plugin " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCHAN NEL _ NAME Ġ= Ġ" vn . pay oo . plugin " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTOP UP _ REQUEST _ CODE Ġ= Ġ 7 3 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠE LECT RIC _ REQUEST _ CODE Ġ= Ġ 7 3 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠW ATER _ REQUEST _ CODE Ġ= Ġ 7 3 2 0 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġlock Request Result : ĠResult ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġresult Listener : ĠPlugin Registry . Activity Result Listener Ġ= ĠPlugin Registry . Activity Result Listener Ġ{ Ġrequest Code , ĠresultCode , Ġdata Ġ-> ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" request Code Ġ= Ġ[ ${ request Code }], ĠresultCode Ġ= Ġ[ ${ result Code }], Ġdata Ġ= Ġ[ ${ data }] ") ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ!= Ġnull Ġ&& Ġlock Request Result Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTOP UP _ REQUEST _ CODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġcurrently , Ġit Ġis Ġunnecessary Ġto Ġhandle Ġthe Ġactivity Ġresult . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE LECT RIC _ REQUEST _ CODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġcurrently , Ġit Ġis Ġunnecessary Ġto Ġhandle Ġthe Ġactivity Ġresult . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW ATER _ REQUEST _ CODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġcurrently , Ġit Ġis Ġunnecessary Ġto Ġhandle Ġthe Ġactivity Ġresult . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock Request Result !!. success ( data . getString Extra (" data ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock Request Result !!. success ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset Callbacks () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/// ĠThe ĠMethod Channel Ġthat Ġwill Ġthe Ġcommunication Ġbetween ĠFlutter Ġand Ġnative ĠAndroid ĊĠĠĠ Ġ/// ĊĠĠĠ Ġ/// ĠThis Ġlocal Ġreference Ġserves Ġto Ġregister Ġthe Ġplugin Ġwith Ġthe ĠFlutter ĠEngine Ġand Ġunregister Ġit ĊĠĠĠ Ġ/// Ġwhen Ġthe ĠFlutter ĠEngine Ġis Ġdet ached Ġfrom Ġthe ĠActivity ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġchannel : ĠMethod Channel ĊĠĠĠ Ġprivate Ġvar Ġactivity : ĠActivity ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġinitialized Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġfun Ġreset Callbacks () Ġ{ ĊĠĠĠĠĠĠĠ Ġlock Request Result Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Engine (@ NonNull Ġbinding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchannel Ġ= ĠMethod Channel ( binding . binary Messenger , ĠCHAN NEL _ NAME ) ĊĠĠĠĠĠĠĠ Ġchannel . set MethodCall Handler ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Engine (@ NonNull Ġbinding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchannel . set MethodCall Handler ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Activity ( binding : ĠActivity Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Activity ( binding . activity ) ĊĠĠĠĠĠĠĠ Ġbinding . add Activity Result Listener ( result Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Activity ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Re attached To Activity For Config Changes ( binding : ĠActivity Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Attached To Activity ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Activity For Config Changes () Ġ{ ĊĠĠĠĠĠĠĠ Ġon Detached From Activity () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MethodCall (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġresult : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( call . method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" initialize " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġcall . arguments Ġas ĠMap < *, Ġ*> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġok Ġ= Ġinitialize ( arguments ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" navigate " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock Request Result Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġcall . arguments Ġas ĠMap < *, Ġ*> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate ( arguments ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . not Implemented () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Activity ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . activity Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . activity Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠNavigate Ġto Ġa ĠPay oo ĠService Ġby Ġ[ arguments ] Ġthat Ġcontains Ġthe Ġservice Id . ĠSee Ġalso Ġ[ Pay oo Service Ids ]. ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġnavigate ( arguments : ĠMap < *, Ġ* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! initialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" navigate : Ġnot Ġinitialized Ġyet !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Code : ĠInt Ġ= Ġwhen Ġ( arguments [" service Id "]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPay oo Service Ids . top up . name Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTOP UP _ REQUEST _ CODE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPay oo Service Ids . DI EN . name Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE LECT RIC _ REQUEST _ CODE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPay oo Service Ids . NU OC . name Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW ATER _ REQUEST _ CODE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ!= Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . activity ?. let Ġ{ ĠPay oo Activity . startActivity For Result ( it , Ġrequest Code , Ġarguments ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSetup Ġthe ĠPay oo ĠSDK Ġinstance Ġwith Ġ[ settings ] Ġis Ġthe Ġconfiguration . ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinitialize ( settings : ĠMap < *, Ġ* >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( initialized ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġmerchant Id Ġ= Ġsettings [" merchant Id "] Ġas ĠString ĊĠĠĠĠĠĠĠ Ġval Ġsecret Key Ġ= Ġsettings [" secret Key "] Ġas ĠString ĊĠĠĠĠĠĠĠ Ġval Ġis Dev Ġ= Ġsettings [" is Dev "] Ġas ĠBoolean ĊĠĠĠĠĠĠĠ Ġval Ġpay oo Merchant : ĠPay oo Merchant Ġ= ĠPay oo Merchant . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. merchant Id ( merchant Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. secret Key ( secret Key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is Dev Mode ( is Dev ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ ĠPay oo Pay bill SDK . initialize ( activity !!. application , Ġpay oo Merchant ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpay oo Top Up Merchant : ĠPay oo Top up Merchant Ġ= ĠPay oo Top up Merchant . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. merchant Id ( merchant Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. secret Key ( secret Key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. environment ( if Ġ( is Dev ) ĠTop up Environment . DE VELO P MENT Ġelse ĠTop up Environment . PRO DU CTION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ ĠPay oo Top up SDK . initialize ( activity !!. application , Ġpay oo Top Up Merchant ) ĊĊĠĠĠĠĠĠĠ Ġinitialized Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ