package Ġcom . sw ire pay . android _ sdk . ui . payment _ activity Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . sw ire pay . android _ sdk . Sw ire pay Sdk Ċ import Ġcom . sw ire pay . android _ sdk . ui . base . Base Activity Ċ import Ġcom . sw ire pay . android _ sdk . ui . payment _ activity . model . Customer Model Ċ Ċ class ĠPayment Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġval ĠviewModel : ĠViewModel Payment Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġamount Ġ= Ġintent . getInt Extra ( Sw ire pay Sdk . PAYMENT _ AMOUNT , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġcurrency Ġ= Ġintent . getString Extra ( Sw ire pay Sdk . PAYMENT _ CUR RE NCY ) ĊĠĠĠĠĠĠĠ Ġval Ġcustomer Ġ= Ġintent . get Parcelable Extra < Customer Model >( Sw ire pay Sdk . PAYMENT _ CUSTOMER ) ĊĠĠĠĠĠĠĠ Ġval Ġnotification Type Ġ= Ġintent . getString Extra ( Sw ire pay Sdk . NOTIFICATION _ TYPE ) ĊĠĠĠĠĠĠĠ Ġval Ġcustomer Gid Ġ= Ġintent . getString Extra ( Sw ire pay Sdk . PAYMENT _ CUSTOMER _ G ID ) ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġintent . getString ArrayList Extra ( Sw ire pay Sdk . PAYMENT _ METHOD _ TYPES ) ĊĠĠĠĠĠĠĠ Ġval Ġdue Date Ġ= Ġintent . getString Extra ( Sw ire pay Sdk . D UE _ DATE ) ĊĠĠĠĠĠĠĠ ĠViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĠCustom Customer Details ViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġamount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustomer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustomer Gid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Type Ġ= Ġnotification Type !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdue Date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). get ( ViewModel Payment :: class . java ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġval Ġparam _ id : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" sp - payment - link " ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel . live Payment Link . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Url ( it . link ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" onCreate : Ġ${ it . link }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . live Error Messages . observe ( this , ĠObserver Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( RESULT _ C ANCE LED , ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . live Payment Link . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Sw ire pay Sdk . RESULT , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( FAILURE _ REASON , ĠP AY MENT _ FAILURE _ REASON _ API _ FAILURE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( PAYMENT _ MESSAGE , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . live Payment Results . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( RESULT _ OK , ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Sw ire pay Sdk . STATUS , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Sw ire pay Sdk . RESULT , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Redirect ( url : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Redirect : Ġ$ url ") ĊĠĠĠĠĠĠĠ ĠviewModel . check Payment Status () ĊĠĠĠĠĠĠĠ Ġbinding . progress . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Result ( RESULT _ C ANCE LED , ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( FAILURE _ REASON , ĠFAILURE _ REASON _ USER _ CANCEL LED ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" sdk _ test " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠP AY MENT _ MESSAGE Ġ= Ġ" payment _ message " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFAILURE _ REASON Ġ= Ġ" payment _ failure _ reason " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFAILURE _ REASON _ USER _ CANCEL LED Ġ= Ġ" user _ cancelled " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠP AY MENT _ FAILURE _ REASON _ API _ FAILURE Ġ= Ġ" api _ failure " ĊĠĠĠ Ġ} Ċ Ċ }