@warriorteam/redai-zalo-sdk 1.30.0 → 1.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,77 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.31.0] - 2025-01-05
6
+
7
+ ### ✨ Added - Complete Purchase API Support
8
+
9
+ #### 🛒 New Purchase Service
10
+ - **`PurchaseService`** - Complete service for Zalo OA Purchase API v3.0
11
+ - Full support for creating and confirming orders for OA products and services
12
+ - Type-safe order management with comprehensive validation
13
+
14
+ #### 🎯 Core Purchase Functions
15
+ - **`createOrder()`** - Create orders with product_id or redeem_code
16
+ - **`confirmOrder()`** - Confirm order payment with OTT (One Time Token)
17
+ - **`createOrderWithProduct()`** - Create order with specific product ID
18
+ - **`createOrderWithRedeemCode()`** - Create order with gift/redeem code
19
+ - **`confirmOrderById()`** - Confirm order with separate order ID and token
20
+
21
+ #### 🏷️ Specialized Product APIs
22
+ - **`createOASubscriptionOrder()`** - Create OA subscription orders (Advanced/Premium 6m/12m)
23
+ - **`createGMFOrder()`** - Create Group Message Framework orders (10/50/100/1000 members)
24
+ - **`createTransactionQuotaOrder()`** - Create transaction message quota orders (5k/50k/500k)
25
+
26
+ #### 📦 Batch & Combo Operations
27
+ - **`createMultipleOrders()`** - Create multiple orders in batch with error isolation
28
+ - **`createOAPremiumGMFCombo()`** - Create Premium + GMF combo packages
29
+ - **`recommendProducts()`** - Smart product recommendation system
30
+
31
+ #### 🗂️ Product Management
32
+ - **`getProductInfo()`** - Get detailed product information by ID
33
+ - **`getAllProducts()`** - Get all available products
34
+ - **`getProductsByCategory()`** - Filter products by category (subscription/gmf/quota)
35
+ - **`getProductsByBeneficiary()`** - Filter products by beneficiary (OA/APP)
36
+ - **`isProductCompatibleWithBeneficiary()`** - Validate product compatibility
37
+
38
+ #### 🕐 Order Timing & Validation
39
+ - **`isOrderCreationTimeValid()`** - Check if current time allows order creation (00:01-23:54)
40
+ - **`calculateOTTExpiration()`** - Calculate OTT expiration time (5 minutes)
41
+ - **`isOTTValid()`** - Check if OTT is still valid
42
+
43
+ #### 📋 TypeScript Interfaces & Types
44
+ - **`CreateOrderRequest`** - Union type for product_id or redeem_code orders
45
+ - **`CreateOrderWithProductRequest`** - Interface for product-based orders
46
+ - **`CreateOrderWithRedeemRequest`** - Interface for redeem code orders
47
+ - **`ConfirmOrderRequest`** - Interface for order confirmation
48
+ - **`OrderData`** - Complete order data with verified_token (OTT)
49
+ - **`ConfirmedOrderData`** - Confirmed order data (without OTT)
50
+ - **`ProductInfo`** - Product information interface
51
+ - **`BeneficiaryType`** - Type for OA/APP beneficiaries
52
+
53
+ #### 🏪 Complete Product Catalog
54
+ - **OA Subscription Products**:
55
+ - OA Advanced 6/12 months
56
+ - OA Premium 6/12 months
57
+ - **GMF Products**:
58
+ - GMF 10/50/100/1000 members
59
+ - **Transaction Quota Products**:
60
+ - 5k/50k/500k transaction messages (1 month)
61
+
62
+ #### ✅ Advanced Features
63
+ - **Automatic Validation**: Product-beneficiary compatibility checking
64
+ - **Error Isolation**: Batch operations continue on individual failures
65
+ - **Smart Recommendations**: AI-powered product suggestions based on requirements
66
+ - **Time Validation**: Automatic order creation time window checking
67
+ - **OTT Management**: Complete One Time Token lifecycle management
68
+ - **Type Safety**: Full TypeScript support with compile-time validation
69
+
70
+ #### 🔧 Error Handling & Validation
71
+ - Comprehensive error codes for all purchase scenarios
72
+ - Detailed validation for all request parameters
73
+ - Graceful error handling in batch operations
74
+ - Clear error messages with context information
75
+
5
76
  ## [1.30.0] - 2025-01-05
