package Ġeu . nets . m ias ample . activity Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Patterns Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġeu . nets . m ias ample . R Ċ import Ġeu . nets . m ias ample . activity . MainActivity . Companion . CANCEL _ URL Ċ import Ġeu . nets . m ias ample . activity . MainActivity . Companion . CON SUM ER _ DATA _ MER CHANT _ IN JECT ED Ċ import Ġeu . nets . m ias ample . activity . MainActivity . Companion . CON SUM ER _ DATA _ NONE Ċ import Ġeu . nets . m ias ample . activity . MainActivity . Companion . CON SUM ER _ DATA _ NO _ SHIP PING _ ADDR Ċ import Ġeu . nets . m ias ample . network . API Manager Ċ import Ġeu . nets . m ias ample . network . callback . HttpResponse Ċ import Ġeu . nets . m ias ample . network . request .* Ċ import Ġeu . nets . m ias ample . network . response . Charge Payment Response Ċ import Ġeu . nets . m ias ample . network . response . Http Error Ċ import Ġeu . nets . m ias ample . network . response . Payment Response Ċ import Ġeu . nets . m ias ample . network . response . Register Payment Response Ċ import Ġeu . nets . m ias ample . utils . Sample Html Provider Ċ import Ġeu . nets . m ias ample . utils . Sample Local Host Ċ import Ġeu . nets . m ias ample . utils . Shared Prefs Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList ĊĊ Ċ /** Ċ Ġ* Ġ Ġ***** Copyright Ġ( c ) Ġ 2 0 2 0 ĠN ets ĠDen mark ĠA / S ***** Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġ Ġof Ġthis Ġsoftware Ċ Ġ* Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġ Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ċ Ġ* Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ċ Ġ* Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġ Ġfurnished Ġto Ġdo Ġso , Ċ Ġ* Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , Ċ Ġ* ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . Ċ Ġ* ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , Ċ Ġ* ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE Ċ Ġ* ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ* Ċ Ġ*/ Ċ class ĠMainActivity Presenter Impl ( private Ġvar Ġm View : ĠMainActivity View ?) Ġ: ĠMainActivity Presenter Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Payment Id : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Terms Url : ĠString Ġ= ĠSample Local Host . TERMS _ URL ĊĊĠĠĠ Ġ// main Ġactivity Ġpresenter Ġinterface ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCall Ġview 's Ġinit Listeners ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġm View ?. init Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLa unches Ġthe ĠSDK Ġwith Ġthe Ġpayment Id Ġand Ġcheckout Url ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġlaunch SDK () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// register Ġpayment ĊĠĠĠĠĠĠĠ Ġregister Payment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMethod Ġcalled Ġfrom Ġactivity Ġlifecycle Ġto Ġrestore Ġthe Ġview Ġstate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Resume ( main Activity View : ĠMainActivity View ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m View Ġ= Ġmain Activity View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMethod Ġcalled Ġfrom Ġactivity Ġlifecycle Ġto Ġclear Ġall Ġcached Ġdata ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m View Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCall Ġ/ payment ĠAPI Ġto Ġget Ġa Ġpayment ID Ġto Ġbe Ġused Ġin Ġthe Ġcheckout Ġpage ĊĠĠĠĠ Ġ* ĠIf Ġpayment Id Ġis Ġcreated , Ġthe Ġlocalhost Ġserver Ġwill Ġbe Ġstarted Ġand Ġthe ĠSDK Ġis Ġlaunched ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġregister Payment () Ġ{ ĊĠĠĠĠĠĠĠ Ġm View ?. show Loader ( true ) ĊĠĠĠĠĠĠĠ ĠAPI Manager . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. register Payment ( get Payment Request (), Ġobject Ġ: ĠHttpResponse < Register Payment Response >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( response : ĠRegister Payment Response ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Payment Id Ġ= Ġresponse ?. payment Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Loader ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// start Ġserver Ġfirst ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSample Local Host . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start Server ( Sample Html Provider . get Checkout Html ( m Payment Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// launch Ġsdk ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( Shared Prefs . getInstance (). integration Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . E ASY _ HOST ED _ PAYMENT _ WINDOW Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// is Ġeasy Ġhosted Ġpayment Ġwindow Ġ- Ġsend Ġthe Ġreturn Ġurl ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. launch Easy SDK ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Payment Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse ?. hosted Payment Page Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . RETURN _ URL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCANCEL _ URL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// to Ġbe Ġcontinued Ġon Ġfuture Ġintegration Ġtypes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( code : ĠInt , Ġerror : ĠHttp Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Loader ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error . errors Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Alert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ error . code Ġ?: Ġcode }: Ġ${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . source ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠgetContext (). getString ( R . string . error _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . message Ġ?: ĠgetContext (). getString ( R . string . error _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Alert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetContext (). getString ( R . string . error _ title ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . parse Errors () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCall Ġ/ payment /{ payment Id } Ġto Ġretrieve Ġthe Ġpayment Ġstatus ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Payment () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// call Ġget Ġpayment Ġand Ġbased Ġon Ġthe Ġpayment Ġstatus Ġcall Ġapi Ġor Ġshow Ġpopup ĊĠĠĠĠĠĠĠ Ġm View ?. show Loader ( true ) ĊĊĠĠĠĠĠĠĠ ĠAPI Manager . getInstance (). get Payment ( m Payment Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"", Ġobject Ġ: ĠHttpResponse < Payment Response >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( response : ĠPayment Response ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// determine Ġthe Ġpayment Ġstatus ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse ?. payment ?. payment Reserved () Ġ== Ġtrue Ġ-> Ġ// the Ġamount Ġwas Ġre server d Ġ- Ġproceed Ġwith Ġcharge Ġor Ġcancel ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( Shared Prefs . getInstance (). charge Payment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġcharge Payment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcancel Payment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse ?. payment ?. payment Cancelled () Ġ== Ġtrue Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Loader ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// the Ġpayment Ġwas Ġcanceled Ġusing Ġthe Ġoption Ġinside Ġthe Ġpayment Ġpage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Alert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetContext (). getString ( R . string . c anceled _ title ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetContext (). getString ( R . string . transaction _ c anceled ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse ?. payment ?. payment Char ged () Ġ== Ġtrue Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Loader ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// the Ġpayment Ġwas Ġalready Ġchar ged ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Alert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetContext (). getString ( R . string . success _ title ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetContext (). getString ( R . string . success _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġm View ?. show Loader ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( code : ĠInt , Ġerror : ĠHttp Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Loader ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġpayment Ġis Ġsuccessful , Ġfinish Ġthe Ġpayment Ġprocess Ġby Ġch arging Ġthe Ġreserved Ġamount ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcharge Payment () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcharge Payment Request Ġ= Ġget Order Request () ĊĠĠĠĠĠĠĠ ĠAPI Manager . getInstance (). charge Payment ( m Payment Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"", Ġcharge Payment Request , Ġobject Ġ: ĠHttpResponse < Charge Payment Response >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( response : ĠCharge Payment Response ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Loader ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Alert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetContext (). getString ( R . string . success _ title ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ getContext (). getString ( R . string . success _ message )} Ġ( Authorization Ġchar ged )" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( code : ĠInt , Ġerror : ĠHttp Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Loader ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error . errors Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Alert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ error . code Ġ?: Ġcode }: Ġ${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . source ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠgetContext (). getString ( R . string . error _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . message Ġ?: ĠgetContext (). getString ( R . string . error _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Alert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetContext (). getString ( R . string . error _ message ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . parse Errors () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCancel Ġthe Ġauthorization Ġfor Ġa Ġspecific Ġpayment . ĠFor Ġcurrent Ġflow Ġin Ġthis ĠDE MO Ġapp , ĊĠĠĠĠ Ġ* Ġthe ĠCancel Ġwill Ġbe Ġmade Ġafter Ġeach Ġpayment , Ġso Ġno Ġamounts Ġwill Ġbe Ġtaken Ġfrom Ġthe Ġcard . ĊĠĠĠĠ Ġ* ĠIf Ġyou Ġwant Ġto Ġtest Ġthe Ġentire Ġflow , Ġcall Ġ[ charge Payment ] Ġinstead Ġof Ġ[ cancel Payment ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcancel Payment () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcancel Payment Request Ġ= Ġget Order Request () ĊĠĠĠĠĠĠĠ ĠAPI Manager . getInstance (). cancel Payment ( m Payment Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"", Ġcancel Payment Request , Ġobject Ġ: ĠHttpResponse < String >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( response : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Loader ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Alert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetContext (). getString ( R . string . success _ title ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ getContext (). getString ( R . string . success _ message )} Ġ( Authorization Ġcancelled )" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( code : ĠInt , Ġerror : ĠHttp Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Loader ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error . errors Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Alert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ error . code Ġ?: Ġcode }: Ġ${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . source ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠgetContext (). getString ( R . string . error _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . message Ġ?: ĠgetContext (). getString ( R . string . error _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Alert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetContext (). getString ( R . string . error _ message ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . parse Errors () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// end ĊĊĠĠĠ Ġ// helper Ġfunctions ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCast s Ġthe Ġview Ġto ĠContext ĊĠĠĠĠ Ġ* ĠThis Ġis Ġused Ġto Ġaccess Ġthe Ġstring Ġresources ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠMainActivity Ġcontext ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠgetContext (): ĠContext Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm View Ġas ĠContext ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġobject Ġto Ġbe Ġsent Ġin Ġthe Ġ/ payment ĠAPI Ġbody ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠRegister Payment Request Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Payment Request (): ĠRegister Payment Request Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregister Payment Request Ġ= ĠRegister Payment Request () ĊĊĠĠĠĠĠĠĠ Ġval Ġorder Ġ= ĠOrder () ĊĠĠĠĠĠĠĠ Ġval Ġcheckout Ġ= ĠCheckout () ĊĠĠĠĠĠĠĠ Ġval Ġconsumer Ġ= ĠConsumer () ĊĠĠĠĠĠĠĠ Ġval Ġshipping Address Ġ= ĠSh ipping Address () ĊĠĠĠĠĠĠĠ Ġval ĠphoneNumber Ġ= ĠPhone Number () ĊĠĠĠĠĠĠĠ Ġval Ġprivate Person Ġ= ĠPrivate Person () ĊĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠItems () ĊĠĠĠĠĠĠĠ Ġitems . reference Ġ= Ġ" Mi AS DK - Android " ĊĠĠĠĠĠĠĠ Ġitems . name Ġ= Ġ" Lightning ĠC able " ĊĠĠĠĠĠĠĠ Ġitems . quantity Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġitems . unit Ġ= Ġ" pcs " ĊĠĠĠĠĠĠĠ Ġitems . tax Rate Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġitems . tax Amount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġitems . g ross Total Amount Ġ= Ġm View ?. get Amount () ĊĠĠĠĠĠĠĠ Ġitems . g ross Total Amount Ġ= Ġm View ?. get Amount () ĊĊĠĠĠĠĠĠĠ Ġorder . items Ġ= ĠArrayList ( Arrays . asList ( items )) ĊĠĠĠĠĠĠĠ Ġorder . amount Ġ= Ġm View ?. get Amount () ĊĠĠĠĠĠĠĠ Ġorder . currency Ġ= Ġm View ?. getC urrency () ĊĠĠĠĠĠĠĠ Ġorder . reference Ġ= Ġ" Mi AS DK - Android " ĊĊĠĠĠĠĠĠĠ Ġregister Payment Request . order Ġ= Ġorder ĊĊĠĠĠĠĠĠĠ Ġval Ġconsumer Type Ġ= ĠConsumer Type () ĊĠĠĠĠĠĠĠ Ġconsumer Type . supported Types Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArrayList ( Arrays . asList ( Consumer TypeEnum . B 2 B , ĠConsumer TypeEnum . B 2 C )) ĊĠĠĠĠĠĠĠ Ġconsumer Type . default Ġ= ĠConsumer TypeEnum . B 2 C ĊĊĠĠĠĠĠĠĠ Ġ// build Ġcheckout Ġobject Ġbased Ġon Ġintegration Ġtype ĊĠĠĠĠĠĠĠ Ġwhen Ġ( Shared Prefs . getInstance (). integration Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . E ASY _ HOST ED _ PAYMENT _ WINDOW Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠIs ĠEasy Ġhosted Ġpayment Ġwindow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheckout . integration Type Ġ= ĠMainActivity . INTEGR ATION _ TYPE _ PARAM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheckout . return URL Ġ= ĠMainActivity . RETURN _ URL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheckout . cancel Url Ġ= ĠMainActivity . CANCEL _ URL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{// to Ġbe Ġcontinued Ġfor Ġfuture Ġintegration Ġtypes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġhere Ġyour ĠTerms ĠAnd ĠConditions Ġpage ĠURL ; ĠThe Ġcontent Ġof Ġthis Ġpage Ġmust Ġcontain ĊĠĠĠĠĠĠĠĠ Ġ* Ġyour Ġterms Ġand Ġconditions Ġfor Ġuser Ġpayments ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġcheckout . terms Url Ġ= Ġm Terms Url ĊĠĠĠĠĠĠĠ Ġcheckout . consumer Type Ġ= Ġconsumer Type ĊĠĠĠĠĠĠĠ Ġcheckout . charge Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! Shared Prefs . getInstance (). consumer Data . equals ( CON SUM ER _ DATA _ NONE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Shared Prefs . getInstance (). consumer Data . equals ( CON SUM ER _ DATA _ MER CHANT _ IN JECT ED )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Person . firstName Ġ= ĠShared Prefs . getInstance (). firstName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Person . lastName Ġ= ĠShared Prefs . getInstance (). lastName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsumer . private Person Ġ= Ġprivate Person ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠphoneNumber . prefix Ġ= ĠShared Prefs . getInstance (). prefix ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠphoneNumber . number Ġ= ĠShared Prefs . getInstance (). phoneNumber ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsumer . phoneNumber Ġ= ĠphoneNumber ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshipping Address . address Line 1 Ġ= ĠShared Prefs . getInstance (). address Line One ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshipping Address . address Line 2 Ġ= ĠShared Prefs . getInstance (). address Line Two ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshipping Address . city Ġ= ĠShared Prefs . getInstance (). city ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshipping Address . country Ġ= ĠShared Prefs . getInstance (). country Code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshipping Address . postal Code Ġ= ĠShared Prefs . getInstance (). postal Code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsumer . email Ġ= ĠShared Prefs . getInstance (). email ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsumer . shipping Address Ġ= Ġshipping Address ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckout . merchant Handles Consumer Data Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheckout . consumer Ġ= Ġconsumer ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġregister Payment Request . checkout Ġ= Ġcheckout ĊĊĠĠĠĠĠĠĠ Ġreturn Ġregister Payment Request ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuilds Ġthe Ġobject Ġto Ġbe Ġsend Ġin Ġthe Ġ/ charges ĠAPI Ġbody ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠPayment Action Request Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Order Request (): ĠPayment Action Request Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpayment Action Request Ġ= ĠPayment Action Request () ĊĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠItems () ĊĠĠĠĠĠĠĠ Ġitems . reference Ġ= Ġ" Mi AS DK - Android " ĊĠĠĠĠĠĠĠ Ġitems . name Ġ= Ġ" Lightning ĠC able " ĊĠĠĠĠĠĠĠ Ġitems . quantity Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġitems . unit Ġ= Ġ" pcs " ĊĠĠĠĠĠĠĠ Ġitems . tax Rate Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġitems . tax Amount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġitems . g ross Total Amount Ġ= Ġm View ?. get Amount () ĊĠĠĠĠĠĠĠ Ġitems . g ross Total Amount Ġ= Ġm View ?. get Amount () ĊĊĠĠĠĠĠĠĠ Ġpayment Action Request . items Ġ= ĠArrayList ( Arrays . asList ( items )) ĊĠĠĠĠĠĠĠ Ġpayment Action Request . amount Ġ= Ġm View ?. get Amount () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġpayment Action Request ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// end ĊĊĠĠĠ Ġoverride Ġfun Ġvalidate Profile Data (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Shared Prefs . getInstance (). consumer Data . equals ( CON SUM ER _ DATA _ MER CHANT _ IN JECT ED )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalidate Profile Data For Merchant Inject ed () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Shared Prefs . getInstance (). consumer Data . equals ( CON SUM ER _ DATA _ NO _ SHIP PING _ ADDR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalidate Profile Data For No Shipping () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvalidate Profile Data For Merchant Inject ed (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isString Empty ( Shared Prefs . getInstance (). firstName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġis String Empty ( Shared Prefs . getInstance (). lastName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġis String Empty ( Shared Prefs . getInstance (). prefix ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġis String Empty ( Shared Prefs . getInstance (). phoneNumber ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġis String Empty ( Shared Prefs . getInstance (). address Line One ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġis String Empty ( Shared Prefs . getInstance (). postal Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġis String Empty ( Shared Prefs . getInstance (). city ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġis String Empty ( Shared Prefs . getInstance (). country Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġis String Empty ( Shared Prefs . getInstance (). email ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ! Patterns . EMAIL _ ADDRESS . matcher ( Shared Prefs . getInstance (). email ). matches () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Profile Data Validation Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset TextView ( string ToCheck : ĠString , Ġtext Element : ĠTextView , Ġstring To Set : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isString Empty ( string ToCheck )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Element . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Element . text Ġ= Ġstring To Set ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis String Empty ( string ToCheck : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( string ToCheck . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvalidate Profile Data For No Shipping (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isString Empty ( Shared Prefs . getInstance (). postal Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġis String Empty ( Shared Prefs . getInstance (). email ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ! Patterns . EMAIL _ ADDRESS . matcher ( Shared Prefs . getInstance (). email ). matches () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Profile Data Validation Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ Ċ }