Desembolsar fondos para acreditar cuentas de clientes

Desembolsar fondos para acreditar cuentas de clientes

Asegúrese de configurar su cuenta de la API de Amazon Incentives antes de iniciar la integración. Crear una cuenta de la API de Incentives.


El servicio web de Inicio de sesión y recepción proporciona una API para desembolsar fondos a un cliente de Amazon nuevo o existente. Un desembolso añade un valor monetario al saldo de Cheques regalo de la cuenta de un cliente de Amazon en tiempo real. Este servicio web basado en REST forma parte de la API de Incentives, que es un conjunto de servicios que admiten operaciones de Cheques regalo de Amazon.

Póngase en contacto con Inicio de sesión y recepción en los siguientes casos prácticos:

  • Si necesita desembolsar dinero de manera inmediata y garantizada a sus clientes a través de una aplicación web existente.
  • Tiene que asegurar que el valor monetario no sea transferible para cumplir con las obligaciones legales o comerciales.
  • Quiere enviar un correo electrónico a los clientes para notificar un caso de desembolso.

Esta página describe cómo llamar a la API de Inicio de sesión y recepción desde la aplicación, y documenta las tareas que puede realizar con ella.

Conceptos clave y flujo básico

La API de Inicio de sesión y recepción utiliza el servicio web Inicio de sesión con Amazon que permite a los usuarios autenticar su cuenta de Amazon utilizando sus credenciales de cuenta de Amazon dentro de su aplicación móvil o en el navegador. Una vez completada la autenticación, el servicio Inicio de sesión con Amazon proporciona a su aplicación un identificador de usuario que podrá utilizar como parámetro de entrada para la API de Inicio de sesión y recepción. Juntos, estos servicios ofrecen una experiencia perfecta a los usuarios finales.

Inicio de sesión con Amazon ofrece personalizaciones que se adaptan a su experiencia de usuario preferida, incluyendo SDK. Visite Inicio de sesión con Amazon en el Portal para desarrolladores para obtener más información.

A continuación se muestra una descripción del proceso de la aplicación para Inicio de sesión y recepción:

  1. Un usuario de la aplicación solicita abonar el saldo de Cheques regalo de su cuenta de Amazon.
  2. La aplicación muestra una página en el módulo Inicio de sesión con Amazon que solicita al usuario sus credenciales de Amazon.
  3. Los nuevos clientes de Amazon pueden registrar una nueva cuenta en el proceso de inicio de sesión con Amazon.
  4. Si su código solicita el nombre, la dirección de correo electrónico o el código postal del cliente de Amazon, el proceso de Inicio de sesión con Amazon solicitará el consentimiento del cliente para compartir esta información con el servicio.
  5. El módulo inicia una solicitud de autorización mediante la API de Inicio de sesión con Amazon.
  6. Un valor de id que identifica de forma exclusiva la cuenta de usuario se devuelve como objeto JSON en la respuesta.
  7. La aplicación llama al método LoadAmazonBalance con el valor de id en el cuerpo de la solicitud.
  8. La operación LoadAmazonBalance actualiza el saldo de Cheques regalo de la cuenta.
  9. Amazon envía una confirmación por correo electrónico a la dirección de correo electrónico asociada a la cuenta de cliente de Amazon cuando los fondos se han aplicado correctamente o se ha anulado el saldo de Cheques regalo de la cuenta del cliente. Este correo electrónico contendrá el texto especificado en el parámetro notificationMessage de la solicitud LoadAmazonBalance.

Notas:

  • El usuario puede cancelar el proceso de Inicio de sesión con Amazon en cualquier momento seleccionando Cancelar o cerrando la ventana emergente (si se utiliza este método de UX).
  • El almacenamiento de información de identificación personal, incluido el nombre, la dirección de correo electrónico y el código postal, requerirá disposiciones de seguridad adicionales para cumplir con el RGPD, la CCPA y otras leyes de privacidad.

Requisitos previos

