Nhảy đến nội dung

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. Nhập defineOneEntry từ SDK và định nghĩa PROJECT_URL và APP_TOKEN
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
const { AuthProvider, Orders, Payments } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. Ủy quyền người dùng với 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. Tạo một đơn hàng trong kho lưu trữ đơn hàng với 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. Tạo phiên thanh toán với Payments.createSession()
const sessionData = await Payments.createSession(orderData.id, 'session');

// 6. Lấy một đối tượng phiên thanh toán theo định danh đơn hàng 🔐
const sessionByOrderId = await Payments.getSessionByOrderId(orderData.id);
console.log(sessionByOrderId);