API de recarga de APK de Android

La recarga puede realizarse en tres entornos diferentes:

  • App para Android del integrador de pagos
  • Sitio web móvil del integrador de pagos
  • Sitio web para computadoras del integrador de pagos

Independientemente del flujo, Google transfiere la interacción del usuario al equipo de Pago. software del integrador. El integrador de pagos implementa una IU similar. al usuario, pero el flujo debe estar dedicado específicamente a completar saldo del usuario, lo que significa que se debe dirigir al usuario a través de un proceso de recarga en lugar de hacerlo en una IU de uso general en la que se espera que navegar hacia un flujo de recarga.

Todos los flujos hacen que el integrador produzca TopUpRedirectResponse. Esta respuesta se firmó y se envió a Google.

Los sitios web móviles y para computadoras de escritorio deben seguir las Especificación de la API para agregar dinero en la Web, mientras que el flujo de la app para Android debe seguir la especificación de la API de recarga de Android.

Los integradores deben implementar una solución de APK de Android para autenticar al usuario y luego dirigirlos a través de un flujo en el que puedan recargar su saldo. Esta "recargar" es una modalidad diferente, pero tiene el mismo propósito que "recargar" que proporciona el Recarga de la Web:

Un usuario ingresa al flujo en la app de integración de pagos a través de un Actividad de Android. El intent de recarga se puede invocar directamente desde una app de Play en la que el usuario tiene la intención de realizar una compra. Para evitar que Android cierre Play en el en segundo plano durante la recarga, el integrador debe incluir lo siguiente en el tema de la actividad.

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

Definición del método

El intent debe tener las siguientes propiedades:

Propiedades del método
Acción com.google.android.payments.standard.TOPUP_V1
Categoría android.intent.category.DEFAULT

Solicitud

Campos
gspTopUpRequest TopUpRedirectRequest

Solicitud de recarga.

gspAssociationId string

Contiene un identificador que el integrador usa para buscar credenciales para la cuenta que el usuario está recargando. Este es el ID de la asociación que se envía durante la vinculación de cuentas en AssociateAccountRequest.

Respuesta

Una vez que el usuario completa el flujo de recarga, tu aplicación debe enviar un la intención del resultado a Google. Si la recarga es exitosa, crea un intent y Agrega los gspTopUpResponse y los redirectRequestId codificados encriptados como extras. Luego, configura la actividad resultado al código de resultado adecuado.

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

Resultado

Campos
resultado int

Activity.RESULT_OK
La recarga se realizó correctamente.
Activity.RESULT_CANCELED El usuario canceló el flujo de forma manual y este se debe anular.
Activity.RESULT_FIRST_USER Se produjo un error en la recarga por un motivo irrecuperable y el flujo debería se abortó. El servidor de IE mostró una respuesta HTTP 500 al acceder.

Adicionales

Campos
gspTopUpResponse TopUpRedirectResponse

OBLIGATORIO: Respuesta de recarga. Este valor codificado no debe exceder 1 KB.
redirectRequestId string

OBLIGATORIO: El requestId que se envió en la solicitud de pago por redireccionamiento original o que iniciaba el proceso. Google verificará que coincida con la requestId enviada y el flujo de redireccionamiento completo fallará si no coincide.

Otros requisitos de actividad

La actividad que admite la acción TOPUP_V1 mencionada anteriormente debe También verifica que los emisores de la API provengan solo de aplicaciones firmadas por Google. Esto ayudará a evitar que otras apps intenten invocar tu actividad y recuperar datos del usuario. Esto se puede hacer usando los recursos StandardPaymentUtils.verifyCallingActivityIsGoogleSigned inmediatamente después super.onCreate en tu Actividad para implementarlos.

A continuación, le presentamos una muestra:


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

  ....
}

Todas las actividades invocadas dentro del flujo de recarga deben proporcionar una actividad tema que tiene windowIsTranslucent=true. Esto debe hacerse con el El atributo android:theme de AndroidManifest y no usa Context.setTheme(). De manera programática, la configuración del tema no funciona correctamente para la ventana la translucidez. Google exigirá que la primera actividad iniciada sea posterior a esta pero las subactividades que se inicien también deberán seguir este . De lo contrario, es posible que las compras de desarrolladores externos no funcionen.