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:

  • Xác thực 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:

  • Chúng tôi không xử lý lỗi trong các ví dụ này.
  • Bạn có thể xử lý lỗi trong trycatch hoặc trong một cấu trúc như "await Promise.catch((error) => error)"

Kịch bản

1. Nhập oneEntry 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 client API với hàm defineOneEntry()

Ví dụ:

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

3. Xác thực 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": 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"
}

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

Lấy một đối tượng phiên thanh toán theo mã đơn hàng 🔐 với Payments.getSessionByOrderId()

Ví dụ:

const sessionByOrderId = await Payments.getSessionByOrderId(orderData.id);
Kết quả:
{
"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
}

Ví dụ cuối cùng

// 1. Nhập oneEntry 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 client API
const { AuthProvider, Orders, Payments } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. Xác thực 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 mã đơn hàng 🔐
const sessionByOrderId = await Payments.getSessionByOrderId(orderData.id);
console.log(sessionByOrderId);