Integración
Integrar con la Anchor Platform para facilitar pagos transnacionales implica implementar lo siguiente, como mínimo:
GET /customer
&PUT /customer
puntos finales de la API KYC para solicitar y recopilar datos KYC de los clientesGET /rate
punto final de la API RFQ para proporcionar tasas de cambio entre los activos on-chain y off-chain admitidosGET /transactions
solicitudes para obtener actualizaciones sobre el estado de las transacciones de la Anchor Platform (documentación próximamente)JSON-RPC
solicitudes para actualizar el estado de las transacciones de la Anchor Platform
Lo siguiente también puede ser necesario dependiendo de tu caso de uso:
GET /fee
si tu negocio quiere ofrecer a los remitentes la opción de omitir el paso de creación de cotizaciónGET /unique_address
si tu negocio utiliza un servicio de custodia para activos on-chainDELETE /customer
si tu negocio quiere o está obligado a permitir que los remitentes soliciten la eliminación de los datos del cliente
Crear un servidor de negocios
Primero, vamos a crear un servidor de negocios y agregarlo a nuestro archivo docker compose.
- YAML
version: "3.8"
services:
sep-server:
image: stellar/anchor-platform:2.9.0
command: --sep-server
env_file:
- ./dev.env
volumes:
- ./config:/home
ports:
- "8080:8080"
depends_on:
- db
platform-server:
image: stellar/anchor-platform:2.9.0
command: --platform-server
env_file:
- ./dev.env
volumes:
- ./config:/home
ports:
- "8085:8085"
depends_on:
- db
server:
build: .
ports:
- "8081:8081"
env_file:
- ./dev.env
db:
image: postgres:14
ports:
- "5432:5432"
env_file:
- ./dev.env
A continuación, crea un servidor web simple usando tu lenguaje de programación preferido y un Dockerfile
que inicie el servidor. docker compose up
debería iniciar exitosamente los tres servicios.
Esta guía no proporciona una implementación de ejemplo de los puntos finales, pero puedes encontrar más información sobre los esquemas de solicitud y respuesta en la Referencia de la API de Anchor Platform, y las secciones a continuación expandirán sobre conceptos importantes a entender al implementar los puntos finales.
Puntos finales de callback del cliente
La Anchor Platform nunca almacena la PII de tus clientes, y en su lugar actúa como un servidor proxy entre las aplicaciones clientes y tu negocio, reenvíando solicitudes y respuestas a la otra parte. Actualmente, las solicitudes y respuestas son casi idénticas a las definidas en la especificación de la API KYC SEP-12.
Identificar clientes
Los clientes pueden ser identificados usando dos enfoques.
El primer enfoque utiliza una cuenta Stellar y un memo. Al usar la Anchor Platform para facilitar pagos transnacionales, la organización remitente usa su propia cuenta Stellar, la que se utiliza para autenticar a través de SEP-10 Stellar Authentication, al registrar a los clientes con tu negocio. Los memos se utilizan para distinguir a clientes únicos que provienen de la misma organización remitente.
El segundo enfoque utiliza los ID de los clientes generados por tu servicio. Por ejemplo, si una organización remitente está registrando un cliente, tu negocio recibirá una solicitud PUT /customer
como la siguiente:
- JSON
{
"account": "GDJUOFZGW5WYBK4GIETCSSM6MTTIJ4SUMCQITPTLUWMQ6B4UIX2IEX47",
"memo": "780284017",
"type": "sep31-sender",
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]"
}
En este ejemplo, la clave pública GDJ...X47
identifica la organización remitente, y el memo 780284017
identifica al cliente. Los memos son generalmente enteros de 64 bits, pero también pueden ser otros tipos de datos, por lo que deben guardarse como cadenas. En respuesta, tu negocio deberá retornar un ID de cliente.
- JSON
{
"id": "fb5ddc93-1d5d-490d-ba5f-2c361cea41f7"
}
Tu servidor de negocios puede usar cualquier identificador para clientes siempre que sea una cadena.
Luego del registro de un cliente, la organización remitente puede usar cualquiera de los dos enfoques al verificar el estado del cliente. Por ejemplo, puedes recibir una solicitud GET /customer
como la siguiente:
- Ejemplo
/customer?account=GDJUOFZGW5WYBK4GIETCSSM6MTTIJ4SUMCQITPTLUWMQ6B4UIX2IEX47&memo=780284017&type=sep31-sender
O, la organización remitente podría usar el identificador que devolviste cuando registraron originalmente al cliente.
- Ejemplo
/customer?id=fb5ddc93-1d5d-490d-ba5f-2c361cea41f7&type=sep31-sender
Tu negocio deberá mantener un mapeo entre la cuenta y el memo utilizados para registrar originalmente al cliente y el ID que devuelves en la respuesta, así como los datos KYC proporcionados. En futuras iteraciones de la Anchor Platform, podríamos mantener este mapeo para tu negocio para que solo tengas que trabajar con los IDs que generas.
Tipos de clientes
Tu negocio probablemente requiere diferentes conjuntos de información KYC dependiendo del tipo de cliente. Puedes definir las etiquetas para cada uno de estos tipos de clientes en tu archivo dev.assets.yaml
, y tus organizaciones remitentes deberán entender qué etiqueta usar al registrar o consultar el estado de los clientes.
En las solicitudes PUT /customer
, debes usar el tipo pasado para evaluar si el remitente ha proporcionado todos los campos requeridos. En las solicitudes GET /customer
, debes usar el tipo para determinar el estado del cliente.
Probar con la billetera de demostración
Puedes probar tu implementación con la Billetera de Demostración Stellar siguiendo los pasos a continuación.
- Selecciona "Generar keypair para nueva cuenta"
- Selecciona "Crear cuenta"
- Selecciona "Agregar activo" e introduce el código del activo y el dominio principal de la Anchor Platform,
localhost:8080
- Selecciona "Agregar línea de confianza"
- Financia tu cuenta con un saldo del activo
- Selecciona "SEP-31 Enviar" en el menú desplegable
Deberías ver que la billetera de demostración encuentra las URL de tu servicio, autentica y comprueba qué campos KYC necesita recopilar. Luego debería presentar un formulario para que introduzcas los detalles KYC para el remitente y el receptor.
Una vez que hayas ingresado la información solicitada, enviará esa información a la Anchor Platform, que la enviará a tu servidor de negocios. Una vez que la billetera de demostración tenga los ID de los clientes que generaste, iniciará una transacción que debería fallar.
Punto final de callback de tarifas
Una vez que la organización remitente ha registrado a los clientes involucrados en la transacción, deberá solicitar una cotización, o tasa de cambio, a tu negocio. La Anchor Platform solicita esta información a tu servidor de negocios utilizando el GET /rate
endpoint.
Cotizaciones firmes vs. indicativas
Las solicitudes de cotizaciones tendrán un parámetro type
que es indicative
o firm
. Si type=firm
, tu respuesta debe incluir el campo id
y expires_at
y reservar la liquidez necesaria para cumplir con esta cotización hasta que la cotización caduque. Si type=indicative
, no devuelvas los campos id
o expires_at
porque la tasa proporcionada no se utilizará en una transacción.
Ten en cuenta que el cliente puede solicitar que la cotización caduque después de una fecha-hora específica utilizando el parámetro expires_after
. Tu negocio debe honrar esta solicitud devolviendo un valor expires_at
que esté en o después de la fecha-hora solicitada o rechazar la solicitud con una respuesta 400 Bad Request, que será reenviada al cliente.
Usando el ID del cliente
Las solicitudes pueden incluir un parámetro client_id
que identifica a la organización remitente que solicita la tasa. Puedes usar este parámetro para adherirte a los términos comerciales acordados con esa organización remitente, como ofrecer tarifas con descuento. client_id
puede no estar presente para solicitudes indicativas, en cuyo caso deberías devolver tu precio de mercado. Actualmente client_id
siempre será la clave pública Stellar que la organización remitente utilizó para autenticar con la Anchor Platform.
Métodos de entrega
Es común que las tarifas y cargos de las empresas difieran dependiendo de los rails de pago utilizados para enviar fondos al destinatario. Si tus métodos de entrega están configurados en tu archivo asset.yaml
, los clientes siempre proporcionarán el rail de pago que desean que tu negocio use para solicitudes de cotización firmes.
Dado que este punto final actualmente solo se utiliza para pagar remesas en activos off-chain, se utilizará buy_delivery_method
. Si este punto final se usa en otros flujos de transacción como depósitos SEP-24, entonces sell_delivery_method
también puede ser pasado para negocios que soporten estos tipos de transacciones.