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.
  • 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 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 xác thực 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 mà 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": 47,
"createdDate": "2025-04-30T21:47:45.344Z",
"updatedDate": "2025-04-30T21:47:45.344Z",
"type": "session",
"status": "waiting",
"paymentAccountId": 1,
"orderId": 90,
"paymentUrl": null
}

8. 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(order.id);
Kết quả:
{
"id": 47,
"createdDate": "2025-04-30T21:47:45.344Z",
"updatedDate": "2025-04-30T21:47:45.344Z",
"type": "session",
"status": "waiting",
"paymentAccountId": 1,
"orderId": 90,
"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 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 xác thực 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 mà 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 | stripe
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 theo định danh đơn hàng
const sessionByOrderId = await Payments.getSessionByOrderId(order.id);
console.log(sessionByOrderId);