@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
110 lines • 4.55 kB
TypeScript
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