Complete estos pasos de configuración para usar Inicio de sesión y recepción:

  • Siga las instrucciones de la guía de configuración de la integración de la API de Incentives para establecer una cuenta y aceptar un contrato con Amazon Incentives.
  • Integre su aplicación web o móvil en el servicio web Inicio de sesión con Amazon para proporcionar autenticación y acceso (opcional) a los datos del perfil de usuario. Para obtener más información sobre cómo integrar su aplicación con Inicio de sesión con Amazon, siga los pasos del Centro de desarrolladores de Inicio de sesión con Amazon. Nota: Para usar Inicio de sesión con Amazon en su aplicación móvil, debe usar el SDK de Inicio de sesión con Amazon. Aunque una interacción basada en navegador es técnicamente posible desde una aplicación móvil, lo prohibimos por razones de seguridad.
  • El Sandbox es un entorno de pruebas que utilizará al desarrollar y probar su aplicación. Póngase en contacto con su administrador de cuentas de Amazon para obtener las credenciales de acceso a Sandbox. Una vez que se le haya concedido el acceso a Sandbox, puede comenzar el desarrollo y las pruebas utilizando el valor de ID de socio que le hayan proporcionado. Las direcciones URL de punto de enlace para acceder a Sandbox se proporcionan en la sección Regiones y puntos de enlace. Con el acceso a Sandbox, puede desarrollar y probar su código siguiendo las instrucciones de la guía de configuración de la API de Integración de Amazon Incentives.

API de Inicio de sesión y recepción

Su aplicación interactúa con Inicio de sesión y recepción realizando solicitudes sincrónicas al servicio web. En esta sección se describe la estructura de una solicitud y las operaciones disponibles. Invocar una operación consiste en enviar una solicitud HTTP a un punto de enlace de la API de Incentives y esperar la respuesta. Una solicitud HTTP REST contiene un método de solicitud, URI, encabezados y un cuerpo presentado en XML o JSON. La respuesta contiene un código de estado HTTP, encabezados de respuesta y un cuerpo de respuesta. Cada llamada a la API deberá firmarse utilizando sus credenciales de seguridad y el proceso de firma de AWS Signature Version 4.

A continuación se muestra una descripción de cada operación de API, encabezados de solicitud y parámetros asociados.

Operaciones

Se admiten las siguientes operaciones:

LoadAmazonBalance

La operación LoadAmazonBalance aplica fondos al saldo de Cheques regalo de un cliente de Amazon. A continuación se muestra una descripción de los parámetros del cuerpo de la solicitud.

Parámetro de solicitud Descripción
loadBalanceRequestId Identificador único para representar la solicitud con el prefijo de un identificador de partnerId que distingue entre mayúsculas y minúsculas (máximo 40 caracteres). Alfanumérico, no debe contener caracteres
partnerId Un identificador único que distingue entre mayúsculas y minúsculas para representar su cuenta
amount El valor de los fondos que se añadirán al saldo del Cheque regalo de Amazon
currencyCode El código de moneda ISO-4217
value El valor monetario que debe desembolsarse se especifica como un número entero, por ejemplo, 100,23 = 10023. En una región donde la moneda no admite decimales, no hace falta rellenarlo. Por ejemplo: En Japón, 231 yenes = 231 no 23100
account La información que identifica a un cliente activo de Amazon proporcionada por la API de Inicio de sesión con Amazon. Para solicitudes de Sandbox, use amzn1.account.AFEM4VZRQQMBAAMVQEP3BPBH7OYQ
id Un valor único de identificación de cuenta de cliente que identifica la cuenta de Amazon del usuario como respuesta HTTP JSON desde la API de Inicio de sesión con Amazon
type Especifica el tipo de identificador. Valor de tipo válido = 2 (ID de cliente)
transactionSource Datos para identificar el origen de la transacción
sourceId Opcional. Identificador de la transacción. Estos metadatos se mostrarán en el libro mayor de saldo de los clientes de Amazon. Por ejemplo: Cheque regalo de <Número de serie: xxx> (Máximo 40 caracteres Unicode)
externalReference Un campo de texto que puede utilizar para describir la solicitud cuando se ve en el portal de la API de Incentives. (Máximo 100 caracteres Unicode)
notificationDetails Opcional. Una descripción del motivo del desembolso de los fondos.
notificationMessage Opcional. Una cadena que aparecerá en el correo electrónico de confirmación (máximo 250 caracteres Unicode).