6
77
 
7
78
  ### ✨ Added - Template Message Support for ConsultationService
package/dist/index.d.ts CHANGED
@@ -17,6 +17,7 @@ export * from "./types/article";
17
17
  export * from "./types/broadcast";
18
18
  export * from "./types/promotion";
19
19
  export * from "./types/consultation";
20
+ export * from "./types/purchase";
20
21
  export * from "./constants/zns.constants";
21
22
  export type { BaseMessage, TextMessage, ImageMessage, FileMessage, StickerMessage, TemplateMessage as MessageTemplateMessage, ReactionMessage as MessageReactionMessage, Message, MessageRecipient, SendMessageRequest, SendMessageResponse, UploadFileResponse, MessageStatus, MessageEvent, ConsultationTextMessage, ConsultationImageMessage, ConsultationFileMessage, ConsultationStickerMessage, ConsultationQuoteMessage, ConsultationRequestInfoMessage, TransactionMessage, AnonymousTextMessage, AnonymousImageMessage, AnonymousFileMessage, AnonymousStickerMessage, MiniAppMessage, ExtendedMessage, } from "./types/message";
22
23
  export * from "./types/webhook";
@@ -40,6 +41,7 @@ export { PromotionService } from "./services/promotion.service";
40
41
  export { GeneralMessageService } from "./services/general-message.service";
41
42
  export { MessageManagementService, UploadFileResult, UploadImageResult, MessageQuotaInfo, ConversationMessage, Conversation, MessagePagination } from "./services/message-management.service";
42
43
  export { BroadcastService } from "./services/broadcast.service";
44
+ export { PurchaseService } from "./services/purchase.service";
43
45
  export { ZaloSDK } from "./zalo-sdk";
44
46
  export { ZaloSDK as default } from "./zalo-sdk";
45
47
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -24,7 +24,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
24
24
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
25
25
  };
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.default = exports.ZaloSDK = exports.BroadcastService = exports.MessageManagementService = exports.GeneralMessageService = exports.PromotionService = exports.TransactionService = exports.ConsultationService = exports.VideoUploadService = exports.ArticleService = exports.GroupManagementService = exports.GroupMessageService = exports.ZNSService = exports.UserService = exports.OAService = exports.AuthService = exports.ZaloClient = exports.BaseClient = exports.getMessageDirection = exports.isOAToGroupMessageEvent = exports.isOAToUserMessageEvent = exports.isGroupMessageEvent = exports.isUserMessageEvent = exports.isFromPersonal = exports.isFromGroup = exports.isOASendGroupGifEvent = exports.isOASendGroupStickerEvent = exports.isOASendGroupFileEvent = exports.isOASendGroupImageEvent = exports.isOASendGroupTextEvent = exports.isOASendGifEvent = exports.isOASendStickerEvent = exports.isOASendFileEvent = exports.isOASendImageEvent = exports.isOASendTextEvent = exports.isUserGroupMessageEvent = exports.isUserSendGroupFileEvent = exports.isUserSendGroupAudioEvent = exports.isUserSendGroupVideoEvent = exports.isUserSendGroupImageEvent = exports.isUserSendGroupTextEvent = void 0;
27
+ exports.default = exports.ZaloSDK = exports.PurchaseService = exports.BroadcastService = exports.MessageManagementService = exports.GeneralMessageService = exports.PromotionService = exports.TransactionService = exports.ConsultationService = exports.VideoUploadService = exports.ArticleService = exports.GroupManagementService = exports.GroupMessageService = exports.ZNSService = exports.UserService = exports.OAService = exports.AuthService = exports.ZaloClient = exports.BaseClient = exports.getMessageDirection = exports.isOAToGroupMessageEvent = exports.isOAToUserMessageEvent = exports.isGroupMessageEvent = exports.isUserMessageEvent = exports.isFromPersonal = exports.isFromGroup = exports.isOASendGroupGifEvent = exports.isOASendGroupStickerEvent = exports.isOASendGroupFileEvent = exports.isOASendGroupImageEvent = exports.isOASendGroupTextEvent = exports.isOASendGifEvent = exports.isOASendStickerEvent = exports.isOASendFileEvent = exports.isOASendImageEvent = exports.isOASendTextEvent = exports.isUserGroupMessageEvent = exports.isUserSendGroupFileEvent = exports.isUserSendGroupAudioEvent = exports.isUserSendGroupVideoEvent = exports.isUserSendGroupImageEvent = exports.isUserSendGroupTextEvent = void 0;
28
28
  // Export types
