Mua hàng hóa và dịch vụ mà không cần đăng ký người dùng
Trong ví dụ này, chúng tôi sẽ trình bày cách đặt hàng cho khách mà không yêu cầu đăng ký người dùng.
✅ Mục đích của kịch bản:
- Người dùng không được ủy quyền.
- Người dùng điền vào một mẫu với thông tin liên lạc (ví dụ, guest_orders).
- Chọn sản phẩm (bạn có thể thiết lập trước một danh sách).
- Đơn hàng được đặt cho người dùng guest_user.
✅ 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.
- Thẻ của mẫu đơn hàng khách, ví dụ guest_orders
- danh sách productId và số lượng
📌 Quan trọng:
- Các trường trong mẫu (thẻ, loại) phải khớp với cài đặt mẫu trong bảng điều khiển quản trị.
- Nếu bạn cần gửi thông báo về một đơn hàng, bạn có thể sử dụng Events.
- 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à xác định 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 API client với hàm defineOneEntry()
Ví dụ:
const { AuthProvider, Orders, Payments, Forms } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});
3. Chúng tôi tạo một mảng với các trường cần thiết cho việc ủy quyền người dùng
các trường cần thiết: email = "email_reg", password = "password_reg"
Kết quả:
[
{
"marker": "email_reg",
"value": "guest@onnentry.cloud"
},
{
"marker": "password_reg",
"value": "12345121334"
}
]
4. Đăng nhập với tư cách người dùng khách bằng AuthProvider.auth() để đặt hàng
Dữ liệu:
[
{
"marker": "email_reg",
"value": "guest@onnentry.cloud"
},
{
"marker": "password_reg",
"value": "12345121334"
}
]
Ví dụ:
const user = await AuthProvider.auth("email", {authData: authData});
Kết quả:
{
"userIdentifier": "guest@onnentry.cloud",
"authProviderIdentifier": "email",
"accessToken": "eyJhbGciOiJIUzI1NiIsInR...pZCI6MTYsImF1dGhQ"
"refreshToken": "1745494429101-...-2834edf8"
}
5. Tạo dữ liệu thường được nhận từ mẫu frontend
Ví dụ:
{
"formIdentifier": "guest_order",
"paymentAccountIdentifier": "cash",
"formData": {
"en_US": [
{
"marker": "guest_name",
"type": "string",
"value": "Christina Thomas"
},
{
"marker": "guest_phone",
"type": "string",
"value": "+18005000500"
},
{
"marker": "guest_email",
"type": "string",
"value": "guest@yourmail.com"
}
]
},
"products": [
{
"productId": 10,
"quantity": 1
}
]
}
6. Tạo một đơn hàng khách với Orders.createOrder()
Ví dụ:
const orderData = await Orders.createOrder("guest_orders", body);
7. Tạo phiên thanh toán với Payments.createSession()
Ví dụ:
const payment = await Payments.createSession(order.id, 'session', false);
Kết quả:
{
"id": 59,
"createdDate": "2025-11-11T07:31:50.898Z",
"updatedDate": "2025-11-11T07:31:50.898Z",
"type": "session",
"status": "waiting",
"paymentAccountId": 1,
"orderId": 110,
"paymentUrl": null
}
8. Lấy một đối tượng phiên thanh toán bằng định danh đơn hàng với Payments.getSessionByOrderId()
Ví dụ:
const sessionByOrderId = await Payments.getSessionByOrderId(order.id);
Kết quả:
{
"id": 59,
"createdDate": "2025-11-11T07:31:50.898Z",
"updatedDate": "2025-11-11T07:31:50.898Z",
"type": "session",
"status": "waiting",
"paymentAccountId": 1,
"orderId": 110,
"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 } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});
// 3. We form an array with fields required for user authorization
const authData = [
{
// registration form email marker
marker: 'email_reg',
value: 'guest@onnentry.cloud',
},
{
// registration form password marker
marker: 'password_reg',
value: '12345121334',
},
];
// 4. Log in as a guest user to place an order
const user = await AuthProvider.auth('email', {
authData: authData,
});
// 5. we generate data that is usually received from the frontend
const guestFormData = [
{
marker: 'guest_name',
type: 'string',
value: 'Christina Thomas',
},
{
marker: 'guest_phone',
type: 'string',
value: '+18005000500',
},
{
marker: 'guest_email',
type: 'string',
value: 'guest@yourmail.com',
},
];
const productsData = [
{
productId: 1,
quantity: 1,
},
];
const body: IOrderData = {
formIdentifier: 'guest_order',
paymentAccountIdentifier: 'cash',
formData: guestFormData,
products: productsData,
};
// 6. Create a guest order
const order = await Orders.createOrder('guest_orders', body);
// 7. Creation of payment session
const paymentSession = await Payments.createSession(
order.id,
'session',
false,
);
// 8. Update session by id
const updateSession = await Payments.updateSessionById(paymentSession.id, {
status: 'guest_completed',
paymentUrl: paymentSession.paymentUrl,
});
// 9. Get one payment session object by order identifier
const sessionByOrderId = await Payments.getSessionByOrderId(order.id);
console.log(sessionByOrderId);