package Ġco . ich ob . cc pp flutter plugin Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . webkit . WebView Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . cc pp . pg w . sdk . android . callback . API Response Callback Ċ import Ġcom . cc pp . pg w . sdk . android . callback . PG W WebView Client Callback Ċ import Ġcom . cc pp . pg w . sdk . android . callback . PG W WebView Transaction Status Callback Ċ import Ġcom . cc pp . pg w . sdk . android . core . PG W SDK Ċ import Ġcom . cc pp . pg w . sdk . android . core . authenticate . PG W WebView Client Ċ import Ġcom . cc pp . pg w . sdk . android . enums . API Response Code Ċ import Ġcom . cc pp . pg w . sdk . android . model . api . Transaction Status Request Ċ import Ġcom . cc pp . pg w . sdk . android . model . api . Transaction Status Response Ċ Ċ class ĠWebView Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm Redirect Url : ĠString Ġ= Ġ" https :// www . ch om ch ob . com " ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġif Ġ( arguments Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Redirect Url Ġ= Ġarguments ?. getString ( ARG _ RE DIRECT _ URL ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠwebView Ġ= ĠWebView ( require Context ()) ĊĠĠĠĠĠĠĠ ĠwebView . layout Params Ġ= ĠViewGroup . LayoutParams ( ViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT ) ĊĠĠĠĠĠĠĠ ĠwebView . settings . java Script Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠwebView . settings . dom Storage Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠwebView . web View Client Ġ= ĠP GW WebView Client () ĊĠĠĠĠĠĠĠ Ġ// ĠwebView . add Javascript Interface ( PG W JavaScript Interface ( m API Response Callback ), ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ ĠP GW JavaScript Interface . J AV AS CRIPT _ TRANSACTION _ RESULT _ KEY ) ĊĠĠĠĠĠĠĠ ĠwebView . set WebView Client ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP GW WebView Client ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Transaction Status Callback , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm WebView Client Callback ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĊĠĠĠĠĠĠĠ ĠwebView . load Url ( m Redirect Url ) ĊĠĠĠĠĠĠĠ Ġreturn ĠwebView ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm Transaction Status Callback Ġ= ĠP GW WebView Transaction Status Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Do ĠTransaction ĠStatus ĠIn quiry ĠAPI Ġand Ġclose Ġthis ĠWebView . ĊĠĠĠĠĠĠĠ Ġ// Step Ġ 1 Ġ: ĠGenerate Ġpayment Ġtoken ĊĠĠĠĠĠĠĠ Ġval Ġpayment Token Ġ= Ġit ĊĊĠĠĠĠĠĠĠ Ġ// Step Ġ 2 : ĠConstruct Ġtransaction Ġstatus Ġin quiry Ġrequest . ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Status Request Ġ= ĠTransaction Status Request ( payment Token ) ĊĠĠĠĠĠĠĠ Ġtransaction Status Request . set Additional Info ( true ) ĊĊĠĠĠĠĠĠĠ Ġ// Step Ġ 3 : ĠRetrieve Ġtransaction Ġstatus Ġin quiry Ġresponse . ĊĊĠĠĠĠĠĠĠ ĠP GW SDK . getInstance (). transaction Status ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Status Request , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠAPI Response Callback < Transaction Status Response > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( response : ĠTransaction Status Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . response Code Ġ== ĠAPI Response Code . Transaction NotFound Ġ|| Ġresponse . response Code Ġ== ĠAPI Response Code . Transaction Completed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Read Ġtransaction Ġstatus Ġin quiry Ġresponse . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinvoice No Ġ= Ġresponse . invoice No ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . putExtra (" invoice No ", Ġinvoice No ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. set Result ( Activity . RESULT _ OK , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get Ġerror Ġresponse Ġand Ġdisplay Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . putExtra (" errorMessage ", Ġresponse . response Description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. set Result ( Activity . RESULT _ OK , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( error : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get Ġerror Ġresponse Ġand Ġdisplay Ġerror . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get Ġerror Ġresponse Ġand Ġdisplay Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . putExtra (" errorMessage ", Ġerror . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. set Result ( Activity . RESULT _ OK , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm WebView Client Callback : ĠP GW WebView Client Callback Ġ= ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠP GW WebView Client Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i ( TAG , Ġ" PG W WebView Client Callback Ġshould Override Url Loading Ġ: Ġ$ url ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Started ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog . i ( TAG , Ġ" PG W WebView Client Callback Ġon Page Started Ġ: Ġ$ url ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Finished ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog . i ( TAG , Ġ" PG W WebView Client Callback Ġon Page Finished Ġ: Ġ$ url ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġprivate Ġval Ġm API Response Callback : ĠAPI Response Callback < Transaction Result Response > Ġ= Ġobject Ġ: ĠAPI Response Callback < Transaction Result Response > Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( response : ĠTransaction Result Response ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . response Code Ġ== ĠAPI Response Code . Transaction Completed ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinvoice No Ġ= Ġresponse . invoice No Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠIntent () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . putExtra (" invoice No ", Ġinvoice No ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. set Result ( Activity . RESULT _ OK , Ġresult ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. finish () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get Ġerror Ġresponse Ġand Ġdisplay Ġerror Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠIntent () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . putExtra (" errorMessage ", Ġresponse . response Description ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. set Result ( Activity . RESULT _ OK , Ġresult ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. finish () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( error : ĠThrowable ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get Ġerror Ġresponse Ġand Ġdisplay Ġerror Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠIntent () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġresult . putExtra (" errorMessage ", Ġerror . message ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. set Result ( Activity . RESULT _ OK , Ġresult ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. finish () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ RE DIRECT _ URL Ġ= Ġ" ARG _ RE DIRECT _ URL " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( redirect Url : ĠString ): ĠWebView Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠWebView Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString ( ARG _ RE DIRECT _ URL , Ġredirect Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }