Flujo de Open Payments
En esta página, se analizan en profundidad las llamadas e interacciones de la interfaz de programación de aplicaciones (application programming interface, API), que ocurren entre el cliente y los servidores durante un pago. Los diagramas de la secuencia se incluyen con fines ilustrativos y se pueden simplificar en algunas instancias.
Supuestos
Sección titulada «Supuestos»- El usuario del cliente Como una aplicación o servicio móvil o web es el remitente.
- El cliente ya tiene los datos de la cuenta compatible con Open Payments del remitente y puede enviar pagos en su nombre.
Cómo obtener los datos de la cuenta
Sección titulada «Cómo obtener los datos de la cuenta»Un cliente recupera los datos públicos sobre la cuenta compatible con Open Payments de un destinatario mediante la emisión de una solicitud GET para la dirección de billetera del destinatario. Los datos incluyen el código y la escala del activo de la cuenta subyacente, así como las URL de los servidores de autorización y de recursos que el cliente necesita para configurar un pago al destinatario.
sequenceDiagram
participant C as Cliente
participant WA as Dirección de billetera
C->>WA: GET, URL de la dirección de billetera
(p. ej., https://wallet.example.com/alice)
WA-->>C: 200, dirección de billetera encontrada,
devolver los detalles públicos de la cuenta
Pago entrante
Sección titulada «Pago entrante»Primero, el cliente solicita/recibe una concesión de autorización de parte del servidor de autorización de la ASE Entidad que administra la cuenta del destinatario para crear un recurso de incoming-payment. El cliente envía una solicitud al servidor de recursos de la ASE para crear el recurso. Una vez creado, el servidor de recursos devuelve los datos de pago único que el cliente utilizará para realizar uno o más pagos al destinatario.
sequenceDiagram
participant C as Cliente
participant AS as Servidor de autorización
ASE del destinatario
participant RS as Servidor de recursos
ASE del destinatario
C->>AS: POST, solicitud de concesión de autorización con el parámetro
type=incoming-payment
AS-->>C: 200 OK, devuelve el token de acceso
C->>RS: POST, crear un pago entrante
RS-->>C: 201, pago entrante creado,
devolver el pago recibido con datos públicos
Cotización
Sección titulada «Cotización»El cliente solicita/recibe una concesión de autorización de parte del servidor de autorización de la ASE Entidad que administra la cuenta del destinatario, para crear un recurso de quote. El cliente envía una solicitud al servidor de recursos para crear el recurso. Una vez creado, el servidor de recursos devuelve, entre otros datos, una id de cotización y el monto que costará efectuar el pago.
sequenceDiagram
participant C as Cliente
participant AS as Servidor de autorización
ASE del remitente
participant RS as Servidor de recursos
ASE del remitente
C->>AS: POST, solicitud de concesión de autorización con el parámetro
type=quote
AS-->>C: 200 OK, devuelve el token de acceso
C->>RS: POST, crear la cotización
RS-->>C: 201, cotización creada,
devuelve los datos de la cotización
Pago saliente
Sección titulada «Pago saliente»Antes de que se pueda crear un recurso de pago saliente en la cuenta del remitente, Open Payments exige que el cliente envíe una solicitud interactiva de concesión de autorización al servidor de autorización de la ASE Entidad que administra la cuenta del remitente.
Una solicitud interactiva de concesión de autorización exige que se obtenga el consentimiento explícito del remitente antes de que se emita un token de acceso. Aunque el cliente debe facilitar la interacción, el servidor de autorización y el proveedor de identidad (identity provider, IdP) de la ASE del remitente son responsables de la interfaz y de obtener el consentimiento.
Una vez que se obtuvo el consentimiento, el cliente solicita permiso para continuar con la solicitud de concesión de autorización con el fin de obtener un token de acceso.
sequenceDiagram autonumber
Cliente->>Servidor de autorización (Authorization server AS): solicitud POST de concesión de autorización (con objeto de interacción)
Servidor de autorización (Authorization server AS)-->>Cliente: 200 OK, devuelve el URI de redirección para la interacción y el URI de continuación
Cliente->>Servidor de autorización (Authorization server AS): navega al URI de redirección para la interacción
Servidor de autorización (Authorization server AS)->>Servidor de autorización (Authorization server AS): comienza la interacción y configura la sesión
Servidor de autorización (Authorization server AS)-->>Cliente: redirección temporal 302 hacia el URI del proveedor de identidad
con concesión de autorización de información en la cadena de consulta
Cliente->>Proveedor de identidad (Identity provider IdP): redirige hacia el proveedor de identidad
Proveedor de identidad (Identity provider IdP)->>Proveedor de identidad (Identity provider IdP): el propietario de recursos (p. ej., el usuario cliente)
acepta la interacción
Proveedor de identidad (Identity provider IdP)->>Servidor de autorización (Authorization server AS): transmite la decisión de interacción
Servidor de autorización (Authorization server AS)-->>Proveedor de identidad (Identity provider IdP): decisión 202 aceptada
Proveedor de identidad (Identity provider IdP)->>Servidor de autorización (Authorization server AS): solicita finalizar la interacción
Servidor de autorización (Authorization server AS)->>Servidor de autorización (Authorization server AS): finaliza la sesión
Servidor de autorización (Authorization server AS)-->>Proveedor de identidad (Identity provider IdP): redirección temporal 302 para finalizar el URI
(definida en la solicitud de concesión de autorización inicial)
protegida con un hash único y
interact_ref en la cadena de consulta
Proveedor de identidad (Identity provider IdP)->>Cliente: sigue la redirección
Cliente->>Cliente: verifica el hash
Cliente->>Servidor de autorización (Authorization server AS): solicitud POST de continuación de concesión de autorización con
interact_ref en el cuerpo para continuar con el URI
Servidor de autorización (Authorization server AS)-->>Cliente: 200 OK, devuelve el token de concesión de autorización de acceso
Una vez que se obtiene un token de acceso, el cliente puede solicitar la creación de un recurso de pago saliente. La configuración del pago está completa, y el flujo de Open Payments finaliza luego de la creación del recurso.
sequenceDiagram
participant C as Cliente
participant RS as Servidor de recursos
ASE del remitente
C->>RS: POST, crear un pago saliente
RS-->>C: 201, pago saliente creado,
devuelve los datos del pago saliente
Cómo obtener el historial de transacciones
Sección titulada «Cómo obtener el historial de transacciones»Para proporcionar a un usuario el historial de sus transacciones, el cliente puede recuperar una lista de los pagos entrantes (recibidos) y los pagos salientes (enviados) del usuario.
sequenceDiagram
participant C as Cliente
participant RS as Servidor de recursos
C->>RS: GET, lista de pagos entrantes/salientes
con el parámetro wallet-address={URL of wallet address}
RS-->>C: 200 OK, devuelve un arreglo de pagos entrantes/salientes
con los datos de pago importantes
De igual manera, el cliente puede proporcionar al usuario los datos sobre un pago entrante o saliente en específico.
sequenceDiagram
participant C as Cliente
participant RS as Servidor de recursos
C->>RS: GET, un pago entrante/saliente con el parámetro
id={URL identifying incoming/outgoing payment}
RS-->>C: 200, pago entrante/saliente encontrado,
devuelve los datos del pago entrante/saliente
Resumiendo
Sección titulada «Resumiendo»En este diagrama, se reúnen todos los conceptos mencionados anteriormente, excepto el de obtener el historial de transacciones, para mostrar una secuencia completa de las transacciones. Al final de la página, encontrará un enlace a la versión ampliada del diagrama.
Como se muestra a continuación, las ASE del remitente y del destinatario deben operar sus propios servidores de autorización y recursos. Las solicitudes de concesión de autorización para los recursos de pago entrante y cotización, por lo general, no son interactivos. En cambio, una solicitud de concesión de autorización para un recurso de pago saliente exige el consentimiento explícito del remitente (p. ej., el usuario del cliente), que se obtiene por medio del proveedor de identidad del remitente.
Puede encontrar más información sobre los flujos de interacción de las concesiones de autorización en la página Negociación y autorización de concesiones.
sequenceDiagram
autonumber
box rgb(225,245,254) Entidad que administra
la cuenta del remitente
participant SIDP as Proveedor de identidad
participant SRS as Servidor de recursos
participant SAS as Servidor de autorización
end
participant SC as Cliente
box rgb(232,245,233) Entidad que administra
la cuenta del destinatario
participant RW as URL de la dirección de billetera
participant RAS as Servidor de autorización
participant RRS as Servidor de recursos
end
SC->>+RW: Solicita la dirección de billetera
RW-->>-SC: Proporciona los datos de la dirección de billetera
SC->>+RAS: Solicita una concesión de autorización no interactiva para un pago entrante
RAS-->>-SC: Proporciona el token de acceso y la concesión de autorización para el pago
SC->>+RRS: Solicita crear el pago entrante
RRS->>+RAS: Solicita la validación del token de acceso
RAS-->>-RRS: Se valida el token de acceso
RRS-->>-SC: Responde con los datos del pago entrante creado
SC->>+SAS: Solicita una concesión de autorización no interactiva para una cotización
SAS-->>-SC: Proporciona el token de acceso y la concesión de autorización para la cotización
SC->>+SRS: Solicita crear la cotización
SRS-->>-SC: Se crea la cotización
SC->>+SAS: Solicita una concesión de autorización interactiva para un pago saliente
SAS-->>-SC: Proporciona la URI de redirección para la interacción y la URI de continuación
SC->>+SAS: Navega a la URI de redirección para la interacción
SAS->>SAS: Comienza el proceso de interacción y configura la sesión
SAS-->>-SC: Proporciona la URI del proveedor de identidad
SC->>+SIDP: Navega (redirige) hacia el proveedor de identidad
SIDP->>SIDP: El remitente acepta la interacción,
confirma la intención de pago
SIDP->>SAS: Transmite la decisión de interacción
SAS-->>SIDP: Confirma que se la decisión se aceptó
SIDP->>SAS: Solicita finalizar la interacción
SAS->>SAS: Completa la sesión
SAS->>SIDP: Redirige al URI de interacción definido en la solicitud inicial de concesión
SIDP-->>-SC: El cliente sigue la redirección
SC->>SC: Verifica el hash
SC->>+SAS: Solicita una continuación de la concesión
SAS-->>SC: Proporciona un token de acceso para la concesión
SC->>+SRS: Solicita crear el pago saliente
SRS->>SAS: Solicita la validación del token de acceso
SAS-->>SRS: Se valida el token de acceso
SRS->>-SC: Responde con los datos del pago saliente creado