UNPKG

@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

209 lines 9.49 kB
import { ZaloClient } from "../clients/zalo-client"; import { CreateOrderRequest, OrderData, ConfirmOrderRequest, ConfirmedOrderData, ProductInfo } from "../types/purchase"; /** * Service xử lý các API mua sản phẩm/dịch vụ OA của Zalo * * ĐIỀU KIỆN SỬ DỤNG PURCHASE API: * * 1. QUYỀN TRUY CẬP: * - Ứng dụng cần được cấp quyền quản lý "Mua sản phẩm dịch vụ OA" * - OA phải được xác minh và có quyền bán sản phẩm/dịch vụ * * 2. THỜI GIAN TẠO ĐỚN: * - Order chỉ được tạo từ 00:01 đến 23:54 hàng ngày * - Không thể tạo đơn hàng trong khung giờ bảo trì (23:55 - 00:00) * * 3. SẢN PHẨM/DỊCH VỤ: * - Sản phẩm phải có sẵn và được phép bán * - Đối tượng thụ hưởng (beneficiary) phải phù hợp với sản phẩm * - Có thể sử dụng product_id HOẶC redeem_code, không được dùng cả hai * * 4. THANH TOÁN: * - Tài khoản ZCA phải có đủ số dư để thanh toán * - Voucher code (nếu có) phải hợp lệ và chưa hết hạn * * 5. XÁC THỰC: * - Mỗi đơn hàng sẽ có verified_token (OTT) để xác nhận thanh toán * - OTT có hiệu lực trong vòng 5 phút kể từ khi tạo đơn * * LỖI THƯỜNG GẶP: * - 1001: Beneficiary không hợp lệ * - 1002: Product ID không tồn tại hoặc không khả dụng * - 1003: Redeem code không hợp lệ hoặc đã được sử dụng * - 1004: Voucher code không hợp lệ hoặc đã hết hạn * - 1005: Sản phẩm không khả dụng cho đối tượng thụ hưởng * - 1006: Số dư tài khoản không đủ * - 1007: Ngoài thời gian cho phép tạo đơn hàng * - 1008: Đơn hàng trùng lặp * - 1009: Không có quyền truy cập */ export declare class PurchaseService { private readonly client; private readonly purchaseApiUrl; constructor(client: ZaloClient); /** * Tạo đơn hàng mua sản phẩm/dịch vụ OA * @param accessToken Access token của Official Account * @param request Thông tin đơn hàng cần tạo * @returns Thông tin đơn hàng đã tạo */ createOrder(accessToken: string, request: CreateOrderRequest): Promise<OrderData>; /** * Tạo đơn hàng với product_id * @param accessToken Access token của Official Account * @param beneficiary Đối tượng thụ hưởng (OA hoặc APP) * @param productId ID sản phẩm * @param voucherCode Mã giảm giá (tùy chọn) * @returns Thông tin đơn hàng đã tạo */ createOrderWithProduct(accessToken: string, beneficiary: "OA" | "APP", productId: number, voucherCode?: string): Promise<OrderData>; /** * Tạo đơn hàng với redeem_code (mã quà tặng) * @param accessToken Access token của Official Account * @param beneficiary Đối tượng thụ hưởng (OA hoặc APP) * @param redeemCode Mã quà tặng * @param voucherCode Mã giảm giá (tùy chọn) * @returns Thông tin đơn hàng đã tạo */ createOrderWithRedeemCode(accessToken: string, beneficiary: "OA" | "APP", redeemCode: string, voucherCode?: string): Promise<OrderData>; /** * Validate create order request * @param request Request to validate */ private validateCreateOrderRequest; /** * Kiểm tra thời gian có thể tạo đơn hàng * @returns true nếu trong thời gian cho phép tạo đơn hàng */ isOrderCreationTimeValid(): boolean; /** * Tính toán thời gian hết hạn của OTT (One Time Token) * @param createdTime Thời gian tạo đơn hàng (milliseconds) * @returns Thời gian hết hạn OTT (milliseconds) */ calculateOTTExpiration(createdTime: number): number; /** * Kiểm tra OTT còn hiệu lực hay không * @param createdTime Thời gian tạo đơn hàng (milliseconds) * @returns true nếu OTT còn hiệu lực */ isOTTValid(createdTime: number): boolean; /** * Xác nhận thanh toán đơn hàng * @param accessToken Access token của Official Account * @param request Thông tin xác nhận đơn hàng * @returns Thông tin đơn hàng đã được xác nhận thanh toán */ confirmOrder(accessToken: string, request: ConfirmOrderRequest): Promise<ConfirmedOrderData>; /** * Xác nhận thanh toán đơn hàng với order ID và verified token * @param accessToken Access token của Official Account * @param orderId ID đơn hàng * @param verifiedToken OTT token để xác nhận * @returns Thông tin đơn hàng đã được xác nhận thanh toán */ confirmOrderById(accessToken: string, orderId: string, verifiedToken: string): Promise<ConfirmedOrderData>; /** * Lấy thông tin sản phẩm theo ID * @param productId ID sản phẩm * @returns Thông tin sản phẩm hoặc undefined nếu không tìm thấy */ getProductInfo(productId: number): ProductInfo | undefined; /** * Lấy danh sách tất cả sản phẩm có sẵn * @returns Danh sách thông tin sản phẩm */ getAllProducts(): ProductInfo[]; /** * Lấy danh sách sản phẩm theo loại * @param category Loại sản phẩm * @returns Danh sách sản phẩm thuộc loại đó */ getProductsByCategory(category: 'subscription' | 'gmf' | 'quota'): ProductInfo[]; /** * Lấy danh sách sản phẩm theo đối tượng thụ hưởng * @param beneficiary Đối tượng thụ hưởng * @returns Danh sách sản phẩm phù hợp với đối tượng thụ hưởng */ getProductsByBeneficiary(beneficiary: "OA" | "APP"): ProductInfo[]; /** * Kiểm tra sản phẩm có phù hợp với đối tượng thụ hưởng không * @param productId ID sản phẩm * @param beneficiary Đối tượng thụ hưởng * @returns true nếu sản phẩm phù hợp với đối tượng thụ hưởng */ isProductCompatibleWithBeneficiary(productId: number, beneficiary: "OA" | "APP"): boolean; /** * Tạo đơn hàng gói OA Subscription * @param accessToken Access token của Official Account * @param subscriptionType Loại gói subscription * @param voucherCode Mã giảm giá (tùy chọn) * @returns Thông tin đơn hàng đã tạo */ createOASubscriptionOrder(accessToken: string, subscriptionType: 'advanced_6m' | 'advanced_12m' | 'premium_6m' | 'premium_12m', voucherCode?: string): Promise<OrderData>; /** * Tạo đơn hàng gói GMF (Group Message Framework) * @param accessToken Access token của Official Account * @param memberLimit Giới hạn số thành viên * @param voucherCode Mã giảm giá (tùy chọn) * @returns Thông tin đơn hàng đã tạo */ createGMFOrder(accessToken: string, memberLimit: 10 | 50 | 100 | 1000, voucherCode?: string): Promise<OrderData>; /** * Tạo đơn hàng gói quota tin nhắn giao dịch * @param accessToken Access token của Official Account * @param beneficiary Đối tượng thụ hưởng (OA hoặc APP) * @param quotaSize Kích thước gói quota * @param voucherCode Mã giảm giá (tùy chọn) * @returns Thông tin đơn hàng đã tạo */ createTransactionQuotaOrder(accessToken: string, beneficiary: "OA" | "APP", quotaSize: '5k' | '50k' | '500k', voucherCode?: string): Promise<OrderData>; /** * Tạo nhiều đơn hàng cùng lúc (batch operation) * @param accessToken Access token của Official Account * @param orders Danh sách đơn hàng cần tạo * @returns Danh sách kết quả tạo đơn hàng */ createMultipleOrders(accessToken: string, orders: CreateOrderRequest[]): Promise<Array<{ success: boolean; data?: OrderData; error?: string; }>>; /** * Tạo combo đơn hàng OA Premium + GMF * @param accessToken Access token của Official Account * @param premiumDuration Thời hạn gói Premium * @param gmfMemberLimit Giới hạn thành viên GMF * @param voucherCode Mã giảm giá (tùy chọn) * @returns Danh sách kết quả tạo đơn hàng */ createOAPremiumGMFCombo(accessToken: string, premiumDuration: '6m' | '12m', gmfMemberLimit: 10 | 50 | 100 | 1000, voucherCode?: string): Promise<{ premium: { success: boolean; data?: OrderData; error?: string; }; gmf: { success: boolean; data?: OrderData; error?: string; }; }>; /** * Gợi ý sản phẩm dựa trên nhu cầu * @param requirements Yêu cầu của khách hàng * @returns Danh sách sản phẩm được gợi ý */ recommendProducts(requirements: { beneficiary: "OA" | "APP"; budget?: 'low' | 'medium' | 'high'; features?: ('subscription' | 'group_messaging' | 'transaction_quota')[]; duration?: 'short' | 'long'; }): ProductInfo[]; /** * Validate confirm order request * @param request Request to validate */ private validateConfirmOrderRequest; } //# sourceMappingURL=purchase.service.d.ts.map