package Ġcom . stripe . android Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Parcel Ċ import Ġandroid . os . Parcelable Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġcom . stripe . android . exception . Stripe Exception Ċ import Ġcom . stripe . android . model . Confirm Stripe Intent Params Ċ import Ġcom . stripe . android . model . Source Ċ import Ġcom . stripe . android . model . Stripe Intent Ċ import Ġcom . stripe . android . view . Auth Activity Starter Ċ import Ġkotlinx . android . parcel . Parcel er Ċ import Ġkotlinx . android . parcel . Parcel ize Ċ Ċ internal Ġinterface ĠPayment Controller Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConfirm Ġthe ĠStripe ĠIntent Ġand Ġresolve Ġany Ġnext Ġactions ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstart Confirm And Auth ( ĊĠĠĠĠĠĠĠ Ġhost : ĠAuth Activity Starter . Host , ĊĠĠĠĠĠĠĠ Ġconfirm Stripe Intent Params : ĠConfirm Stripe Intent Params , ĊĠĠĠĠĠĠĠ Ġrequest Options : ĠApi Request . Options ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġstart Confirm ( ĊĠĠĠĠĠĠĠ Ġconfirm Stripe Intent Params : ĠConfirm Stripe Intent Params , ĊĠĠĠĠĠĠĠ Ġrequest Options : ĠApi Request . Options , ĊĠĠĠĠĠĠĠ Ġcallback : ĠApi Result Callback < Stripe Intent > ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġstart Auth ( ĊĠĠĠĠĠĠĠ Ġhost : ĠAuth Activity Starter . Host , ĊĠĠĠĠĠĠĠ Ġclient Secret : ĠString , ĊĠĠĠĠĠĠĠ Ġrequest Options : ĠApi Request . Options ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġstart Authenticate Source ( ĊĠĠĠĠĠĠĠ Ġhost : ĠAuth Activity Starter . Host , ĊĠĠĠĠĠĠĠ Ġsource : ĠSource , ĊĠĠĠĠĠĠĠ Ġrequest Options : ĠApi Request . Options ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDec ide Ġwhether Ġ[ handle Payment Result ] Ġshould Ġbe Ġcalled . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshould Handle Payment Result ( request Code : ĠInt , Ġdata : ĠIntent ?): ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDec ide Ġwhether Ġ[ handle Setup Result ] Ġshould Ġbe Ġcalled . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshould Handle Setup Result ( request Code : ĠInt , Ġdata : ĠIntent ?): ĠBoolean ĊĊĠĠĠ Ġfun Ġshould Handle Source Result ( request Code : ĠInt , Ġdata : ĠIntent ?): ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġpayment Ġauthentication Ġtriggered Ġan Ġexception , Ġget Ġthe Ġexception Ġobject Ġand Ġpass Ġto ĊĠĠĠĠ Ġ* Ġ[ Api Result Callback . onError ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠOtherwise , Ġget Ġthe ĠPayment Intent 's Ġclient _ secret Ġfrom Ġ{@ param Ġdata } Ġand Ġuse Ġto Ġretrieve ĊĠĠĠĠ Ġ* Ġthe ĠPayment Intent Ġobject Ġwith Ġupdated Ġstatus . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Ġthe Ġresult ĠIntent ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhandle Payment Result ( ĊĠĠĠĠĠĠĠ Ġdata : ĠIntent , ĊĠĠĠĠĠĠĠ Ġcallback : ĠApi Result Callback < Payment Intent Result > ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġsetup Ġauthentication Ġtriggered Ġan Ġexception , Ġget Ġthe Ġexception Ġobject Ġand Ġpass Ġto ĊĠĠĠĠ Ġ* Ġ[ Api Result Callback . onError ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠOtherwise , Ġget Ġthe ĠSetup Intent 's Ġclient _ secret Ġfrom Ġ{@ param Ġdata } Ġand Ġuse Ġto Ġretrieve Ġthe ĊĠĠĠĠ Ġ* ĠSetup Intent Ġobject Ġwith Ġupdated Ġstatus . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Ġthe Ġresult ĠIntent ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhandle Setup Result ( ĊĠĠĠĠĠĠĠ Ġdata : ĠIntent , ĊĠĠĠĠĠĠĠ Ġcallback : ĠApi Result Callback < Setup Intent Result > ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġhandle Source Result ( ĊĠĠĠĠĠĠĠ Ġdata : ĠIntent , ĊĠĠĠĠĠĠĠ Ġcallback : ĠApi Result Callback < Source > ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermine Ġwhich Ġauthentication Ġmechanism Ġshould Ġbe Ġused , Ġor Ġbypass Ġauthentication ĊĠĠĠĠ Ġ* Ġif Ġit Ġis Ġnot Ġneeded . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhandle Next Action ( ĊĠĠĠĠĠĠĠ Ġhost : ĠAuth Activity Starter . Host , ĊĠĠĠĠĠĠĠ Ġstripe Intent : ĠStripe Intent , ĊĠĠĠĠĠĠĠ Ġrequest Options : ĠApi Request . Options ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġauthenticate A lip ay ( ĊĠĠĠĠĠĠĠ Ġintent : ĠStripe Intent , ĊĠĠĠĠĠĠĠ Ġstripe AccountId : ĠString ?, ĊĠĠĠĠĠĠĠ Ġauth enticator : ĠA lip ay Authenticator , ĊĠĠĠĠĠĠĠ Ġcallback : ĠApi Result Callback < Payment Intent Result > ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRepresents Ġthe Ġresult Ġof Ġa Ġ[ Payment Controller ] Ġoperation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġclass Ġis Ġannotated Ġwith Ġ`@ Parcel ize ` Ġbut Ġuses Ġcustom Ġparcel ing Ġlogic Ġdue Ġto Ġissues ĊĠĠĠĠ Ġ* Ġwith Ġparcel ing Ġan Ġ` Exception ` Ġsubclass . ĠSee ĊĠĠĠĠ Ġ* Ġ[ Parcel # write Exception () ]( https :// developer . android . com / reference / android / os / Parcel # write Exception ( java . lang . Exception )) ĊĠĠĠĠ Ġ* Ġfor Ġmore Ġdetails . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Parcel ize ĊĠĠĠ Ġdata Ġclass ĠResult Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġclient Secret : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ@ Stripe Intent Result . Outcome Ġinternal Ġval Ġflow Outcome : ĠInt Ġ= ĠStripe Intent Result . Outcome . UNKNOWN , ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġexception : ĠStripe Exception ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġshould Cancel Source : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġsource Id : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġsource : ĠSource ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġstripe AccountId : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ: ĠParcel able Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Synt hetic ĊĠĠĠĠĠĠĠ Ġfun Ġto Bundle () Ġ= Ġbundle Of ( EXTRA Ġto Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġinternal Ġcompanion Ġobject Ġ: ĠParcel er < Result > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate ( parcel : ĠParcel ): ĠResult Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Secret Ġ= Ġparcel . readString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflow Outcome Ġ= Ġparcel . readInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception Ġ= Ġparcel . read Serializable () Ġas ? ĠStripe Exception ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Cancel Source Ġ= Ġparcel . readInt () Ġ== Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Id Ġ= Ġparcel . readString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġparcel . read Parcelable ( Source :: class . java . class Loader ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstripe AccountId Ġ= Ġparcel . readString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠResult . write ( parcel : ĠParcel , Ġflags : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparcel . writeString ( client Secret ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparcel . writeInt ( flow Outcome ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparcel . write Serializable ( exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparcel . writeInt ( 1 . take If Ġ{ Ġshould Cancel Source Ġ} Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparcel . writeString ( source Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparcel . write Parcelable ( source , Ġflags ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparcel . writeString ( stripe AccountId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEX TRA Ġ= Ġ" extra _ args " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Synt hetic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun Ġfrom Intent ( intent : ĠIntent ): ĠResult ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġintent . get Parcelable Extra ( EXTRA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