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 :

  • Nous ne gérons pas les erreurs dans ces exemples.
  • Vous pouvez gérer les erreurs dans un trycatch ou dans une construction comme "await Promise.catch((error) => error)"

Scénario

1. Importer oneEntry 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": 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"
}

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

Exemple :

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

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": 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
}

Exemple final

// 1. Importer oneEntry 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);