Aller au contenu principal

Paiement de la commande par un utilisateur enregistré

Dans cet exemple, nous démontrons comment traiter un paiement pour une commande passée par un utilisateur enregistré en utilisant l'API OneEntry.

✅ Objectif du scénario :

  • Autorisation de l'utilisateur enregistré
  • Créer une commande
  • Création de la session de paiement

✅ Ce dont vous avez besoin :

  • Un PROJECT_URL et un APP_TOKEN valides pour l'authentification avec l'API OneEntry.
  • Utilisateur enregistré
  • Stockage de commandes configuré avec le marqueur "orders"

📌 Important :

  • Ces exemples n'incluent pas la gestion des erreurs.
  • Vous pouvez gérer les erreurs en utilisant un bloc try-catch ou en employant une construction comme await Promise.catch((error) => error).

Scénario

1. Importer defineOneEntry depuis le SDK et définir l'url et le token

Exemple :

import { defineOneEntry } from 'oneentry';

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

2. Création d'un client API avec la fonction defineOneEntry()

Exemple :

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

3. Autorisation de l'utilisateur avec AuthProvider.auth()

Données :

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

Exemple :

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

4. Créer une commande avec Orders.createOrder()

Données :

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

Exemple :

const orderData = await Orders.createOrder('orders', body);
Résultat :
{
"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"
}

Création de la session de paiement avec Payments.createSession()

Exemple :

const sessionData = await Payments.createSession(orderData.id, 'session');
Résultat :
{
"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
}

Obtenir un objet de session de paiement par identifiant de commande 🔐 avec Payments.getSessionByOrderId()

Exemple :

const sessionByOrderId = await Payments.getSessionByOrderId(orderData.id);
Résultat :
{
"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
}

Exemple final

// 1. Importer defineOneEntry depuis le SDK et définir PROJECT_URL et APP_TOKEN
import { defineOneEntry } from 'oneentry';

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

// 2. Création d'un client API
const { AuthProvider, Orders, Payments } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. Autorisation de l'utilisateur avec 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. Création d'une commande dans le stockage de commandes avec 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. Création de la session de paiement avec Payments.createSession()
const sessionData = await Payments.createSession(orderData.id, 'session');

// 6. Obtenir un objet de session de paiement par identifiant de commande 🔐
const sessionByOrderId = await Payments.getSessionByOrderId(orderData.id);
console.log(sessionByOrderId);