Thanh toán cho đơn hàng của người dùng đã đăng ký
Trong ví dụ này, chúng tôi sẽ trình bày cách xử lý thanh toán cho một đơn hàng được đặt bởi người dùng đã đăng ký sử dụng API OneEntry.
✅ Mục đích của kịch bản:
- Ủy quyền người dùng đã đăng ký
- Tạo đơn hàng
- Tạo phiên thanh toán
✅ Những gì bạn cần:
- Một PROJECT_URL và APP_TOKEN hợp lệ để xác thực với API OneEntry.
- Người dùng đã đăng ký
- Kho lưu trữ đơn hàng đã được cấu hình với dấu hiệu "orders"
📌 Quan trọng:
- Những ví dụ này không bao gồm xử lý lỗi.
- Bạn có thể quản lý lỗi bằng cách sử dụng khối try-catch hoặc bằng cách sử dụng cấu trúc như await Promise.catch((error) => error).
Kịch bản
1. Nhập defineOneEntry từ SDK và định nghĩa url và token
Ví dụ:
import { defineOneEntry } from 'oneentry';
const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';
2. Tạo một khách hàng API với hàm defineOneEntry()
Ví dụ:
const { AuthProvider, Orders, Payments, Forms } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});
3. Ủy quyền người dùng với AuthProvider.auth()
Dữ liệu:
[
{
"marker": "email_reg",
"value": "your-user@email.com"
},
{
"marker": "password_reg",
"value": "123456"
}
]
Ví dụ:
const user = await AuthProvider.auth('email', authData);
Kết quả:
{
"userIdentifier": "your-user@email.com",
"authProviderIdentifier": "email",
"accessToken": "eyJhbGciOiJIUzI1NiIsInR...pZCI6MTYsImF1dGhQ"
"refreshToken": "1745494429101-...-2834edf8"
}
4. Tạo đơn hàng với Orders.createOrder()
Dữ liệu:
{
"formIdentifier": "order",
"paymentAccountIdentifier": "cash",
"formData": {
"en_US": [
{
"type": "string",
"marker": "name",
"value": "Christina Thomas"
}
]
},
"products": [
{
"productId": 14,
"quantity": 1
}
]
}
Ví dụ:
const orderData = await Orders.createOrder('orders', body);
Kết quả:
{
"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"
}
Tạo phiên thanh toán với Payments.createSession()
Ví dụ:
const sessionData = await Payments.createSession(orderData.id, 'session');
Kết quả:
{
"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
}
Lấy một đối tượng phiên thanh toán theo định danh đơn hàng 🔐 với Payments.getSessionByOrderId()
Ví dụ:
const sessionByOrderId = await Payments.getSessionByOrderId(orderData.id);
Kết quả:
{
"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
}
Ví dụ cuối cùng
// 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);