API Android APK Top Up

La ricarica può avvenire in tre diversi ambienti:

  • App per Android dell'integratore dei pagamenti
  • Sito web mobile dell'integratore dei pagamenti
  • Sito web per computer desktop dell'integratore dei pagamenti

Indipendentemente dal flusso, Google passa l'interazione dell'utente al software dell'integratore dei pagamenti. L'integratore dei pagamenti implementa una UI familiare all'utente, ma il flusso deve essere dedicato specificamente a ricaricare il saldo dell'utente, il che significa che l'utente deve essere indirizzato tramite un processo di ricarica, anziché essere indirizzato a un'interfaccia utente per uso generico, in cui dovrebbe passare ulteriormente a un flusso di ricarica.

Tutti i flussi portano l'integratore a produrre una TopUpRedirectResponse. Questa risposta è firmata e rinviata a Google.

I siti web per dispositivi mobili e desktop devono seguire la specifica dell'API Web Top Up, mentre il flusso delle app Android deve seguire la specifica dell'API Android Top Up.

Gli integratori dovrebbero implementare una soluzione APK Android per autenticare l'utente e indirizzarlo attraverso un flusso in cui possono ricaricare il saldo. Questa ricarica è una modalità diversa, ma uguale a quella fornita dalla ricarica web.

Un utente avvia il flusso nell'app di integrazione dei pagamenti tramite un'attività Android. L'intent di ricarica può essere richiamato direttamente da un'app Google Play in cui l'utente intende effettuare un acquisto. Per evitare che Android termini Google Play in background durante la ricarica, l'integratore deve includere quanto segue nel tema dell'attività.

<item name="android:windowIsTranslucent">true</item>

Definizione del metodo

L'intent deve avere queste proprietà:

Proprietà del metodo
Azione com.google.android.payments.standard.TOPUP_V1
Categoria android.intent.category.DEFAULT

Richiesta

Campi
gspTopUpRequest TopUpRedirectRequest

Richiesta di ricarica.

gspAssociationId string

Contiene un identificatore che l'integratore utilizza per cercare le credenziali dell'account che l'utente sta ricaricando. Questo è l'ID associazione che viene inviato durante il collegamento dell'account in AssociateAccountRequest.

Risposta

Dopo che l'utente ha completato il flusso di ricarica, l'applicazione deve inviare un intent risultato a Google. Se la ricarica ha esito positivo, crea un intent e aggiungi gspTopUpResponse criptato e redirectRequestId come extra. Quindi, imposta il risultato dell'attività sul codice risultato appropriato.

...
result.setExtra("gspTopUpResponse", gspTopUpResponse);
result.setExtra("redirectRequestId", redirectRequestId);
setResult(Activity.RESULT_OK, result);
...
finish();

Risultato

Campi
risultato int

Activity.RESULT_OK
Ricarica riuscita.
Activity.RESULT_CANCELED L'utente ha annullato il flusso manualmente e il flusso dovrebbe essere interrotto.
Activity.RESULT_FIRST_USER Ricarica non riuscita per un motivo irreversibile e il flusso dovrebbe essere interrotto. Il server IE ha restituito una risposta HTTP 500 all'accesso.

Extra

Campi
gspTopUpResponse TopUpRedirectResponse

OBBLIGATORIO: risposta di ricarica. Questo valore codificato non deve essere superiore a 1 kB.
redirectRequestId string

OBBLIGATORIO: il valore requestId inviato nella richiesta di pagamento di reindirizzamento originale o che ha avviato la richiesta. Google verificherà che questo corrisponda a quello dell'requestId inviato e il flusso di reindirizzamento completo avrà esito negativo se non corrisponde.

Altri requisiti per le attività

L'attività che supporta l'azione TOPUP_V1 sopra menzionata deve inoltre verificare che i chiamanti dell'API provengano solo da applicazioni firmate da Google. Ciò impedirà ad altre app di provare a richiamare la tua attività e recuperare i dati utente. A questo scopo, puoi utilizzare lo strumento StandardPaymentUtils.verifyCallingActivityIsGoogleSigned fornito subito dopo super.onCreate nell'implementazione di Activity.

Ecco un esempio:


@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);

  ....
}

Tutte le attività richiamate all'interno del flusso di ricarica devono fornire un tema di attività con windowIsTranslucent=true. Questa operazione deve essere eseguita con l'attributo AndroidManifest android:theme e non utilizzando Context.setTheme(). In modo programmatico, l'impostazione del tema non funziona correttamente per la traslucenza delle finestre. Google imporrà che la prima attività avviata segua questo pattern, ma anche le eventuali attività secondarie avviate dovranno seguire questo pattern. In caso contrario, gli acquisti da sviluppatori di terze parti potrebbero non funzionare.