I am working on an android project and I am trying to implement In App Billing V3.
I have uploaded my app to Google Play, and add an IAP to the app. I can successfully retrieve a list of the IAP my app has along with its price but when I actually try to make a purchase my device gets the following error (there is no error in
This version of the application is not configured for billing through Google Play. Check the help centre for more information.
Below is the code that retrieves the IAP's available and does the purchase
ArrayList skuList = new ArrayList();
skuList.add("mysqlmanager_pro");
Bundle querySkus = new Bundle();
querySkus.putStringArrayList("ITEM_ID_LIST", skuList);
try
{
Bundle skuDetail = mService.getSkuDetails(3, getPackageName(), "inapp", querySkus);
Log.d("Billing", "Response Received");
int billingResponse = skuDetail.getInt("RESPONSE_CODE");
if (billingResponse == 0)
{
//Get list of IAP's to purcase - NOT NEEDED
ArrayList responseList = skuDetail.getStringArrayList("DETAILS_LIST");
Log.d("Billing", "Response");
Bundle buyIntentBundle = mService.getBuyIntent(3, getPackageName(),
"mysqlmanager_pro", "inapp", "");
PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
startIntentSenderForResult(pendingIntent.getIntentSender(),
Defines.IntentRequestCodes.IAP_PURCHASE_REQUEST, new Intent(),
Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
/*for (String thisResponse : responseList)
{
JSONObject object = new JSONObject(thisResponse);
String sku = object.getString("productid");
String price = object.getString("price");
}*/
}
}
catch (Exception ex)
{
Log.e("Billing", ex.toString());
}
My onCreate contains the following
mServiceConn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
mService = null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mService = IInAppBillingService.Stub.asInterface(service);
}
};
bindService(new Intent("com.android.vending.billing.InAppBillingService.BIND"),
mServiceConn, Context.BIND_AUTO_CREATE);
Below is my manifest file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.BoardiesITSolutions.MysqlManager"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.vending.BILLING" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.BoardiesITSolutions.MysqlManager.Agreement"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:label="@string/app_name">
</activity>
<activity
android:name=".NewDBConnection"
android:label="@string/new_mysql_connection">
</activity>
<activity
android:name=".ConnectionManager"
android:label="@string/connection_manager">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
</activity>
<activity
android:name=".EditDBConnections"
android:label="@string/edit_database_connections">
</activity>
<activity
android:name=".ServerStatus"
android:label="Server Status">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ConnectionManager"/>
</activity>
<activity
android:name=".ConnectedDBManagerHost"
android:label="Connected to DB">
</activity>
<receiver android:name="BillingReceiver">
<intent-filter>
<action android:name="com.android.vending.billing.IN_APP_NOTIFY" />
<action android:name="com.android.vending.billing.RESPONSE_CODE" />
<action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" />
</intent-filter>
</receiver>
</application>
</manifest>
Thanks for any help you can provide
There are a few things to consider here:
After uploading your apk to Google Play, you need to wait a while for Google's servers to update (similar to when you publish an update). This can take an hour or two or longer in my experience. So try again in a few hours.
Ensure that the version of the apk you uploaded is configured for IAP (through the permissions), and then only test IAP with a signed apk. That is, export and sign your apk from Eclipse and then install locally onto your device. Otherwise, if you run an unsigned version of the application directly from the IDE, it will not work and you'll see an error.
Note: You don't need to upload a new apk every time you make minor changes, as long as the currently uploaded draft apk was configured with the correct permissions and you published your IAP items on the dev console. The only annoying part is that you have to export and sign your application each time after making changes and run it on a device locally.
Check that the versionCode of your uploaded apk has the same versionCode as your local version of the apk.
You can not use your developer account to make test purchases, because Google Wallet doesn't allow you to purchase items from yourself. So you need to set up some test accounts on the Developer Console and try purchasing items from a device running the test account.
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