Solicitud de muestra

POST 
/LoadAmazonBalance HTTP/1.1

accept:application/json
host:agcod-v2-gamma.amazon.com
x-amz-date:20170111T000339Z
x-amz-target:com.amazonaws.agcod.AGCODService.LoadAmazonBalance
Authorization:AWS4-HMAC-SHA256 Credential=AKIAIGHKAVYIDBOH3O3A/20170111/us-east-1/AGCODService/aws4_request,SignedHeaders=accept;host;x-amz-date;x-amz-target, Signature=ec86661c1d39f74b5891666505bb7656b172b0d060d911bee3b6a1c29ae17657
{   "loadBalanceRequestId":"Amazon123456",
    "partnerId":"Amazon",
    "amount":{
        "currencyCode":"USD",
        "value": 1000
    },
    "account":{
        "id":"amz1.account.123512341234",
        "type":"2"
    },
    "transactionSource":{
        "sourceId":"Customer Service"
    },
    "externalReference":"serviceId:123",
    "notificationDetails":{
        "notificationMessage":"Thank you for your purchase!"
    }
}

Respuesta de muestra

{
    "status": "Success",
    "amount": {
        "currencyCode": "USD",
        "value": 9000
    },
    "account": {
        "id": "amz1.account.123512341234",
        "type": "2"
    },
    "loadBalanceRequestId": "Amazon123456"
}

VoidAmazonBalanceLoad

Esta operación anula una solicitud LoadAmazonBalance que ya se ha realizado correctamente si el cliente receptor de Amazon aún no ha utilizado los fondos del código promocional emitido. Esta operación se puede ejecutar hasta 15 minutos desde la llamada original a LoadAmazonBalance. Después de eso, una llamada a VoidAmazonBalanceLoad no hará nada.

Su aplicación debe llamar a esta operación cuando no pueda confirmar que una solicitud anterior de AmazonBalanceLoad se haya realizado correctamente. Por ejemplo, si su llamada a LoadAmazonBalance no devuelve ningún resultado, llame a VoidAmazonBalanceLoad para asegurar que no se añaden fondos al saldo de Cheques regalo del cliente de Amazon.

A continuación se muestra una descripción de los parámetros del cuerpo de la solicitud.

Nota: Todos los siguientes parámetros deben coincidir con los utilizados en una solicitud anterior de LoadAmazonBalance.

Parámetro Descripción
loadBalanceRequestId El identificador único utilizado en una solicitud LoadAmazonBalance realizada con éxito
partnerId Un identificador único que distingue entre mayúsculas y minúsculas para representar su cuenta
amount El importe proporcionado en una solicitud de LoadAmazonBalance
currencyCode El código de moneda utilizado ISO-4217
value El valor monetario de la transacción original que se eliminará del saldo del Cheque regalo del cliente de Amazon especificado como un número entero, por ejemplo, 100,23 = 10023. En una región donde la moneda no admite decimales, no hace falta rellenarlo. Por ejemplo, en Japón, 231 yenes son 231 no 23100.
account El número de cuenta del cliente al que se aplicará la operación de anulación (de una operación de carga anterior). Para solicitudes de Sandbox, use amzn1.account.AFEM4VZRQQMBAAMVQEP3BPBH7OYQ
id El valor de identificación único para una cuenta de cliente de Amazon. Originalmente devuelto como una respuesta HTTP JSON desde la API de Inicio de sesión con Amazon.
type Especifica el tipo de identificador. Debe establecerse en 2 (ID de cliente)

Solicitud de muestra

POST 
/VoidAmazonBalanceLoad HTTP/1.1

