Nhảy đến nội dung

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. Nhập defineOneEntry từ SDK và xác định 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 API client
const { AuthProvider, Orders } = 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
const authData = [
{
// thẻ email của mẫu đăng ký
marker: 'email_reg',
value: 'guest@onnentry.cloud',
},
{
// thẻ mật khẩu của mẫu đăng ký
marker: 'password_reg',
value: '12345121334',
},
];

// 4. Đăng nhập với tư cách người dùng khách để đặt hàng
const user = await AuthProvider.auth('email', {
authData: authData,
});

// 5. chúng tôi tạo dữ liệu thường được nhận từ 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. Tạo một đơn hàng khách
const order = await Orders.createOrder('guest_orders', body);

// 7. Tạo phiên thanh toán
const paymentSession = await Payments.createSession(
order.id,
'session',
false,
);

// 8. Cập nhật phiên theo id
const updateSession = await Payments.updateSessionById(paymentSession.id, {
status: 'guest_completed',
paymentUrl: paymentSession.paymentUrl,
});

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