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:

  • Estos ejemplos no incluyen manejo de errores.
  • Puedes gestionar errores utilizando un bloque try-catch o empleando una construcción como await Promise.catch((error) => error).

Escenario

1. Importar defineOneEntry desde SDK 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": 109,
"formIdentifier": "order",
"paymentAccountIdentifier": "cash",
"formData": [
{
"type": "string",
"marker": "name",
"value": "Christina Thomas"
}
],
"products": [
{
"productId": 14,
"quantity": 1
}
],
"currency": "USD",
"totalSum": 340,
"createdDate": "2025-11-10T06:33:28.317Z"
}

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

Ejemplo:

const sessionData = await Payments.createSession(orderData.id, 'session');
Resultado:
{
"id": 58,
"createdDate": "2025-11-10T06:33:28.900Z",
"updatedDate": "2025-11-10T06:33:28.900Z",
"type": "session",
"status": "waiting",
"paymentAccountId": 1,
"orderId": 109,
"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": 58,
"createdDate": "2025-11-10T06:33:28.900Z",
"updatedDate": "2025-11-10T06:33:28.900Z",
"type": "session",
"status": "waiting",
"paymentAccountId": 1,
"orderId": 109,
"paymentUrl": null
}

Ejemplo final

// 1. Import defineOneEntry from SDK and define PROJECT_URL and APP_TOKEN
import { defineOneEntry } from 'oneentry';

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

// 2. Creating an API client
const { AuthProvider, Orders, Payments } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. User authorization with 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. Creation of an order in the order storage with 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. Creation of payment session with Payments.createSession()
const sessionData = await Payments.createSession(orderData.id, 'session');

// 6. Get one payment session object by order identifier 🔐
const sessionByOrderId = await Payments.getSessionByOrderId(orderData.id);
console.log(sessionByOrderId);