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
- Requisitos previos
- API de Inicio de sesión y recepción
- Solicitudes de prueba
- Script de prueba de Inicio de sesión y recepción
- Rendimiento
- Códigos de error
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:
- Un usuario de la aplicación solicita abonar el saldo de Cheques regalo de su cuenta de Amazon.
- 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.
- Los nuevos clientes de Amazon pueden registrar una nueva cuenta en el proceso de inicio de sesión con Amazon.
- 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.
- El módulo inicia una solicitud de autorización mediante la API de Inicio de sesión con Amazon.
- Un valor de id que identifica de forma exclusiva la cuenta de usuario se devuelve como objeto JSON en la respuesta.
- La aplicación llama al método LoadAmazonBalance con el valor de id en el cuerpo de la solicitud.
- La operación LoadAmazonBalance actualiza el saldo de Cheques regalo de la cuenta.
- 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 |
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 Carga2. 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 llamada2. Se ha aplicado amount.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ón2. 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 Nulo2. 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 |