@zed-io/wam-payment-sdk
Version:
Official WAM Payment SDK for creating and signing payment links
94 lines (91 loc) • 2.95 kB
TypeScript
interface PaymentLinkParams {
amount: number;
currency: 'TTD' | 'USD';
reference: string;
returnUrl?: string;
}
interface WamPaymentConfig {
businessId: string;
privateKey: string;
}
interface PaymentLinkResponse {
url: string;
signature: string;
timestamp: number;
payload: string;
}
interface ValidationError {
field: string;
message: string;
}
declare class WamPaymentError extends Error {
code: string;
validationErrors?: ValidationError[] | undefined;
constructor(message: string, code: string, validationErrors?: ValidationError[] | undefined);
}
declare enum WamPaymentErrorCode {
INVALID_CONFIG = "INVALID_CONFIG",
INVALID_AMOUNT = "INVALID_AMOUNT",
INVALID_CURRENCY = "INVALID_CURRENCY",
INVALID_REFERENCE = "INVALID_REFERENCE",
INVALID_RETURN_URL = "INVALID_RETURN_URL",
SIGNING_ERROR = "SIGNING_ERROR",
VALIDATION_ERROR = "VALIDATION_ERROR"
}
declare class WamPaymentSDK {
private config;
private baseUrl;
constructor(config: WamPaymentConfig);
/**
* Generates a signed payment link for WAM payment processing
* @param params Payment parameters including amount, currency, reference, and optional return URL
* @returns Payment link response with URL, signature, and metadata
*/
generatePaymentLink(params: PaymentLinkParams): PaymentLinkResponse;
/**
* Validates payment parameters
* @param params Payment parameters to validate
* @throws WamPaymentError if validation fails
*/
private validatePaymentParams;
/**
* Validates the SDK configuration
* @param config Configuration to validate
* @throws WamPaymentError if configuration is invalid
*/
private validateConfig;
/**
* Generates HMAC-SHA256 signature
* @param payload The payload to sign
* @returns Hex-encoded signature
*/
private generateSignature;
/**
* Gets the base URL from environment variables or defaults to production
* @returns Base URL for WAM payment gateway
*/
private getBaseUrl;
/**
* Builds the complete payment URL with all parameters
* @param params Payment parameters
* @param timestamp Generated timestamp
* @param signature Generated signature
* @returns Complete payment URL
*/
private buildPaymentUrl;
/**
* Validates if a string is a valid URL
* @param url String to validate
* @returns true if valid URL, false otherwise
*/
private isValidUrl;
/**
* Gets the current configuration (without sensitive data)
* @returns Configuration object without private key
*/
getConfig(): Omit<WamPaymentConfig, 'privateKey'> & {
baseUrl: string;
};
}
export { WamPaymentError, WamPaymentErrorCode, WamPaymentSDK, WamPaymentSDK as default };
export type { PaymentLinkParams, PaymentLinkResponse, ValidationError, WamPaymentConfig };