UNPKG

@warriorteam/redai-zalo-sdk

Version:

Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account, ZNS, Consultation Service, Group Messaging, and Social APIs

110 lines 4.55 kB
import { ZaloClient } from "../clients/zalo-client"; import { SendMessageResponse, TransactionMessage, MessageRecipient } from "../types/message"; /** * Service xử lý các API tin nhắn giao dịch của Zalo Official Account * * ĐIỀU KIỆN GỬI TIN GIAO DỊCH: * * 1. THỜI GIAN GỬI: * - Chỉ được gửi trong vòng 24 giờ kể từ khi người dùng tương tác cuối cùng với OA * - Tương tác bao gồm: gửi tin nhắn, nhấn button, gọi điện, truy cập website từ OA * * 2. NỘI DUNG TIN NHẮN: * - Phải liên quan trực tiếp đến giao dịch thực tế * - Bao gồm: xác nhận đơn hàng, thông báo thanh toán, cập nhật trạng thái giao hàng * - Không được chứa nội dung quảng cáo, khuyến mãi * * 3. TẦN SUẤT GỬI: * - Tối đa 3 tin nhắn giao dịch/ngày cho mỗi người dùng * - Phải có khoảng cách ít nhất 1 giờ giữa các tin nhắn * * 4. ĐỊNH DẠNG: * - Phải sử dụng template được Zalo phê duyệt trước * - Template phải tuân thủ format chuẩn của tin giao dịch * * 5. NGƯỜI DÙNG: * - Người dùng phải đã follow OA * - Người dùng không được block OA * - Người dùng phải có tương tác gần đây với OA * * 6. OFFICIAL ACCOUNT: * - OA phải được xác minh (verified) * - OA phải có quyền gửi tin giao dịch được Zalo cấp phép * - OA không được vi phạm chính sách của Zalo * * LỖI THƯỜNG GẶP: * - 1004: Người dùng chưa follow OA hoặc đã unfollow * - 1005: Vượt quá thời gian 24 giờ từ lần tương tác cuối * - 1006: Vượt quá giới hạn 3 tin/ngày * - 1007: Template chưa được phê duyệt hoặc không hợp lệ * - 1008: Nội dung tin nhắn vi phạm chính sách */ export declare class TransactionService { private readonly client; private readonly transactionApiUrl; constructor(client: ZaloClient); /** * Gửi tin nhắn giao dịch * @param accessToken Access token của Official Account * @param recipient Thông tin người nhận * @param message Nội dung tin nhắn giao dịch * @returns Thông tin tin nhắn đã gửi */ sendTransactionMessage(accessToken: string, recipient: MessageRecipient, message: TransactionMessage): Promise<SendMessageResponse>; /** * Gửi tin nhắn xác nhận đơn hàng * @param accessToken Access token của Official Account * @param recipient Thông tin người nhận * @param orderInfo Thông tin đơn hàng * @returns Thông tin tin nhắn đã gửi */ sendOrderConfirmation(accessToken: string, recipient: MessageRecipient, orderInfo: { orderId: string; orderDate: string; totalAmount: number; items: Array<{ name: string; quantity: number; price: number; }>; customerInfo: { name: string; phone: string; address: string; }; }): Promise<SendMessageResponse>; /** * Gửi tin nhắn thông báo thanh toán * @param accessToken Access token của Official Account * @param recipient Thông tin người nhận * @param paymentInfo Thông tin thanh toán * @returns Thông tin tin nhắn đã gửi */ sendPaymentNotification(accessToken: string, recipient: MessageRecipient, paymentInfo: { orderId: string; amount: number; paymentMethod: string; paymentDate: string; status: "success" | "failed" | "pending"; }): Promise<SendMessageResponse>; /** * Gửi tin nhắn cập nhật trạng thái giao hàng * @param accessToken Access token của Official Account * @param recipient Thông tin người nhận * @param shippingInfo Thông tin giao hàng * @returns Thông tin tin nhắn đã gửi */ sendShippingUpdate(accessToken: string, recipient: MessageRecipient, shippingInfo: { orderId: string; trackingNumber: string; status: "preparing" | "shipped" | "in_transit" | "delivered"; estimatedDelivery?: string; carrier?: string; }): Promise<SendMessageResponse>; /** * Validate transaction message format * @param message Transaction message to validate */ private validateTransactionMessage; } //# sourceMappingURL=transaction.service.d.ts.map