accept:application/json
host:agcod-v2-gamma.amazon.com
x-amz-date:20170111T000339Z
x-amz-target:com.amazonaws.agcod.AGCODService.VoidAmazonBalanceLoad
Authorization:AWS4-HMAC-SHA256 Credential=AKIAIGHKAVYIDBOH3O3A/20170111/us-east-1/AGCODService/aws4_request,SignedHeaders=accept;host;x-amz-date;x-amz-target, Signature=ec86661c1d39f74b5891666505bb7656b172b0d060d911bee3b6a1c29ae17657
{
    "loadBalanceRequestId": "Amazon123456",
    "partnerId": "Amazon",
    "amount": {
        "currencyCode": "USD",
        "value": 1000
    },
    "account": {
        "id": "amz1.account.123512341234",
        "type": "2"
    }
}

Respuesta de muestra

{
    "status":"Success",
    "amount":{
        "currencyCode":"USD",
        "value":1000
    },
    "account":{
        "id":"amz1.account.123512341234",
        "type":"2"
    },
    "loadBalanceRequestId":"Amazon123456"
}

GetAvailableFunds

Consulte GetAvailableFunds.

Solicitudes de prueba

Para probar su integración, puede simular una respuesta desde la API creando una solicitud simulada. La respuesta de la solicitud simulada está controlada por el parámetro ID. Por ejemplo, pasar en ID F0000 simulará una respuesta positiva mientras que pasar en ID F1000 simulará un error general. Consulte los Códigos de error para obtener una lista completa de las respuestas disponibles. Los siguientes son los parámetros necesarios (mínimos) para invocar una solicitud simulada:

{
  "loadBalanceRequestId": "Amazon123456",
  "account": {
    "id": "F2044",
    "type": "0"
  }
}

Nota: Cualquier valor que se pase a otros campos se repetirá en la respuesta y no es obligatorio.

Muestra de solicitud simulada

POST /LoadAmazonBalance HTTP/1.1
accept:application/json
host:agcod-v2-gamma.amazon.com
x-amz-date:20170111T000339Z
x-amz-target:com.amazonaws.agcod.AGCODService.LoadAmazonBalance
Authorization:AWS4-HMAC-SHA256 Credential=AKIAIGHKAVYIDBOH3O3A/20170111/us-east-1/AGCODService/aws4_request,SignedHeaders=accept;host;x-amz-date;x-amz-target, Signature=ec86661c1d39f74b5891666505bb7656b172b0d060d911bee3b6a1c29ae17657
{   "loadBalanceRequestId":"Amazon123456",
    "partnerId":"",
    "amount":{
        "currencyCode":"",
        "value":""
    },
    "account":{
        "id":"F2044",
        "type":"0"
    },
    "transactionSource":{
        "sourceId":""
    },
    "externalReference":"",
    "notificationDetails":{
        "notificationMessage":""
    }
}

Muestra de respuesta simulada

{
    "errorCode": "F2044",
    "errorMessage": "Source Id is too long. Received 41 characters. Maximum   
number of characters is 40",
    "errorType": "SourceIdTooLong",
    "status": "FAILURE"
}

Script de prueba de Inicio de sesión y recepción

Puede verificar algunos componentes de la integración usando el entorno Sandbox. Sin embargo, las pruebas completas de la experiencia de usuario de las aplicaciones solo se pueden realizar utilizando la cuenta de API de producción.

Sandbox: Simular una respuesta desde la API LoadAmazonBalance creando una solicitud "simulada".

Producción:

  • Utilice el componente Inicio de sesión con Amazon para recibir un valor de customer.id válido para una cuenta de cliente de Amazon.
  • Llame a los puntos de enlace LoadAmazonBalance y VoidAmazonBalanceLoad.
  • Pruebas completas de su aplicación y experiencia de usuario.
