@warriorteam/redai-zalo-sdk
Version:
Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account v3.0, ZNS with Full Type Safety, Consultation Service, Broadcast Service, Group Messaging with List APIs, Social APIs, Enhanced Article Management, Promotion Service v3.0 with Multip
268 lines • 7.37 kB
TypeScript
/**
* Purchase API types for Zalo Official Account
*
* API để tạo đơn hàng mua sản phẩm/dịch vụ OA
* Yêu cầu: Ứng dụng cần được cấp quyền quản lý "Mua sản phẩm dịch vụ OA"
*/
/**
* Beneficiary types - Đối tượng thụ hưởng
*/
export type BeneficiaryType = "OA" | "APP";
/**
* Request để tạo đơn hàng với product_id
*/
export interface CreateOrderWithProductRequest {
/**
* Đối tượng được thụ hưởng khi mua đơn hàng
* - OA: Official Account
* - APP: Application
* Lưu ý: Mỗi sản phẩm sẽ quy định đối tượng khả dụng riêng
*/
beneficiary: BeneficiaryType;
/**
* ID của sản phẩm muốn mua
* Chỉ sử dụng product_id HOẶC redeem_code, không được dùng cả hai
*/
product_id: number;
/**
* Mã giảm giá (tùy chọn)
* VD: Giảm 100K, Giảm 10%, ...
*/
voucher_code?: string;
}
/**
* Request để tạo đơn hàng với redeem_code
*/
export interface CreateOrderWithRedeemRequest {
/**
* Đối tượng được thụ hưởng khi mua đơn hàng
*/
beneficiary: BeneficiaryType;
/**
* Mã quà tặng
* Chỉ sử dụng product_id HOẶC redeem_code, không được dùng cả hai
*/
redeem_code: string;
/**
* Mã giảm giá (tùy chọn)
*/
voucher_code?: string;
}
/**
* Union type cho request tạo đơn hàng
*/
export type CreateOrderRequest = CreateOrderWithProductRequest | CreateOrderWithRedeemRequest;
/**
* Response data khi tạo đơn hàng thành công
*/
export interface OrderData {
/**
* ID đơn hàng
* Lưu ý: Order chỉ được tạo từ 00:01 đến 23h54
*/
order_id: string;
/**
* Loại đối tượng thụ hưởng
*/
beneficiary_type: BeneficiaryType;
/**
* ID của OA (nếu beneficiary_type = OA) hoặc ID của App (nếu beneficiary_type = APP)
*/
beneficiary_id: number;
/**
* ID sản phẩm
*/
product_id: number;
/**
* Tên sản phẩm
*/
product_name: string;
/**
* Tài khoản ZCA thanh toán đơn hàng
*/
zca_id: number;
/**
* Voucher code đã được sử dụng (nếu có)
*/
voucher_code?: string;
/**
* Mã quà tặng (nếu có)
*/
redeem_code?: string;
/**
* Giá trị của voucher_code
* VD: Giảm 10% hay Giảm 100K, ...
*/
discount?: number;
/**
* Giá tiền của đơn hàng (chưa áp dụng mã giảm giá)
*/
amount: number;
/**
* Giá tiền chính thức sau khi đã sử dụng mã giảm giá
*/
final_amount: number;
/**
* Thời điểm tạo đơn hàng, tính bằng millisecond
*/
created_time: number;
/**
* OTT - One Time Token
* Mã xác thực dùng để xác nhận thanh toán đơn hàng
* Sử dụng tại API xác nhận thanh toán đơn hàng
* OTT sẽ có hiệu lực trong vòng 5 phút kể từ khi Order được khởi tạo
*/
verified_token: string;
}
/**
* Response khi tạo đơn hàng thành công
*/
export interface CreateOrderResponse {
error: 0;
message: "Success";
data: OrderData;
}
/**
* Helper type để kiểm tra request type
*/
export declare function isProductOrderRequest(request: CreateOrderRequest): request is CreateOrderWithProductRequest;
/**
* Helper type để kiểm tra request type
*/
export declare function isRedeemOrderRequest(request: CreateOrderRequest): request is CreateOrderWithRedeemRequest;
/**
* Validation errors cho Purchase API
*/
export interface PurchaseValidationError {
field: string;
message: string;
}
/**
* Request để xác nhận thanh toán đơn hàng
*/
export interface ConfirmOrderRequest {
/**
* ID đơn hàng
* Lấy từ response của API tạo đơn hàng
*/
order_id: string;
/**
* OTT - One Time Token
* Mã xác thực dùng để xác nhận thanh toán đơn hàng
* Lấy từ response của API tạo đơn hàng
* OTT sẽ có hiệu lực trong vòng 5 phút kể từ khi Order được khởi tạo
*/
verified_token: string;
}
/**
* Response data khi xác nhận thanh toán đơn hàng thành công
* Lưu ý: Response không có verified_token như khi tạo đơn hàng
*/
export interface ConfirmedOrderData {
/**
* ID đơn hàng
*/
order_id: string;
/**
* Loại đối tượng thụ hưởng
*/
beneficiary_type: BeneficiaryType;
/**
* ID của OA (nếu beneficiary_type = OA) hoặc ID của App (nếu beneficiary_type = APP)
*/
beneficiary_id: number;
/**
* ID sản phẩm
*/
product_id: number;
/**
* Tên sản phẩm
*/
product_name: string;
/**
* Tài khoản ZCA thanh toán đơn hàng
*/
zca_id: number;
/**
* Voucher code đã được sử dụng (nếu có)
*/
voucher_code?: string;
/**
* Mã quà tặng (nếu có)
*/
redeem_code?: string;
/**
* Giá trị của voucher_code
* VD: Giảm 10% hay Giảm 100K, ...
*/
discount?: number;
/**
* Giá tiền của đơn hàng (chưa áp dụng mã giảm giá)
*/
amount: number;
/**
* Giá tiền chính thức sau khi đã sử dụng mã giảm giá
*/
final_amount: number;
/**
* Thời điểm tạo đơn hàng, tính bằng millisecond
*/
created_time: number;
}
/**
* Response khi xác nhận thanh toán đơn hàng thành công
*/
export interface ConfirmOrderResponse {
error: 0;
message: "Success";
data: ConfirmedOrderData;
}
/**
* Danh sách sản phẩm OA có sẵn
*/
export declare const OA_PRODUCTS: {
readonly OA_ADVANCED_6M: 866836109767958100;
readonly OA_ADVANCED_12M: 1302963828004138500;
readonly OA_PREMIUM_6M: 757295129578622300;
readonly OA_PREMIUM_12M: 3071996459978069000;
readonly GMF_10_MEMBERS: 739448264820568800;
readonly GMF_50_MEMBERS: 2405469629611791400;
readonly GMF_100_MEMBERS: 2275350247265190700;
readonly GMF_1000_MEMBERS: 3678557233392100000;
readonly TRANSACTION_5K: 4609774892111012000;
readonly TRANSACTION_50K: 2038298593847789600;
readonly TRANSACTION_500K: 2544831667685732000;
};
/**
* Thông tin chi tiết sản phẩm
*/
export interface ProductInfo {
id: number;
name: string;
beneficiary: BeneficiaryType[];
category: 'subscription' | 'gmf' | 'quota';
}
/**
* Danh sách thông tin chi tiết sản phẩm
*/
export declare const PRODUCT_INFO: Record<number, ProductInfo>;
/**
* Purchase API error codes
*/
export declare enum PurchaseErrorCode {
INVALID_BENEFICIARY = 1001,
INVALID_PRODUCT_ID = 1002,
INVALID_REDEEM_CODE = 1003,
INVALID_VOUCHER_CODE = 1004,
PRODUCT_NOT_AVAILABLE = 1005,
INSUFFICIENT_BALANCE = 1006,
ORDER_TIME_RESTRICTED = 1007,
DUPLICATE_ORDER = 1008,
PERMISSION_DENIED = 1009,
INVALID_ORDER_ID = 1010,
INVALID_VERIFIED_TOKEN = 1011,
ORDER_EXPIRED = 1012,
ORDER_ALREADY_CONFIRMED = 1013,
SYSTEM_ERROR = 9999
}
//# sourceMappingURL=purchase.d.ts.map