El elemento que ha solicitado no está disponible para su compra: facturación en la aplicación
¡Tengo problemas para probar la facturación de Android! ¡Alguien ayúdeme! Yo hago un ejemplo:
Actividad principal
- Qt versiones para arquitecturas mips, brazo, x86 faltan
- ¿Cómo interactuar con el menú USSD?
- La geolocalización del teléfono no funciona
- Portales de aplicaciones móviles centralizados y descentralizados
- ¿Qué significa ".line" en la sintaxis del código smali? (Código Android-Smali)
public class MainActivity extends Activity { IabHelper mHelper; IabHelper.QueryInventoryFinishedListener mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() { public void onQueryInventoryFinished(IabResult result, Inventory inventory){ if (result.isFailure()) { // handle error Toast.makeText(getApplicationContext(), "debug: Query occur error!", Toast.LENGTH_SHORT).show(); return; } if (result.isSuccess()) { Toast.makeText(getApplicationContext(), "debug: Query successfully!", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "debug: " + inventory.getSkuDetails("product_1").getTitle(), Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "debug: " + inventory.getSkuDetails("product_2").getTitle(), Toast.LENGTH_SHORT).show(); return; } } }; IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { public void onIabPurchaseFinished(IabResult result, Purchase purchase) { if (result.isFailure()) { Toast.makeText(getApplicationContext(), "debug: purcharge failed", Toast.LENGTH_SHORT).show(); Log.d("Purchrge", "Error purchasing: " + result); return; } switch (purchase.getSku()){ case "product_1": Toast.makeText(getApplicationContext(), "debug: purcharge product 1", Toast.LENGTH_SHORT).show(); break; case "product_2": Toast.makeText(getApplicationContext(), "debug: purcharge product 2", Toast.LENGTH_SHORT).show(); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String base64EncodedPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn9zEWzKIvk/hScbZyrZ6HE4y679DUIQPsxfz0mQJmnv3RYCdd7Zcy+peOtnvRyZzmbrAcYmW1FOsH/3dJwuAmdO+Wd9HyDre+vJwAAQ/QI2WA4lbWSl4jVEr7AX9p3J8pBIy3UKRmhjk/PFN8N1jYDUnnPbZJnSkd6eRpiET+MMUsNHIoCxXzmqXvy3bFh/L61gtqUW/acOkWuXnLkn6rVVBzHUL9YLeVRdnN86DnejJySe8DniiAH0sfMP7wxU2y4GoKPjXDeZFNZr4ii22re7ogpIjEfUEb3+FxtxfbjPFz6hONsy/NofkEDznci5fPk8FtulhVbkJ82Rpiq6BXQIDAQAB"; mHelper = new IabHelper(this, base64EncodedPublicKey); } public void query(View view){ mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { public void onIabSetupFinished(IabResult result) { if (!result.isSuccess()) { // Oh noes, there was a problem. Log.d("Billing error: ", "Problem setting up In-app Billing: " + result); Toast.makeText(getApplicationContext(), "debug: IAB is not set up!", Toast.LENGTH_SHORT).show(); } // Hooray, IAB is fully set up! Toast.makeText(getApplicationContext(), "debug: Hooray, IAB is fully set up!", Toast.LENGTH_SHORT).show(); List additionalSkuList = new ArrayList(); additionalSkuList.add("product_1"); additionalSkuList.add("product_2"); mHelper.queryInventoryAsync(true, additionalSkuList, mQueryFinishedListener); } }); } public void pay(View view){ mHelper.launchPurchaseFlow(this, "product_1", 10001, mPurchaseFinishedListener, "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ"); } @Override public void onDestroy() { super.onDestroy(); if (mHelper != null) mHelper.dispose(); mHelper = null; } }
Principal de actividad
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Query" android:onClick="query"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pay" android:onClick="pay"/> </LinearLayout>
Al desplegar la aplicación, tengo dos botones (consulta, pago). Hago clic en el botón Consultar antes de hacer clic en el botón Pago.
Entonces consigo el formulario con: "el artículo que usted pidió no está disponible para la compra"
Me aseguro de que:
Firmé el APK en modo de liberación
La aplicación se publica
Los productos están activos
Alguien me ayude a encontrar nuestro problema?
¡Estoy muy agradecido!
- Transmisión de audio entre el dispositivo bluetooth externo y el teléfono Android
- No se puede implementar la aplicación mediante Device Chooser después de actualizar Android Studio a 1.4
- ¿Qué necesito saber para hacer que mi sitio web funcione en dispositivos móviles hoy en día?
- Comportamiento de Android 4.2 - Environment.getExternalStorageDirectory (). GetPath ()
- Android ListView: obtenga una distancia de desplazamiento
- ¿Cómo se simula la memoria baja en el emulador de Android?
- Api de audio de baja latencia para Android?
- Desafíos al realizar el desarrollo de aplicaciones móviles con Python
Asegúrese de que android:versionCode=""
en su archivo AndroidManifest.xml
que está probando, tiene el mismo número de versión que en el .apk
que subió como su versión alfa activa actual en la Consola del Desarrollador.
Esto al menos fue mi problema ya que estaba recibiendo el mismo error.
- Las clases de modelo de dominio deben extender RealmObject o implementar RealmModel para que se considere una clase de modelo válida
- Phonegap / cordova pantalla de bienvenida proporción aspecto problema