29
29
  __exportStar(require("./types/common"), exports);
30
30
  __exportStar(require("./types/auth"), exports);
@@ -35,6 +35,7 @@ __exportStar(require("./types/article"), exports);
35
35
  __exportStar(require("./types/broadcast"), exports);
36
36
  __exportStar(require("./types/promotion"), exports);
37
37
  __exportStar(require("./types/consultation"), exports);
38
+ __exportStar(require("./types/purchase"), exports);
38
39
  // Export ZNS constants and helpers
39
40
  __exportStar(require("./constants/zns.constants"), exports);
40
41
  // Export webhook types (avoiding conflicts with message and group types)
@@ -103,6 +104,8 @@ var message_management_service_1 = require("./services/message-management.servic
103
104
  Object.defineProperty(exports, "MessageManagementService", { enumerable: true, get: function () { return message_management_service_1.MessageManagementService; } });
104
105
  var broadcast_service_1 = require("./services/broadcast.service");
105
106
  Object.defineProperty(exports, "BroadcastService", { enumerable: true, get: function () { return broadcast_service_1.BroadcastService; } });
107
+ var purchase_service_1 = require("./services/purchase.service");
108
+ Object.defineProperty(exports, "PurchaseService", { enumerable: true, get: function () { return purchase_service_1.PurchaseService; } });
106
109
  // Export main SDK class
107
110
  var zalo_sdk_1 = require("./zalo-sdk");
108
111
  Object.defineProperty(exports, "ZaloSDK", { enumerable: true, get: function () { return zalo_sdk_1.ZaloSDK; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;AAEH,eAAe;AACf,iDAA+B;AAC/B,+CAA6B;AAC7B,6CAA2B;AAC3B,+CAA6B;AAC7B,8CAA4B;AAC5B,kDAAgC;AAChC,oDAAkC;AAClC,oDAAkC;AAClC,uDAAqC;AAErC,mCAAmC;AACnC,4DAA0C;AAkC1C,yEAAyE;AACzE,kDAAgC;AAEhC,yEAAyE;AACzE,mDAoB6B;AAlB3B,uHAAA,wBAAwB,OAAA;AACxB,wHAAA,yBAAyB,OAAA;AACzB,wHAAA,yBAAyB,OAAA;AACzB,wHAAA,yBAAyB,OAAA;AACzB,uHAAA,wBAAwB,OAAA;AACxB,sHAAA,uBAAuB,OAAA;AACvB,gHAAA,iBAAiB,OAAA;AACjB,iHAAA,kBAAkB,OAAA;AAClB,gHAAA,iBAAiB,OAAA;AACjB,mHAAA,oBAAoB,OAAA;AACpB,+GAAA,gBAAgB,OAAA;AAChB,qHAAA,sBAAsB,OAAA;AACtB,sHAAA,uBAAuB,OAAA;AACvB,qHAAA,sBAAsB,OAAA;AACtB,wHAAA,yBAAyB,OAAA;AACzB,oHAAA,qBAAqB,OAAA;AACrB,0GAAA,WAAW,OAAA;AACX,6GAAA,cAAc,OAAA;AAEhB,kCAAkC;AAClC,2CAMyB;AALvB,6GAAA,kBAAkB,OAAA;AAClB,8GAAA,mBAAmB,OAAA;AACnB,iHAAA,sBAAsB,OAAA;AACtB,kHAAA,uBAAuB,OAAA;AACvB,8GAAA,mBAAmB,OAAA;AAoFrB,iBAAiB;AACjB,qDAAmD;AAA1C,yGAAA,UAAU,OAAA;AACnB,qDAAmD;AAA1C,yGAAA,UAAU,OAAA;AAEnB,kBAAkB;AAClB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,oDAAkD;AAAzC,uGAAA,SAAS,OAAA;AAClB,2GAA2G;AAC3G,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,+DAA+D;AAC/D,sDAAoD;AAA3C,yGAAA,UAAU,OAAA;AACnB,0EAAuE;AAA9D,4HAAA,mBAAmB,OAAA;AAC5B,gFAA6E;AAApE,kIAAA,sBAAsB,OAAA;AAC/B,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,wEAAqE;AAA5D,0HAAA,kBAAkB,OAAA;AAE3B,iDAAiD;AACjD,wEAAsE;AAA7D,2HAAA,mBAAmB,OAAA;AAC5B,sEAAoE;AAA3D,yHAAA,kBAAkB,OAAA;AAC3B,kEAAgE;AAAvD,qHAAA,gBAAgB,OAAA;AACzB,8EAA2E;AAAlE,gIAAA,qBAAqB,OAAA;AAC9B,oFAQ+C;AAP7C,sIAAA,wBAAwB,OAAA;AAQ1B,kEAAgE;AAAvD,qHAAA,gBAAgB,OAAA;AAEzB,wBAAwB;AACxB,uCAAqC;AAA5B,mGAAA,OAAO,OAAA;AAEhB,iBAAiB;AACjB,uCAAgD;AAAvC,mGAAA,OAAO,OAAW"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;AAEH,eAAe;AACf,iDAA+B;AAC/B,+CAA6B;AAC7B,6CAA2B;AAC3B,+CAA6B;AAC7B,8CAA4B;AAC5B,kDAAgC;AAChC,oDAAkC;AAClC,oDAAkC;AAClC,uDAAqC;AACrC,mDAAiC;AAEjC,mCAAmC;AACnC,4DAA0C;AAkC1C,yEAAyE;AACzE,kDAAgC;AAEhC,yEAAyE;AACzE,mDAoB6B;AAlB3B,uHAAA,wBAAwB,OAAA;AACxB,wHAAA,yBAAyB,OAAA;AACzB,wHAAA,yBAAyB,OAAA;AACzB,wHAAA,yBAAyB,OAAA;AACzB,uHAAA,wBAAwB,OAAA;AACxB,sHAAA,uBAAuB,OAAA;AACvB,gHAAA,iBAAiB,OAAA;AACjB,iHAAA,kBAAkB,OAAA;AAClB,gHAAA,iBAAiB,OAAA;AACjB,mHAAA,oBAAoB,OAAA;AACpB,+GAAA,gBAAgB,OAAA;AAChB,qHAAA,sBAAsB,OAAA;AACtB,sHAAA,uBAAuB,OAAA;AACvB,qHAAA,sBAAsB,OAAA;AACtB,wHAAA,yBAAyB,OAAA;AACzB,oHAAA,qBAAqB,OAAA;AACrB,0GAAA,WAAW,OAAA;AACX,6GAAA,cAAc,OAAA;AAEhB,kCAAkC;AAClC,2CAMyB;AALvB,6GAAA,kBAAkB,OAAA;AAClB,8GAAA,mBAAmB,OAAA;AACnB,iHAAA,sBAAsB,OAAA;AACtB,kHAAA,uBAAuB,OAAA;AACvB,8GAAA,mBAAmB,OAAA;AAoFrB,iBAAiB;AACjB,qDAAmD;AAA1C,yGAAA,UAAU,OAAA;AACnB,qDAAmD;AAA1C,yGAAA,UAAU,OAAA;AAEnB,kBAAkB;AAClB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,oDAAkD;AAAzC,uGAAA,SAAS,OAAA;AAClB,2GAA2G;AAC3G,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,+DAA+D;AAC/D,sDAAoD;AAA3C,yGAAA,UAAU,OAAA;AACnB,0EAAuE;AAA9D,4HAAA,mBAAmB,OAAA;AAC5B,gFAA6E;AAApE,kIAAA,sBAAsB,OAAA;AAC/B,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,wEAAqE;AAA5D,0HAAA,kBAAkB,OAAA;AAE3B,iDAAiD;AACjD,wEAAsE;AAA7D,2HAAA,mBAAmB,OAAA;AAC5B,sEAAoE;AAA3D,yHAAA,kBAAkB,OAAA;AAC3B,kEAAgE;AAAvD,qHAAA,gBAAgB,OAAA;AACzB,8EAA2E;AAAlE,gIAAA,qBAAqB,OAAA;AAC9B,oFAQ+C;AAP7C,sIAAA,wBAAwB,OAAA;AAQ1B,kEAAgE;AAAvD,qHAAA,gBAAgB,OAAA;AACzB,gEAA8D;AAArD,mHAAA,eAAe,OAAA;AAExB,wBAAwB;AACxB,uCAAqC;AAA5B,mGAAA,OAAO,OAAA;AAEhB,iBAAiB;AACjB,uCAAgD;AAAvC,mGAAA,OAAO,OAAW"}
@@ -0,0 +1,209 @@
1
+ import { ZaloClient } from "../clients/zalo-client";
2
+ import { CreateOrderRequest, OrderData, ConfirmOrderRequest, ConfirmedOrderData, ProductInfo } from "../types/purchase";
3
+ /**
4
+ * Service xử lý các API mua sản phẩm/dịch vụ OA của Zalo
5
+ *
6
+ * ĐIỀU KIỆN SỬ DỤNG PURCHASE API:
7
+ *
8
+ * 1. QUYỀN TRUY CẬP:
9
+ * - Ứng dụng cần được cấp quyền quản lý "Mua sản phẩm dịch vụ OA"
10
+ * - OA phải được xác minh và có quyền bán sản phẩm/dịch vụ
11
+ *
12
+ * 2. THỜI GIAN TẠO ĐỚN:
13
+ * - Order chỉ được tạo từ 00:01 đến 23:54 hàng ngày
14
+ * - Không thể tạo đơn hàng trong khung giờ bảo trì (23:55 - 00:00)
15
+ *
16
+ * 3. SẢN PHẨM/DỊCH VỤ:
17
+ * - Sản phẩm phải có sẵn và được phép bán
18
+ * - Đối tượng thụ hưởng (beneficiary) phải phù hợp với sản phẩm
19
+ * - Có thể sử dụng product_id HOẶC redeem_code, không được dùng cả hai
20
+ *
21
+ * 4. THANH TOÁN:
22
+ * - Tài khoản ZCA phải có đủ số dư để thanh toán
23
+ * - Voucher code (nếu có) phải hợp lệ và chưa hết hạn
24
+ *
25
+ * 5. XÁC THỰC:
26
+ * - Mỗi đơn hàng sẽ có verified_token (OTT) để xác nhận thanh toán
27
+ * - OTT có hiệu lực trong vòng 5 phút kể từ khi tạo đơn
28
+ *
29
+ * LỖI THƯỜNG GẶP:
30
+ * - 1001: Beneficiary không hợp lệ
31
+ * - 1002: Product ID không tồn tại hoặc không khả dụng
32
+ * - 1003: Redeem code không hợp lệ hoặc đã được sử dụng
33
+ * - 1004: Voucher code không hợp lệ hoặc đã hết hạn
34
+ * - 1005: Sản phẩm không khả dụng cho đối tượng thụ hưởng
35
+ * - 1006: Số dư tài khoản không đủ
36
+ * - 1007: Ngoài thời gian cho phép tạo đơn hàng
37
+ * - 1008: Đơn hàng trùng lặp
38
+ * - 1009: Không có quyền truy cập
39
+ */
40
+ export declare class PurchaseService {
41
+ private readonly client;
42
+ private readonly purchaseApiUrl;
43
+ constructor(client: ZaloClient);
44
+ /**
45
+ * Tạo đơn hàng mua sản phẩm/dịch vụ OA
46
+ * @param accessToken Access token của Official Account
47
+ * @param request Thông tin đơn hàng cần tạo
48
+ * @returns Thông tin đơn hàng đã tạo
49
+ */
50
+ createOrder(accessToken: string, request: CreateOrderRequest): Promise<OrderData>;
51
+ /**
52
+ * Tạo đơn hàng với product_id
53
+ * @param accessToken Access token của Official Account
54
+ * @param beneficiary Đối tượng thụ hưởng (OA hoặc APP)
55
+ * @param productId ID sản phẩm
56
+ * @param voucherCode Mã giảm giá (tùy chọn)
57
+ * @returns Thông tin đơn hàng đã tạo
58
+ */
59
+ createOrderWithProduct(accessToken: string, beneficiary: "OA" | "APP", productId: number, voucherCode?: string): Promise<OrderData>;
60
+ /**
61
+ * Tạo đơn hàng với redeem_code (mã quà tặng)
62
+ * @param accessToken Access token của Official Account
63
+ * @param beneficiary Đối tượng thụ hưởng (OA hoặc APP)
64
+ * @param redeemCode Mã quà tặng
65
+ * @param voucherCode Mã giảm giá (tùy chọn)
66
+ * @returns Thông tin đơn hàng đã tạo
67
+ */
68
+ createOrderWithRedeemCode(accessToken: string, beneficiary: "OA" | "APP", redeemCode: string, voucherCode?: string): Promise<OrderData>;
69
+ /**
70
+ * Validate create order request
71
+ * @param request Request to validate
72
+ */
73
+ private validateCreateOrderRequest;
74
+ /**
75
+ * Kiểm tra thời gian có thể tạo đơn hàng
76
+ * @returns true nếu trong thời gian cho phép tạo đơn hàng
77
+ */
78
+ isOrderCreationTimeValid(): boolean;
79
+ /**
80
+ * Tính toán thời gian hết hạn của OTT (One Time Token)
81
+ * @param createdTime Thời gian tạo đơn hàng (milliseconds)
82
+ * @returns Thời gian hết hạn OTT (milliseconds)
83
+ */
84
+ calculateOTTExpiration(createdTime: number): number;
85
+ /**
86
+ * Kiểm tra OTT còn hiệu lực hay không
87
+ * @param createdTime Thời gian tạo đơn hàng (milliseconds)
88
+ * @returns true nếu OTT còn hiệu lực
89
+ */
90
+ isOTTValid(createdTime: number): boolean;
91
+ /**
92
+ * Xác nhận thanh toán đơn hàng
93
+ * @param accessToken Access token của Official Account
94
+ * @param request Thông tin xác nhận đơn hàng
95
+ * @returns Thông tin đơn hàng đã được xác nhận thanh toán
96
+ */
97
+ confirmOrder(accessToken: string, request: ConfirmOrderRequest): Promise<ConfirmedOrderData>;
98
+ /**
99
+ * Xác nhận thanh toán đơn hàng với order ID và verified token
100
+ * @param accessToken Access token của Official Account
101
+ * @param orderId ID đơn hàng
102
+ * @param verifiedToken OTT token để xác nhận
103
+ * @returns Thông tin đơn hàng đã được xác nhận thanh toán
104
+ */
105
+ confirmOrderById(accessToken: string, orderId: string, verifiedToken: string): Promise<ConfirmedOrderData>;
106
+ /**
107
+ * Lấy thông tin sản phẩm theo ID
108
+ * @param productId ID sản phẩm
109
+ * @returns Thông tin sản phẩm hoặc undefined nếu không tìm thấy
110
+ */
111
+ getProductInfo(productId: number): ProductInfo | undefined;
112
+ /**
113
+ * Lấy danh sách tất cả sản phẩm có sẵn
114
+ * @returns Danh sách thông tin sản phẩm
115
+ */
116
+ getAllProducts(): ProductInfo[];
117
+ /**
118
+ * Lấy danh sách sản phẩm theo loại
119
+ * @param category Loại sản phẩm
120
+ * @returns Danh sách sản phẩm thuộc loại đó
121
+ */
122
+ getProductsByCategory(category: 'subscription' | 'gmf' | 'quota'): ProductInfo[];
123
+ /**
124
+ * Lấy danh sách sản phẩm theo đối tượng thụ hưởng
125
+ * @param beneficiary Đối tượng thụ hưởng
126
+ * @returns Danh sách sản phẩm phù hợp với đối tượng thụ hưởng
127
+ */
128
+ getProductsByBeneficiary(beneficiary: "OA" | "APP"): ProductInfo[];
129
+ /**
130
+ * Kiểm tra sản phẩm có phù hợp với đối tượng thụ hưởng không
131
+ * @param productId ID sản phẩm
132
+ * @param beneficiary Đối tượng thụ hưởng
133
+ * @returns true nếu sản phẩm phù hợp với đối tượng thụ hưởng
134
+ */
135
+ isProductCompatibleWithBeneficiary(productId: number, beneficiary: "OA" | "APP"): boolean;
136
+ /**
137
+ * Tạo đơn hàng gói OA Subscription
138
+ * @param accessToken Access token của Official Account
139
+ * @param subscriptionType Loại gói subscription
140
+ * @param voucherCode Mã giảm giá (tùy chọn)
141
+ * @returns Thông tin đơn hàng đã tạo
142
+ */
143
+ createOASubscriptionOrder(accessToken: string, subscriptionType: 'advanced_6m' | 'advanced_12m' | 'premium_6m' | 'premium_12m', voucherCode?: string): Promise<OrderData>;
144
+ /**
145
+ * Tạo đơn hàng gói GMF (Group Message Framework)
146
+ * @param accessToken Access token của Official Account
147
+ * @param memberLimit Giới hạn số thành viên
148
+ * @param voucherCode Mã giảm giá (tùy chọn)
149
+ * @returns Thông tin đơn hàng đã tạo
150
+ */
151
+ createGMFOrder(accessToken: string, memberLimit: 10 | 50 | 100 | 1000, voucherCode?: string): Promise<OrderData>;
152
+ /**
153
+ * Tạo đơn hàng gói quota tin nhắn giao dịch
154
+ * @param accessToken Access token của Official Account
155
+ * @param beneficiary Đối tượng thụ hưởng (OA hoặc APP)
156
+ * @param quotaSize Kích thước gói quota
157
+ * @param voucherCode Mã giảm giá (tùy chọn)
158
+ * @returns Thông tin đơn hàng đã tạo
159
+ */
160
+ createTransactionQuotaOrder(accessToken: string, beneficiary: "OA" | "APP", quotaSize: '5k' | '50k' | '500k', voucherCode?: string): Promise<OrderData>;
161
+ /**
162
+ * Tạo nhiều đơn hàng cùng lúc (batch operation)
163
+ * @param accessToken Access token của Official Account
164
+ * @param orders Danh sách đơn hàng cần tạo
165
+ * @returns Danh sách kết quả tạo đơn hàng
166
+ */
167
+ createMultipleOrders(accessToken: string, orders: CreateOrderRequest[]): Promise<Array<{
168
+ success: boolean;
169
+ data?: OrderData;
170
+ error?: string;
171
+ }>>;
172
+ /**
173
+ * Tạo combo đơn hàng OA Premium + GMF
174
+ * @param accessToken Access token của Official Account
175
+ * @param premiumDuration Thời hạn gói Premium
176
+ * @param gmfMemberLimit Giới hạn thành viên GMF
177
+ * @param voucherCode Mã giảm giá (tùy chọn)
178
+ * @returns Danh sách kết quả tạo đơn hàng
179
+ */
180
+ createOAPremiumGMFCombo(accessToken: string, premiumDuration: '6m' | '12m', gmfMemberLimit: 10 | 50 | 100 | 1000, voucherCode?: string): Promise<{
181
+ premium: {
182
+ success: boolean;
183
+ data?: OrderData;
184
+ error?: string;
185
+ };
186
+ gmf: {
187
+ success: boolean;
188
+ data?: OrderData;
189
+ error?: string;
190
+ };
191
+ }>;
192
+ /**
193
+ * Gợi ý sản phẩm dựa trên nhu cầu
194
+ * @param requirements Yêu cầu của khách hàng
195
+ * @returns Danh sách sản phẩm được gợi ý
196
+ */
197
+ recommendProducts(requirements: {
198
+ beneficiary: "OA" | "APP";
199
+ budget?: 'low' | 'medium' | 'high';
200
+ features?: ('subscription' | 'group_messaging' | 'transaction_quota')[];
201
+ duration?: 'short' | 'long';
202
+ }): ProductInfo[];
203
+ /**
204
+ * Validate confirm order request
205
+ * @param request Request to validate
206
+ */
207
+ private validateConfirmOrderRequest;
208
+ }
209
+ //# sourceMappingURL=purchase.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"purchase.service.d.ts","sourceRoot":"","sources":["../../src/services/purchase.service.ts"],"names":[],"mappings":"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"}