Saltar al contenido principal

Pago por el pedido de un usuario registrado

En este ejemplo, demostramos cómo procesar un pago por un pedido realizado por un usuario registrado utilizando la API de OneEntry.

✅ Propósito del escenario:

  • Autorización de usuario registrado
  • Crear pedido
  • Creación de sesión de pago

✅ Lo que necesitas:

  • Un PROJECT_URL y APP_TOKEN válidos para la autenticación con la API de OneEntry.
  • Usuario registrado
  • Almacenamiento de pedidos configurado con el marcador "orders"

📌 Importante:

  • No manejamos errores en estos ejemplos.
  • Puedes manejar errores en trycatch o en una construcción como "await Promise.catch((error) => error)"

Escenario

1. Importar oneEntry y definir url y token

Ejemplo:

import { defineOneEntry } from 'oneentry';

const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';

2. Creando un cliente API con la función defineOneEntry()

Ejemplo:

const { AuthProvider, Orders, Payments, Forms } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

3. Autorización de usuario con AuthProvider.auth()

Datos:

[
{
"marker": "email_reg",
"value": "your-user@email.com"
},
{
"marker": "password_reg",
"value": "123456"
}
]

Ejemplo:

const user = await AuthProvider.auth('email', authData);
Resultado:
{
"userIdentifier": "your-user@email.com",
"authProviderIdentifier": "email",
"accessToken": "eyJhbGciOiJIUzI1NiIsInR...pZCI6MTYsImF1dGhQ"
"refreshToken": "1745494429101-...-2834edf8"
}

4. Crear pedido con Orders.createOrder()

Datos:

{
"formIdentifier": "order",
"paymentAccountIdentifier": "cash",
"formData": {
"en_US": [
{
"type": "string",
"marker": "name",
"value": "Christina Thomas"
}
]
},
"products": [
{
"productId": 14,
"quantity": 1
}
]
}

Ejemplo:

const orderData = await Orders.createOrder('orders', body);
Resultado:
{
"id": 89,
"formIdentifier": "order",
"paymentAccountIdentifier": "cash",
"formData": [
{
"type": "string",
"marker": "name",
"value": "Christina Thomas"
}
],
"products": [
{
"productId": 14,
"quantity": 1
}
],
"currency": "USD",
"totalSum": 340,
"createdDate": "2025-04-30T20:15:29.254Z"
}

Creación de sesión de pago con Payments.createSession()

Ejemplo:

const sessionData = await Payments.createSession(orderData.id, 'session');
Resultado:
{
"id": 46,
"createdDate": "2025-04-30T20:15:30.506Z",
"updatedDate": "2025-04-30T20:15:30.506Z",
"type": "session",
"status": "waiting",
"paymentAccountId": 1,
"orderId": 89,
"paymentUrl": null
}

Obtener un objeto de sesión de pago por identificador de pedido 🔐 con Payments.getSessionByOrderId()

Ejemplo:

const sessionByOrderId = await Payments.getSessionByOrderId(orderData.id);
Resultado:
{
"id": 46,
"createdDate": "2025-04-30T20:15:30.506Z",
"updatedDate": "2025-04-30T20:15:30.506Z",
"type": "session",
"status": "waiting",
"paymentAccountId": 1,
"orderId": 89,
"paymentUrl": null
}

Ejemplo final

// 1. Importar oneEntry y definir PROJECT_URL y APP_TOKEN
import { defineOneEntry } from 'oneentry';

const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';

// 2. Creando un cliente API
const { AuthProvider, Orders, Payments } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. Autorización de usuario con AuthProvider.auth('email', authData)
const authData = {
authData: [
{
marker: 'email_reg',
value: 'your-user@email.com',
},
{
marker: 'password_reg',
value: '123456',
},
],
};
const user = await AuthProvider.auth('email', authData);

// 4. Creación de un pedido en el almacenamiento de pedidos con Orders.createOrder()
const body = {
formIdentifier: 'order',
paymentAccountIdentifier: 'cash',
formData: [
{
type: 'string',
marker: 'name',
value: 'Christina Thomas',
},
],
products: [
{
productId: 1,
quantity: 1,
},
],
};
const orderData = await Orders.createOrder('orders', body);

// 5. Creación de sesión de pago con Payments.createSession()
const sessionData = await Payments.createSession(orderData.id, 'session');

// 6. Obtener un objeto de sesión de pago por identificador de pedido 🔐
const sessionByOrderId = await Payments.getSessionByOrderId(orderData.id);
console.log(sessionByOrderId);