Prueba Acción Resultado esperado
1. Crear cuentas de prueba de amazon.com (o locales) Cree un conjunto de cuentas de Amazon en la región para probar la llamada de la API de Balance de carga. Se crean cuentas.
2. Validar Inicio de sesión con el módulo Amazon 1. Validar un inicio de sesión positivo
2. Token de autorización válido
3. Se devuelve validar user.id
Para cada cuenta,
1. El inicio de sesión se ha realizado correctamente
2. Se proporciona un token de autorización
3. Se proporciona un valor de user.id único
3. Validar/LoadAmazonBalance Utilice el proceso de UX de la aplicación para invocar este método para una cuenta de prueba creada en el paso (1) por un valor monetario, por ejemplo, 0,10 $
2. Inicie sesión en la cuenta de Amazon y seleccione Ver saldo de Cheques regalo
4. El mensaje para validar la notificación se muestra en el correo electrónico de confirmación y coincide con el parámetro notificationMessage insertado en la solicitud de la API.
5. Se ha enviado el correo electrónico de confirmación a la dirección de correo electrónico registrada con la cuenta de amazon.com
1. estado = positivo se devuelve para cada llamada a Carga
2. El saldo del Cheque regalo de la cuenta coincide con el importe cargado
3. El mensaje de notificación coincide con el mensaje proporcionado
4. Mensaje de correo electrónico recibido
5. Valor especificado en amount.value adeudado de la cuenta en el portal de la API de Incentives
4. Validar/Idempotencia de LoadAmazonBalance 1. Invocar el método varias veces con el mismo loadBalanceRequestId y user.id
2. Iniciar sesión en la cuenta de Amazon
3. Ver saldo de Cheques regalo
1. estado = positivo se devuelve para cada llamada
2. Se ha aplicadoamount.value de la primera llamada, pero se han ignorado las llamadas posteriores al método LoadAmazonBalance
5. Validar/VoidAmazonBalanceLoad 1. Use loadBalanceRequestId creado anteriormente para anular una transacción
2. Inicie sesión en la cuenta de amazon.com para el user.id correspondiente
3. El saldo se ha anulado
4. Se ha enviado el correo electrónico de confirmación a la dirección de correo electrónico registrada con la cuenta de amazon.com
5. Inicie sesión en el portal de la API de Incentives y vea la transacción
1. estado = spositivo se devuelve para cada llamada a Nulo
2. El saldo del Cheque regalo de la cuenta coincide con el importe cargado
3. El mensaje de notificación coincide con el mensaje proporcionado
4. Mensaje de correo electrónico recibido
5. Fondos especificados en amount.value reembolsados a la cuenta del portal de la API de Incentives

Rendimiento

La API está diseñada para procesar transacciones a una velocidad máxima de 10 transacciones por segundo (TPS).

Nota: El entorno de Sandbox no se rige por un SLA y las tasas de transacción pueden parecer erráticas.

Códigos de error

Utilizamos una convención de códigos para indicar errores. Por ejemplo, cuando la causa está del lado del cliente, la API responde con un error F2xx y F1XX si el problema se debe a un problema del sistema de Amazon. En general, los códigos de error se traducen como se muestra en la tabla siguiente.

