I am using current code for purchase for 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 i am 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 the " + 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 to 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 is not available for billing.", Toast.LENGTH_SHORT);
}else if (responseCode == Constants.BILLING_RESPONSE_RESULT_DEVELOPER_ERROR) {
Toast.makeText(pContext, "Can't purchase item due to some developer error.", Toast.LENGTH_SHORT);
}else if (responseCode == Constants.BILLING_RESPONSE_RESULT_ERROR) {
Toast.makeText(pContext, "Can't purchase item due to some error in response.", Toast.LENGTH_SHORT);
}else if (responseCode == Constants.BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED) {
Toast.makeText(pContext, "You already own this item.", Toast.LENGTH_SHORT);
}else if (responseCode == Constants.BILLING_RESPONSE_RESULT_ITEM_NOT_OWNED) {
Toast.makeText(pContext, "You don't own this item.", Toast.LENGTH_SHORT);
}
}
Since i am calling "android.test.canceled" so i should be getting BILLING_RESPONSE_RESULT_USER_CANCELED this response but it shows as payment successful and returns responseCode as BILLING_RESPONSE_RESULT_OK with no other parameter in that intent.getExtras. I am trying static responses http://developer.android.com/google/play/billing/billing_testing.html#billing-testing-static
Thanks & Regards!!
You are not checking:
if (resultCode == Activity.RESULT_OK) {
....
}
It's possible that the process does not complete successfully. And since the default value for responseCode
in case that key "RESPONSE_CODE" is not present in intent
is "0"....
int responseCode = intent.getIntExtra("RESPONSE_CODE", 0);
.... responseCode
is initialized to Constants.BILLING_RESPONSE_RESULT_OK
== > 0
.
Try using:
int responseCode = intent.getIntExtra("RESPONSE_CODE", -1);
And add a final else
block to handle -1
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With