Desembolsar fondos para acreditar cuentas de clientes
Asegúrese de configurar su cuenta de la API de HAQM 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 HAQM nuevo o existente. Un desembolso añade un valor monetario al saldo de Cheques regalo de la cuenta de un cliente de HAQM 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 HAQM.
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 HAQM que permite a los usuarios autenticar su cuenta de HAQM utilizando sus credenciales de cuenta de HAQM dentro de su aplicación móvil o en el navegador. Una vez completada la autenticación, el servicio Inicio de sesión con HAQM 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 HAQM ofrece personalizaciones que se adaptan a su experiencia de usuario preferida, incluyendo SDK. Visite Inicio de sesión con HAQM 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 HAQM.
- La aplicación muestra una página en el módulo Inicio de sesión con HAQM que solicita al usuario sus credenciales de HAQM.
- Los nuevos clientes de HAQM pueden registrar una nueva cuenta en el proceso de inicio de sesión con HAQM.
- Si su código solicita el nombre, la dirección de correo electrónico o el código postal del cliente de HAQM, el proceso de Inicio de sesión con HAQM 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 HAQM.
- 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 LoadHAQMBalance con el valor de id en el cuerpo de la solicitud.
- La operación LoadHAQMBalance actualiza el saldo de Cheques regalo de la cuenta.
- HAQM envía una confirmación por correo electrónico a la dirección de correo electrónico asociada a la cuenta de cliente de HAQM 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 LoadHAQMBalance.
Notas:
- El usuario puede cancelar el proceso de Inicio de sesión con HAQM 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 HAQM Incentives.
- Integre su aplicación web o móvil en el servicio web Inicio de sesión con HAQM 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 HAQM, siga los pasos del Centro de desarrolladores de Inicio de sesión con HAQM. Nota: Para usar Inicio de sesión con HAQM en su aplicación móvil, debe usar el SDK de Inicio de sesión con HAQM. 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 HAQM 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 HAQM 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:
LoadHAQMBalance
La operación LoadHAQMBalance aplica fondos al saldo de Cheques regalo de un cliente de HAQM. 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 HAQM |
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 HAQM proporcionada por la API de Inicio de sesión con HAQM. Para solicitudes de Sandbox, use amzn1.account.AFEM4VZRQQMBAAMVQEP3BPBH7OYQ |
id |
Un valor único de identificación de cuenta de cliente que identifica la cuenta de HAQM del usuario como respuesta HTTP JSON desde la API de Inicio de sesión con HAQM |
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 HAQM. 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
/LoadHAQMBalance HTTP/1.1
accept:application/json
host:agcod-v2-gamma.haqm.com
x-amz-date:20170111T000339Z
x-amz-target:com.amazonaws.agcod.AGCODService.LoadHAQMBalance
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":"HAQM123456",
"partnerId":"HAQM",
"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": "HAQM123456"
}
VoidHAQMBalanceLoad
Esta operación anula una solicitud LoadHAQMBalance que ya se ha realizado correctamente si el cliente receptor de HAQM 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 LoadHAQMBalance. Después de eso, una llamada a VoidHAQMBalanceLoad no hará nada.
Su aplicación debe llamar a esta operación cuando no pueda confirmar que una solicitud anterior de HAQMBalanceLoad se haya realizado correctamente. Por ejemplo, si su llamada a LoadHAQMBalance no devuelve ningún resultado, llame a VoidHAQMBalanceLoad para asegurar que no se añaden fondos al saldo de Cheques regalo del cliente de HAQM.
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 LoadHAQMBalance.
Parámetro | Descripción |
---|---|
loadBalanceRequestId |
El identificador único utilizado en una solicitud LoadHAQMBalance 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 LoadHAQMBalance |
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 HAQM 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 HAQM. Originalmente devuelto como una respuesta HTTP JSON desde la API de Inicio de sesión con HAQM. |
type |
Especifica el tipo de identificador. Debe establecerse en 2 (ID de cliente) |
Solicitud de muestra
POST
/VoidHAQMBalanceLoad HTTP/1.1
accept:application/json
host:agcod-v2-gamma.haqm.com
x-amz-date:20170111T000339Z
x-amz-target:com.amazonaws.agcod.AGCODService.VoidHAQMBalanceLoad
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": "HAQM123456",
"partnerId": "HAQM",
"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":"HAQM123456"
}
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": "HAQM123456",
"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 /LoadHAQMBalance HTTP/1.1
accept:application/json
host:agcod-v2-gamma.haqm.com
x-amz-date:20170111T000339Z
x-amz-target:com.amazonaws.agcod.AGCODService.LoadHAQMBalance
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":"HAQM123456",
"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 LoadHAQMBalance creando una solicitud "simulada".
Producción:
- Utilice el componente Inicio de sesión con HAQM para recibir un valor de customer.id válido para una cuenta de cliente de HAQM.
- Llame a los puntos de enlace LoadHAQMBalance y VoidHAQMBalanceLoad.
- Pruebas completas de su aplicación y experiencia de usuario.
Prueba | Acción | Resultado esperado |
---|---|---|
1. Crear cuentas de prueba de haqm.com (o locales) | Cree un conjunto de cuentas de HAQM 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 HAQM | 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/LoadHAQMBalance | 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 HAQM 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 haqm.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 LoadHAQMBalance | 1. Invocar el método varias veces con el mismo loadBalanceRequestId y user.id 2. Iniciar sesión en la cuenta de HAQM 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 LoadHAQMBalance |
5. Validar/VoidHAQMBalanceLoad | 1. Use loadBalanceRequestId creado anteriormente para anular una transacción2. Inicie sesión en la cuenta de haqm.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 haqm.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 HAQM. 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 HAQM |
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 HAQM |
BalanceLoadCannotBeVoided F100 / F1001 |
No se puede anular la carga del saldo debido a un error interno de HAQM. |
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 HAQM. |
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 HAQM. |
InvalidAccessKey F300 / F3001 |
La clave de acceso de seguridad utilizada para firmar la solicitud no existe en el sistema de HAQM (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 HAQM. |
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 HAQM intenta llamar a una API de Carga de saldo de HAQM 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 HAQM no puede realizar esta transacción. |
SystemTemporarilyUnavailable F400 / F4000 |
El sistema de HAQM está temporalmente fuera de servicio. Consulte Gestión de errores. |
GeneralError F500 / F5000 |
Error desconocido |