package Ġcom . ry ftp ay . android . ui . activity Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcelable Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . fragment . Nav Host Fragment Ċ import Ġcom . google . android . gms . wallet . Payment Data Ċ import Ġcom . ry ftp ay . android . core . model . api . Ry ft Public ApiKey Ċ import Ġcom . ry ftp ay . android . ui . drop in . Ry ft Drop In Configuration Ċ import Ġcom . ry ftp ay . android . ui . drop in . Ry ft Payment Result Ċ import Ġcom . ry ftp ay . android . ui . fragment . Ry ft Payment Fragment Ċ import Ġcom . ry ftp ay . android . ui . model . google pay . Google Pay Result Ċ import Ġcom . ry ftp ay . android . ui . model . google pay . Payment Data Response Ċ import Ġcom . ry ftp ay . android . ui . service . Google Pay Service Ċ import Ġcom . ry ftp ay . android . ui . util . Ry ft Public ApiKey Parcel er Ċ import Ġcom . ry ftp ay . android . ui . view model . Google Pay Result ViewModel Ċ import Ġcom . ry ftp ay . android . ui . view model . Ry ft Payment Result ViewModel Ċ import Ġcom . ry ftp ay . ui . R Ċ import Ġkotlinx . parcel ize . Parcel ize Ċ import Ġkotlinx . parcel ize . Write With Ċ import Ġjava . lang . IllegalArgumentException Ċ Ċ internal Ġclass ĠR y ft Drop In Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpayment Result ViewModel : ĠR y ft Payment Result ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgoogle Pay Result ViewModel : ĠGoogle Pay Result ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ ry ft _ drop in ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. setBackground Drawable ( Color Drawable ( Color . TRANSP ARENT )) ĊĠĠĠĠĠĠĠ Ġsetup Payment Result ViewModel () ĊĠĠĠĠĠĠĠ Ġsetup Google Pay Result ViewModel () ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġintent . get Parcelable Extra < Arguments >( ARGUMENT S _ INT ENT _ EXTRA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" No Ġarguments Ġprovided Ġto Ġactivity ") ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnav Host Fragment Ġ= ĠNav Host Fragment . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . navigation . nav _ graph _ ry ft _ drop in , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR y ft Payment Fragment . Arguments . bundle From ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . configuration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . public ApiKey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . fragment _ ry ft _ nav _ host , Ġnav Host Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Primary Navigation Fragment ( nav Host Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGoogle Ġadv ises Ġthe Ġuse Ġof ĠAuto Resolve Helper . resolve Task () Ġ( see ĠDefault Google Pay Service . kt ) ĊĠĠĠĠĠĠĠ Ġ// Ġwhich Ġforces Ġthe Ġuse Ġof Ġthis Ġdeprecated Ġmethod ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGoogle Pay Service . LOAD _ PAYMENT _ DATA _ REQUEST _ CODE Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Google Pay Result ( result Code , Ġdata ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Google Pay Result ( result Code : ĠInt , Ġmaybe Intent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgoogle Pay Result Ġ= Ġwhen Ġ( result Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRESULT _ OK Ġ-> Ġmaybe Intent ?. let Ġ{ Ġintent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Data . get From Intent ( intent )?. let Ġ{ Ġpayment Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGoogle Pay Result . Ok ( Payment Data Response . from ( payment Data )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: ĠGoogle Pay Result . Failed ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRESULT _ C ANCE LED Ġ-> ĠGoogle Pay Result . Cancelled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠGoogle Pay Result . Failed ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġgoogle Pay Result ViewModel . update Result ( google Pay Result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( 0 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Payment Result ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġpayment Result ViewModel Ġ= ĠViewModel Provider ( this )[ Ry ft Payment Result ViewModel :: class . java ] ĊĠĠĠĠĠĠĠ Ġpayment Result ViewModel . getResult (). observe ( this ) Ġ{ Ġpayment Result Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Payment Result ( payment Result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Google Pay Result ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġgoogle Pay Result ViewModel Ġ= ĠViewModel Provider ( this )[ Google Pay Result ViewModel :: class . java ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreturn Payment Result ( payment Result : ĠR y ft Payment Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRESULT _ OK , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP AY MENT _ RESULT _ INT ENT _ EXTRA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayment Result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parcel ize ĊĠĠĠ Ġprivate Ġclass ĠArguments ( ĊĠĠĠĠĠĠĠ Ġval Ġconfiguration : ĠR y ft Drop In Configuration , ĊĠĠĠĠĠĠĠ Ġval Ġpublic ApiKey : Ġ@ Write With < Ry ft Public ApiKey Parcel er > ĠR y ft Public ApiKey ĊĠĠĠ Ġ) Ġ: ĠParcel able ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠP AY MENT _ RESULT _ INT ENT _ EXTRA Ġ= Ġ" com . ry ftp ay . android . ui . drop in . Ry ft Payment Result " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG UMENT S _ INT ENT _ EXTRA Ġ= Ġ" com . ry ftp ay . android . ui . activity . Ry ft Drop In Activity . Arguments " ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġcreate Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration : ĠR y ft Drop In Configuration , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ApiKey : ĠR y ft Public ApiKey ĊĠĠĠĠĠĠĠ Ġ): ĠIntent Ġ= ĠIntent ( context , ĠR y ft Drop In Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠARG UMENT S _ INT ENT _ EXTRA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ApiKey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