in app billing - How can I implement restore purchase in android -


thanks visiting page.

few days ago, i've developed simple android game in app-billing.

now going implement restore purchase function don't know how can dot it.

i've made few days of googling , found many links didn't work me now.

please let me know how programmatically.

where can find sample of restore purchase ?

i've implement in app purchase not restore purchase.

i used android studio 1.5.1.

i've refered http://www.techotopia.com/index.php/an_android_studio_google_play_in-app_billing_tutorial implement in app purchase.

please me :(

thanks advance.

if implemented inapp purchase using v3 need not worry restore purchase implementation. can query inventory , catch existing purchase information. please check implementation.

what did here have purchase module. while complete purchase, send information our server. after relog in or come application, server send current user purchase info whether purchased or not. if server gives negative result, check query inventory there existing purchase on there. that, using following code in mainactivity oncreate().

 mhelper = new iabhelper(this, base64encodedpublickey);         mhelper.enabledebuglogging(true);         log.d(tag, "starting setup.");         mhelper.startsetup(new iabhelper.oniabsetupfinishedlistener() {             public void oniabsetupfinished(iabresult result) {                 log.d(tag, "setup finished.");                 if (!result.issuccess()) {                     log.e(tag, "in app set error:: please check gmail account settings/ credit card info etc");                     return;                 }                 if (mhelper == null) return;                 mbroadcastreceiver = new iabbroadcastreceiver(mainactivity.this);                 intentfilter broadcastfilter = new intentfilter(iabbroadcastreceiver.action);                  registerreceiver(mbroadcastreceiver, broadcastfilter);                  log.d(tag, "setup successful. querying inventory.");                 if (msupplier.getmsubscriptionstatus() == 0) { // status given local server 0- unscubscribed user, 1- subscribed user                     mhelper.queryinventoryasync(mgotinventorylistenerforpurchase);                 }             }         }); 

in result, can identify existing purchase information.

iabhelper.queryinventoryfinishedlistener mgotinventorylistenerforpurchase = new iabhelper.queryinventoryfinishedlistener() {             public void onqueryinventoryfinished(iabresult result, inventory inventory) {                 try {                     log.d(tag, "query inventory purchase finished.");                     string payload = // developer payload                     if (mhelper == null) return;                     if (result.isfailure()) {                         log.v(tag, "purchse result error- no purchase available");                         return;                     }                     log.v(tag, "query inventory purchase successful.");                     if (mskudetaillist == null || mskudetaillist.isempty()) {                         log.v(tag, "sku info local server- unable purchase");                         return;                     }                     purchase premiumpurchase = null;                     (iabskudetailmodel data : mskudetaillist) {                          // filter purchase info using sku:::                         premiumpurchase = inventory.getpurchase(data.getmpackagename());                         if (premiumpurchase != null) {                             break;                         }                     }                     if (premiumpurchase == null) {                         log.v(tag, "no available purchase user");                         return;                     }                     if (verifydeveloperpayload(premiumpurchase)) {                         log.v(tag, "purchase there ::: developer payload matching:: need update local server: no need purchase agian");                         if (premiumpurchase.getsku().equalsignorecase(mselectedsku)) {                             iabpurchaseupdatereq request = new iabpurchaseupdatereq();                             request.setmpurchasetoken(premiumpurchase.gettoken());                             request.setmuserid("" + msupplier.getmuserid());                             request.setmpublickey(iabconstants.iab_rsa_public_key);                             request.setmsignature(premiumpurchase.getsignature());                             request.setmsubscriptionid(premiumpurchase.getsku());                             request.setmpurchaseobj(premiumpurchase.getoriginaljson());                              //update "result local server"                         } else {                             log.v(tag, "sku mismatch ::: ");                         }                     } else {                          log.v(tag, "developer payload error:: wrong purchase");                     }                 } catch (exception e) {                     e.printstacktrace();                 }             }         }; 

Comments

Popular posts from this blog

javascript - jQuery: Add class depending on URL in the best way -

caching - How to check if a url path exists in the service worker cache -

Redirect to a HTTPS version using .htaccess -