thawani-nodejs
Version:
Node.js library for Thawani Payment Gateway
133 lines (132 loc) • 3.74 kB
TypeScript
export { ThawaniClient } from './client';
export { Config } from './config';
export type { ThawaniConfig } from './config';
export { BaseResource } from './resources/base';
export { Checkout } from './resources/checkout';
export { Customers } from './resources/customers';
export { PaymentIntents } from './resources/payment-intents';
export { PaymentMethods } from './resources/payment-methods';
export { Payments } from './resources/payments';
export { Refunds } from './resources/refunds';
export { WebhookHandler } from './resources/webhooks';
export interface Metadata {
[key: string]: any;
}
export interface PaginationParams {
limit?: number;
skip?: number;
}
export type Currency = 'OMR';
export interface Product {
name: string;
unit_amount: number;
quantity: number;
}
export interface CheckoutSessionParams {
client_reference_id: string;
mode: 'payment' | 'subscription';
products?: Product[];
customer_id?: string;
success_url: string;
cancel_url: string;
save_card_on_success?: boolean;
expire_in_minutes?: number;
plan_id?: string;
metadata: Metadata;
}
export interface CheckoutSession {
session_id: string;
client_reference_id: string;
customer_id?: string;
products: Product[];
total_amount: number;
currency: Currency;
success_url: string;
cancel_url: string;
payment_status: 'unpaid' | 'paid' | 'cancelled';
mode: 'payment' | 'subscription';
invoice: string;
metadata: Metadata;
created_at: string;
expire_at: string;
}
export interface CustomerParams {
client_customer_id: string;
}
export interface Customer {
id: string;
customer_client_id: string;
}
export interface PaymentIntentParams {
payment_method_id?: string;
amount: number;
client_reference_id: string;
return_url: string;
metadata: Metadata;
}
export interface PaymentIntent {
id: string;
client_reference_id: string;
amount: number;
currency: Currency;
payment_method?: string;
next_action?: {
type: 'redirect';
url: string;
return_url: string;
};
status: 'requires_payment_method' | 'requires_action' | 'requires_confirmation' | 'succeeded' | 'cancelled';
metadata: Metadata;
created_at: string;
expire_at: string;
}
export interface PaymentMethod {
id: string;
bin: number;
masked_card: string;
expiry_month: number;
expiry_year: number;
nickname?: string;
brand: 'Visa' | 'MasterCard';
card_type: 'Debit' | 'Credit';
}
export interface Payment {
activity: string;
payment_id: string;
masked_card: string;
card_type: string;
status: 'inProcess' | 'successful' | 'failed';
amount: number;
fee: number;
refunded: boolean;
refunds: Refund[];
payment_intent?: string;
checkout_invoice?: string;
created_at: string;
reason?: string;
}
export interface RefundParams {
payment_id: string;
reason: string;
metadata: Metadata;
amount?: number;
}
export interface Refund {
amount: number;
refund_id: string;
payment_id: string;
status: 'successful' | 'failed';
reason: string;
metadata: Metadata;
created_at: string;
}
export interface WebhookEvent {
timestamp: string;
signature: string;
body: any;
}
export { ThawaniError, APIError, AuthenticationError, ValidationError } from './utils/errors';
export { HttpClient } from './utils/http-client';
export { validateRequired, validateAmount, validateExpiry, validateMetadata, validateProducts } from './utils/validation';
export { API_BASE_URL, CHECKOUT_URL, API_ENDPOINTS, DEFAULT_TIMEOUT } from './constants';
export declare const VERSION = "1.0.0";