package Ġapp . m ord red . what sc loud . billing Ċ Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . widget . Toast Ċ import Ġapp . m ord red . what sc loud . Build Config Ċ import Ġcom . anj lab . android . i ab . v 3 . Billing Processor Ċ import Ġcom . anj lab . android . i ab . v 3 . Transaction Details Ċ Ċ class ĠBilling Manager Ġ( val Ġbase Activity : ĠAppCompatActivity ): ĠBilling Processor . IB illing Handler { ĊĊĠĠĠ Ġvar Ġbp : ĠBilling Processor ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġis Billing Lib Ready Ġ= Ġfalse ĊĠĠĠ Ġval ĠPRODUCT _ ID Ġ= ĠBuild Config . ProductId ĊĠĠĠ Ġval ĠLICENSE _ KEY Ġ= ĠBuild Config . Lic ence Id ĊĠĠĠ Ġval ĠMER CHANT _ ID Ġ= ĠBuild Config . Merchant Id ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġis Prem ium App Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( Billing Processor . is I ab Service Available ( base Activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbp Ġ= ĠBilling Processor ( base Activity , ĠLICENSE _ KEY , ĠMER CHANT _ ID , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupgrade To Pro () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Billing Lib Ready ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! bp ?. is Purchase d ( PRODUCT _ ID ) !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbp ?. purchase ( base Activity , PRODUCT _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( base Activity , Ġ" You Ġare Ġalready Ġpro Ġuser ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( base Activity , Ġ" Billing Ġlib Ġis Ġnot Ġready Ġyet ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġundo Upgrade To Pro () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Billing Lib Ready ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bp ?. is Purchase d ( PRODUCT _ ID ) !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbp ?. consume Purchase ( PRODUCT _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( base Activity , Ġ" You Ġare Ġnot Ġpro Ġuser Ġyet ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( base Activity , Ġ" Billing Ġlib Ġis Ġnot Ġready Ġyet ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Product Status () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Prem ium App Ġ= Ġbp ?. is Purchase d ( PRODUCT _ ID ) !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġbp ?. release () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Billing Initialized () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Billing Lib Ready Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġupdate Product Status () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Purchase History Restore d () Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Product Status () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Product Purchase d ( productId : ĠString , Ġdetails : ĠTransaction Details ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Product Status () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Billing Error ( errorCode : ĠInt , Ġerror : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġempty ĊĠĠĠ Ġ} Ċ Ċ }