API de recarga de APK do Android

A recarga pode ocorrer em três ambientes diferentes:

  • App Android do integrador de pagamentos
  • Site para dispositivos móveis do integrador de pagamentos
  • Site para computadores do integrador de pagamentos

Independentemente do fluxo, o Google transfere a interação do usuário para a equipe de integrador. O integrador de pagamentos implementa uma interface que parece familiar para o usuário, mas o fluxo deve ser dedicado especificamente para completar o saldo do usuário, ou seja, o usuário deve ser direcionado por um processo de recarga em vez de serem colocados em uma interface de uso geral, navegar mais para um fluxo de recarga.

Todos os fluxos fazem com que o integrador produza uma TopUpRedirectResponse. Esta resposta é assinada e enviada ao Google.

Os sites para dispositivos móveis e desktop precisam seguir as Especificação da API Web Top Up, enquanto o fluxo do app Android precisa seguir a especificação da API Android Top Up.

Os integradores precisam implementar uma solução de APK do Android para autenticar o usuário e, em seguida, guie o cliente por um fluxo em que é possível recarregar o saldo. Isso a recarga é uma modalidade diferente, mas tem a mesma finalidade da recarga fornecida pelo as Recarga pela Web.

Um usuário entra no fluxo no app do integrador de pagamentos por meio de um Atividade no Android. A intent de recarga pode ser invocada diretamente de um app do Google Play em que o usuário que pretende fazer uma compra. Para impedir que o Android encerre o Google Play na segundo plano durante a recarga, o integrador precisa incluir o seguinte na o tema da atividade.

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

Definição de método

A intent precisa ter estas propriedades:

Propriedades do método
Ação com.google.android.payments.standard.TOPUP_V1
Categoria android.intent.category.DEFAULT

Solicitação

Campos
gspTopUpRequest TopUpRedirectRequest

Solicitação de recarga.

gspAssociationId string

Contém um identificador que o integrador usa para procurar credenciais da conta que o usuário está completando. Este é o ID da associação que é enviado durante a vinculação da conta no AssociateAccountRequest.

Resposta

Depois que o usuário conclui o fluxo de recarga, seu aplicativo precisa enviar uma de resultado da pesquisa de volta para o Google. Se a recarga for bem-sucedida, crie uma intent e adiciona o criptografado gspTopUpResponse e redirecionadoRequestId como extras. Em seguida, defina a atividade resultado para o código de resultado adequado.

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

Resultado

Campos
resultado int

Activity.RESULT_OK
A recarga foi concluída.
Activity.RESULT_CANCELED O usuário cancelou o fluxo manualmente e ele deve ser abortado.
Activity.RESULT_FIRST_USER A recarga falhou por um motivo fatal, e o fluxo deve ser cancelada. O servidor IE retornou uma resposta HTTP 500 ao fazer login.

Extras

Campos
gspTopUpResponse TopUpRedirectResponse

OBRIGATÓRIO: resposta de recarga. Esse valor codificado não pode exceder 1 KB.
redirectRequestId string

OBRIGATÓRIO: o requestId enviado na solicitação de pagamento de redirecionamento original/de início. O Google vai verificar se isso corresponde ao requestId enviado, e o fluxo de redirecionamento completo vai falhar se não corresponder.

Outros requisitos de atividade

A atividade compatível com a ação TOPUP_V1 mencionada acima precisa verifique também se os autores das chamadas da API vêm apenas de aplicativos assinados pelo Google. Isso vai ajudar a evitar que outros apps tentem invocar sua atividade e recuperar dados do usuário. Isso pode ser feito usando o StandardPaymentUtils.verifyCallingActivityIsGoogleSigned logo depois super.onCreate na sua Atividade implementação.

Veja uma amostra:


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

  ....
}

Todas as atividades invocadas no fluxo de recarga precisam fornecer uma atividade tema que tem windowIsTranslucent=true. Isso deve ser feito com o O atributo android:theme do AndroidManifest e não usa Context.setTheme(). De maneira programática, a definição do tema não funciona corretamente para a janela. translucência. O Google vai exigir que a primeira atividade iniciada siga essa mas quaisquer subatividades que também forem iniciadas devem seguir este padrão Caso contrário, as compras de desenvolvedores terceirizados podem não funcionar.