Código de error Descripción
F100 Error interno de Amazon
F200 Error de solicitud no válida (algo ha salido mal durante la carga de la solicitud)
F300 Error relacionado con la cuenta (normalmente debido a problemas relacionados con la suscripción, la autenticación, el acceso, etc.)
F400 Error que permite intentarlo de nuevo (problema temporal) Consulte Gestión de errores.
F500 Error desconocido
Tipo de error
Código de error/Código de simulación
Descripción
GeneralError
F100 / F1000
Error interno de Amazon
BalanceLoadCannotBeVoided
F100 / F1001
No se puede anular la carga del saldo debido a un error interno de Amazon.
InvalidRequestInput
F200 / F2000
El cuerpo de la solicitud es nulo.
InvalidPartnerIdInput
F200 / F2002
partnerID no puede ser nulo.
InvalidAmountInput
F200 / F2003
El importe no puede ser nulo.
InvalidAmountValue
F200 / F2004
El importe debe ser mayor que cero.
InvalidCurrencyCodeInput
F200 / F2005
El código de moneda no puede ser nulo.
InvalidRequestIdInput
F200 / F2006
loadbalancerequestid no puede ser nulo.
MaxAmountExceeded
F200 / F2015
El importe es superior al valor máximo permitido en el segmento de mercado nacional (por ejemplo, 500 dólares en EE. UU.).
FractionalAmountNotAllowed
F200 / F2017
No se permite fraccionar el importe con la moneda (por ejemplo, JP).
RequestIdTooLong
F200 / F2021
loadBalancerequestid tiene más de 40 caracteres.
RequestIdMustStartWithPartnerName
F200 / F2022
loadBalanceRequestId debe empezar por partnerId.
InvalidAccountType
F200 / F2033
El tipo de cuenta proporcionado en la solicitud no está definido.
UndefinedAccountId
F200 / F2034
El AccountId proporcionado en la solicitud no existe en el sistema de Amazon.
AccountIdNotInValidStatus
F200 / F2035
El estado de AccountId no es válido para la operación solicitada (por ejemplo, AccountID está desactivado).
InvalidCurrencyInMarketplace
F200 / F2036
El código de moneda no se admite en el segmento de mercado nacional donde se creó el identificador de cuenta.
AmountBelowMinThreshold
F200 / F2037
El importe es inferior al mínimo requerido.
LoadBalanceRequestIdAlreadyUsed
F200 / F2038
loadBalanceRequestId proporcionado en la API de carga ya se ha utilizado (por ejemplo, cuando falla la comprobación de idempotencia de loadBalanceRequestId).
LoadBalanceRequestIdDoesNotExist
F200 / F2039
La solicitud de carga con loadBalanceRequestId proporcionada en la API nula no existe.
RequestMismatchFromLoadRequest
F200 / F2040
Los parámetros pasados en una solicitud nula no coinciden con los parámetros de una solicitud de carga.
BalanceLoadCannotBeVoided
F200 / F2041
Cuando se ha utilizado el saldo cargado y el indicador voidIfUsed está establecido como falso.
ExternalReferenceTooLong
F200 / F2042
El valor utilizado sobrepasa el número máximo de caracteres Unicode.
NotificationMessageTooLong
F200 / F2043
El valor utilizado en el parámetro sourceID tiene más de 250 caracteres Unicode.
SourceIdTooLong
F200 / F2044
El valor utilizado en el campo sourceID tiene más de 40 caracteres Unicode.
BalanceLoadCannotBeVoided
F200 / F2045
No se puede anular el saldo, la solicitud llegó después de que se acabara el tiempo.
InvalidPartnerId
F300 / F3000
El identificador de socio utilizado en la solicitud de API no existe en el sistema de Amazon.
InvalidAccessKey
F300 / F3001
La clave de acceso de seguridad utilizada para firmar la solicitud no existe en el sistema de Amazon (no aplicable en China).
InvalidAccessKey
F300 / F3001
La clave de acceso (en China) utilizada para firmar la solicitud de API no existe en el sistema de Amazon.
AccessDenied
F300 / F3002
La cuenta está bloqueada.
InsufficientFunds
F300 / F3003
La cuenta no tiene fondos suficientes para emitir el importe de la solicitud (cada socio recibe un determinado límite de crédito y solo puede emitir saldo hasta ese límite, el cual se restablece cuando el socio realiza un pago).
IssuanceCapExceeded
F300 / F3004
Se ha alcanzado el límite de emisión de saldo definido por el contrato para el período de tiempo especificado.
OperationNotPermitted
F300 / F3006
Se ha denegado la solicitud. El socio no tiene permiso para llamar a la API (sucede cuando alguien que no es socio de distribución de carga de saldo de Amazon intenta llamar a una API de Carga de saldo de Amazon antes de la incorporación)
ActiveContractNotFound
F300 / F3009
No se ha completado la configuración de la cuenta de socio.
CustomerSurpassedDailyVelocityLimit
F300 / F3010
El cliente ha superado el límite de velocidad diario.
CustomerAccountBlocked
F300 / F3011
Esta cuenta de Amazon no puede realizar esta transacción.
SystemTemporarilyUnavailable
F400 / F4000
El sistema de Amazon está temporalmente fuera de servicio. Consulte Gestión de errores.
GeneralError
F500 / F5000
Error desconocido