android - In App Purchase Error in Static codes -


i using current code purchase calling purchase intent

bundle buyintentbundle = mservice.getbuyintent(3, pcontext.getpackagename(), "android.test.canceled", "inapp", "bgoa+v7g/yqdxv"); set<string> allkeys = buyintentbundle.keyset(); object  responsecode= buyintentbundle.get("response_code"); object  intent= buyintentbundle.get("buy_intent"); log.i(tag,"buyintentbundle"+buyintentbundle.keyset()+"responsecode"+responsecode+"intent"+intent); pendingintent pendingintent = buyintentbundle.getparcelable("buy_intent"); if (pendingintent != null) {     pcontext.startintentsenderforresult(pendingintent.getintentsender(), 2013, new intent(), integer.valueof(0), integer.valueof(0),integer.valueof(0)); } 

now onactivityresult checking

if (requestcode == 2013) {                log.i(tag, "onactivity result called inside request code");     int responsecode = intent.getintextra("response_code", 0);     string purchasedata = intent.getstringextra("inapp_purchase_data");     string datasignature = intent.getstringextra("inapp_data_signature");           if (responsecode == constants.billing_response_result_ok) {     try {         jsonobject jo = new jsonobject(purchasedata);         string sku = jo.getstring("productid");         toast.maketext(pcontext, "you have bought " + sku + ". excellent choice, adventurer!", toast.length_short);         jsonobject o = new jsonobject(purchasedata);         string morderid = o.optstring("orderid");         string mpackagename = o.optstring("packagename");         string msku = o.optstring("productid");         long mpurchasetime = o.optlong("purchasetime");         int mpurchasestate = o.optint("purchasestate");         string mdeveloperpayload = o.optstring("developerpayload");         string mtoken = o.optstring("token", o.optstring("purchasetoken"));         try {             mservice.consumepurchase(3, pcontext.getpackagename(), mtoken);         } catch (remoteexception e) {                     e.printstacktrace();         }//consumepurchase     }     catch (jsonexception e) {                 toast.maketext(pcontext, "failed parse purchase data.", toast.length_short);                 e.printstacktrace();     }     }else if (responsecode == constants.billing_response_result_user_canceled) {          toast.maketext(pcontext, "user cancelled purchase.", toast.length_short);     }else if (responsecode == constants.billing_response_result_billing_unavailable) {          toast.maketext(pcontext, "your device doesn't support inapp billing.", toast.length_short);     }else if (responsecode == constants.billing_response_result_item_unavailable) {          toast.maketext(pcontext, "item not available billing.", toast.length_short);     }else if (responsecode == constants.billing_response_result_developer_error) {          toast.maketext(pcontext, "can't purchase item due developer error.", toast.length_short);     }else if (responsecode == constants.billing_response_result_error) {          toast.maketext(pcontext, "can't purchase item due error in response.", toast.length_short);     }else if (responsecode == constants.billing_response_result_item_already_owned) {          toast.maketext(pcontext, "you own item.", toast.length_short);     }else if (responsecode == constants.billing_response_result_item_not_owned) {          toast.maketext(pcontext, "you don't own item.", toast.length_short);     } } 

since calling "android.test.canceled" should getting billing_response_result_user_canceled response shows payment successful , returns responsecode billing_response_result_ok no other parameter in intent.getextras. trying static responses http://developer.android.com/google/play/billing/billing_testing.html#billing-testing-static

thanks & regards!!

you not checking:

if (resultcode == activity.result_ok) {     .... } 

it's possible process not complete successfully. , since default value responsecode in case key "response_code" not present in intent "0"....

int responsecode = intent.getintextra("response_code", 0); 

.... responsecode initialized constants.billing_response_result_ok == > 0.

try using:

int responsecode = intent.getintextra("response_code", -1);   

and add final else block handle -1.


Comments

Popular posts from this blog

matlab - Deleting rows with specific rules -

php - MySQLi multi_query results for later use -