Desembolsar fondos para acreditar cuentas de clientes

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

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:

  1. Un usuario de la aplicación solicita abonar el saldo de Cheques regalo de su cuenta de HAQM.
  2. 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.
  3. Los nuevos clientes de HAQM pueden registrar una nueva cuenta en el proceso de inicio de sesión con HAQM.
  4. 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.
  5. El módulo inicia una solicitud de autorización mediante la API de Inicio de sesión con HAQM.
  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 LoadHAQMBalance con el valor de id en el cuerpo de la solicitud.
  8. La operación LoadHAQMBalance actualiza el saldo de Cheques regalo de la cuenta.
  9. 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 <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 
/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 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 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 llamada
2. Se ha aplicadoamount.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ón
2. 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 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 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