2013-08-25 5 views
5

Sto implementando la fatturazione dell'abbonamento utilizzando l'API di fatturazione Versione 3. Dopo la finestra di pagamento è chiuso (il pagamento è riuscito), il controllo è restituito di nuovo alla mia attivitàNell'API di fatturazione della app v3 INAPP_PURCHASE_DATA è nullo in bundle quando onActivityResult viene chiamato

chiamata metodo

 String payload = UUID.randomUUID().toString(); 
     bundle = mService.getBuyIntent(3, getPackageName(), mProduct, "subs", payload); 

     int responseCode = bundle.getInt("RESPONSE_CODE"); 
     if (responseCode == 0) { 
      PendingIntent pendingIntent = bundle.getParcelable("BUY_INTENT"); 
      startIntentSenderForResult(pendingIntent.getIntentSender(), 1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0)); 
     } else if (responseCode == 1) { 
       mErrorMessage.setText(getResources().getString(R.string.purchase_cancelled)); 
       mErrorMessage.setVisibility(View.VISIBLE); 
     } else if (responseCode == 7) { 
       mErrorMessage.setText(getResources().getString(R.string.payment_twice)); 
       mErrorMessage.setVisibility(View.VISIBLE); 
     } else { 
       mErrorMessage.setText(getResources().getString(R.string.payment_general_error)); 
       mErrorMessage.setVisibility(View.VISIBLE); 
     } 

mia attività

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode == Activity.RESULT_OK) { 
      // Null 
      String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA" 
     } 
    } 

Il problema è che la stringa purchaseData è nullo. Ciò potrebbe essere dovuto al fatto che ho già acquistato questo abbonamento (un milione di volte durante il test) e che avrei dovuto verificare prima con getPurchases().

È noto per gli acquisti di "passare attraverso - apparentemente con successo", se l'utente tenta di pagare quando lui o lei è 1) un abbonato corrente, o 2) nel periodo dopo la cancellazione ma prima che il servizio scada?

+0

post il metodo di chiamata –

+0

Ho pubblicato anche il metodo di chiamata –

+2

ho avuto lo stesso problema con android.test.purchased .... provare ad implementare il prodotto reale e test utilizzando sandbox .... penso con Android. test.purchased si ottiene sempre null .. –

risposta

4

Ho avuto lo stesso problema e ho scoperto che stavo usando ITEM_TYPE_SUBS = "subs" anziché ITEM_TYPE_INAPP = "inapp".

Quando ho inserito il parametro giusto, ha funzionato come previsto.

+0

questo non risolve affatto la questione, OP specifica Payload stringa = UUID.randomUUID(). ToString(); bundle = mService.getBuyIntent (3, getPackageName(), mProduct, "subs", payload); – desgraci

+0

Bella cattura. "inapp" mi ha salvato. Grazie a @Repminister – Nizam

Problemi correlati