Aplicación no configurada para la facturación a través de Google Play
Estoy trabajando en un proyecto android y estoy tratando de implementar In App Billing V3.
He subido mi aplicación a Google Play y agregado un IAP a la aplicación. Puedo recuperar con éxito una lista de la IAP mi aplicación tiene junto con su precio, pero cuando realmente intento hacer una compra de mi dispositivo obtiene el siguiente error (no hay error en
- ¿Cómo verificamos el recibo de facturación de Android en la aplicación en el lado del servidor?
- En la facturación de aplicaciones v3 Artículos no consumibles de Android
- Facturación de InApp: java.lang.SecurityException Requiere READ_PHONE_STATE
- Falla de confiabilidad de la aplicación en la aplicación v3
- Compra en la aplicación con el servidor
Esta versión de la aplicación no está configurada para la facturación a través de Google Play. Consulte el centro de ayuda para obtener más información.
A continuación se muestra el código que recupera los IAP disponibles y realiza la compra
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()); }
Mi onCreate contiene lo siguiente
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);
A continuación se muestra mi archivo de manifiesto
<?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>
Gracias por cualquier ayuda que usted nos pueda proporcionar
- Android: en la compra de aplicaciones, debes añadir el permiso FACTURACIÓN a tu APK.
- En el estado gestionado y no administrado de la facturación de aplicaciones para el producto
- Android En la aplicación de facturación v3 no está devolviendo el precio local correcto (getSkuDetails)
- No se puede comprar en el producto de la aplicación de Google Play
- Android LVL y InAppBilling: cómo seleccionar la cuenta de usuario actual para la compra?
- ¿Cómo activar un producto integrado en la aplicación en la consola de Google Play para desarrolladores mientras la aplicación está en borrador?
- android: facturación Inapp: respuesta de error: 7: artículo ya poseído
- ¿Cómo determinar el número de suscriptores de facturación en la aplicación?
Hay algunas cosas a considerar aquí:
-
Después de cargar tu apk en Google Play, debes esperar un poco para que los servidores de Google se actualicen (similar a cuando publiques una actualización). Esto puede tomar una hora o dos o más en mi experiencia. Así que intente de nuevo en unas pocas horas.
-
Asegúrese de que la versión del apk que ha cargado está configurada para IAP (a través de los permisos) y, a continuación, pruebe sólo IAP con un apk firmado. Es decir, exporta y firma tu apk de Eclipse y luego instala localmente en tu dispositivo. De lo contrario, si ejecuta una versión sin firmar de la aplicación directamente desde el IDE, no funcionará y verá un error.
Nota: No es necesario cargar un nuevo apk cada vez que realice cambios menores, siempre que el apk de borrador actualmente cargado haya sido configurado con los permisos correctos y haya publicado sus ítems IAP en la consola de dev. La única parte molesta es que usted tiene que exportar y firmar su aplicación cada vez después de hacer cambios y ejecutarlo en un dispositivo localmente.
-
Compruebe que el versionCode de su apk cargado tenga el mismo versionCode que su versión local del apk.
-
No puedes usar tu cuenta de desarrollador para realizar compras de prueba, ya que Google Wallet no te permite comprar elementos de ti mismo. Por lo tanto, debe configurar algunas cuentas de prueba en la consola de desarrollo e intentar comprar elementos desde un dispositivo que ejecuta la cuenta de prueba.
- No se puede resolver el símbolo 'soporte' (utilizando Android Studio, siguiendo la guía de introducción)
- ¿Botón de encargo androide con el imageview y textview dentro?