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).

📚 Voir dans la documentation :

📦 Référence SDK :

Essayez-le en direct

Exécutez cette méthode de manière interactive dans le bac à sable JS SDK — connectez votre Project URL et App Token lors de votre première visite, puis ouvrez :

Scénario

1. Importer defineOneEntry depuis le SDK et définir PROJECT_URL et APP_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

Exemple :

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

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

Exemple :

const authData = {
authData: [
{
marker: 'email_reg',
value: 'your-email',
},
{
marker: 'password_reg',
value: 'your-password',
},
],
};
const user = await AuthProvider.auth('email', authData);
console.log(user);
Résultat :
{
"userIdentifier": "kvasssukr.net@gmail.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": 15,
"quantity": 1
}
]
}

Exemple :

const body = {
formIdentifier: 'order',
paymentAccountIdentifier: 'cash',
formData: [
{
type: 'string',
marker: 'name',
value: 'Christina Thomas',
},
],
products: [
{
productId: 15,
quantity: 1,
},
],
};
const orderData = (await Orders.createOrder('orders', body as any).catch(
(e: any) => e,
)) as any;

if ('statusCode' in orderData) {
throw new Error(orderData.message);
}
Résultat :
{
"id": 116,
"formIdentifier": "order",
"paymentAccountIdentifier": "cash",
"formData": [
{
"type": "string",
"marker": "name",
"value": "Christina Thomas"
}
],
"products": [
{
"productId": 15,
"quantity": 1
}
],
"currency": "USD",
"totalSum": 400,
"bonusApplied": 0,
"totalDue": 400,
"discountConfig": {
"orderDiscounts": [],
"productDiscounts": [],
"coupon": null,
"settings": {
"allowStacking": false,
"maxDiscountValue": null,
"allowGiftStacking": false,
"maxBonusPaymentPercent": null,
"minBonusAmount": null,
"minOrderAmountForBonus": null,
"giftRefundPolicy": "KEEP_GIFT"
},
"additionalDiscountsMarkers": [],
"totalRaw": 400,
"totalSumWithDiscount": 400,
"excludedGiftProductIds": [],
"bonus": {
"availableBalance": 0,
"maxBonusDiscount": 0,
"minBonusAmount": null,
"minOrderAmountForBonus": null,
"bonusApplied": 0
},
"bonusApplied": 0,
"totalDue": 400
},
"statusIdentifier": "upcoming",
"statusLocalizeInfos": {
"title": "Upcoming"
},
"createdDate": "2026-06-06T11:38:21.644Z"
}

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

Exemple :

const sessionData = await Payments.createSession(
orderData?.id,
'session',
).catch((e: any) => e);
Résultat :
{
"id": 65,
"createdDate": "2026-06-06T11:38:22.125Z",
"updatedDate": "2026-06-06T11:38:22.125Z",
"type": "session",
"status": "waiting",
"paymentAccountId": 1,
"orderId": 116,
"amount": null,
"paymentUrl": null
}

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

Exemple :

const sessionByOrderId = await Payments.getSessionByOrderId(orderData?.id).catch(
(e: any) => e,
);

console.log({ user, sessionData, sessionByOrderId });
Résultat :
[
{
"id": 65,
"createdDate": "2026-06-06T11:38:22.125Z",
"updatedDate": "2026-06-06T11:38:22.125Z",
"type": "session",
"status": "waiting",
"paymentAccountId": 1,
"orderId": 116,
"amount": null,
"paymentUrl": null
}
]

Exemple 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-email',
},
{
marker: 'password_reg',
value: 'your-password',
},
],
};
const user = await AuthProvider.auth('email', authData);
console.log(user);

// 4. Create order with [Orders.createOrder()](/docs/orders/createOrder)
const body = {
formIdentifier: 'order',
paymentAccountIdentifier: 'cash',
formData: [
{
type: 'string',
marker: 'name',
value: 'Christina Thomas',
},
],
products: [
{
productId: 15,
quantity: 1,
},
],
};
const orderData = (await Orders.createOrder('orders', body as any).catch(
(e: any) => e,
)) as any;

if ('statusCode' in orderData) {
throw new Error(orderData.message);
}

// 5. Creation of payment session with [Payments.createSession()](/docs/payments/createSession)
const sessionData = await Payments.createSession(
orderData?.id,
'session',
).catch((e: any) => e);

// 6. Get one payment session object by order identifier with [Payments.getSessionByOrderId()](/docs/payments/getSessionByOrderId)
const sessionByOrderId = await Payments.getSessionByOrderId(orderData?.id).catch(
(e: any) => e,
);

console.log({ user, sessionData, sessionByOrderId });