pancake-client-sdk
Version:
Official TypeScript SDK for Pancake POS API
134 lines (133 loc) • 3.44 kB
TypeScript
export interface PaymentGateway {
id: string;
name: string;
code: PaymentGatewayCode;
is_active: boolean;
settings: PaymentGatewaySettings;
supported_currencies: string[];
created_at: string;
updated_at: string;
}
export type PaymentGatewayCode = 'stripe' | 'paypal' | 'vnpay' | 'momo' | 'zalopay' | 'grabpay' | 'bank_transfer' | 'cod';
export interface PaymentGatewaySettings {
live_mode: boolean;
merchant_id?: string;
api_key?: string;
secret_key?: string;
webhook_key?: string;
payment_methods?: string[];
installment_terms?: number[];
transaction_fee?: {
fixed?: number;
percentage?: number;
};
custom_settings?: Record<string, any>;
}
export interface PaymentMethod {
id: string;
gateway_code: PaymentGatewayCode;
type: string;
name: string;
description?: string;
icon_url?: string;
is_active: boolean;
currencies: string[];
min_amount?: number;
max_amount?: number;
settings?: Record<string, any>;
}
export interface PaymentTransaction {
id: string;
order_id: string;
gateway_code: PaymentGatewayCode;
amount: number;
currency: string;
status: PaymentStatus;
method: string;
gateway_reference?: string;
gateway_response?: Record<string, any>;
error?: {
code: string;
message: string;
};
refund_status?: RefundStatus;
refunded_amount?: number;
created_at: string;
updated_at: string;
completed_at?: string;
}
export type PaymentStatus = 'pending' | 'processing' | 'completed' | 'failed' | 'cancelled' | 'expired';
export type RefundStatus = 'none' | 'partial' | 'full' | 'processing' | 'failed';
export interface CreatePaymentRequest {
order_id: string;
amount: number;
currency: string;
gateway_code: PaymentGatewayCode;
method?: string;
return_url?: string;
cancel_url?: string;
metadata?: Record<string, any>;
}
export interface PaymentResponse {
transaction_id: string;
checkout_url?: string;
qr_code?: string;
deep_link?: string;
}
export interface RefundRequest {
transaction_id: string;
amount: number;
reason?: string;
metadata?: Record<string, any>;
}
export interface PaymentAnalytics {
total_transactions: number;
total_amount: number;
successful_rate: number;
by_gateway: {
gateway_code: PaymentGatewayCode;
transactions: number;
amount: number;
success_rate: number;
}[];
by_method: {
method: string;
transactions: number;
amount: number;
}[];
daily_stats: {
date: string;
transactions: number;
amount: number;
}[];
}
export interface PaymentWebhookEvent {
id: string;
type: string;
gateway_code: PaymentGatewayCode;
created_at: string;
data: {
transaction_id: string;
status: PaymentStatus;
gateway_reference?: string;
metadata?: Record<string, any>;
};
}
export interface InstallmentPlan {
term: number;
monthly_amount: number;
total_amount: number;
interest_rate: number;
fee_amount: number;
bank_code?: string;
}
export interface BankTransferInfo {
bank_name: string;
account_number: string;
account_name: string;
branch?: string;
reference_code: string;
amount: number;
expires_at: string;
qr_code?: string;
}