UNPKG

addpay-js

Version:

TypeScript SDK for AddPay Cloud API - CNP payment processing

1 lines 56.3 kB
{"version":3,"sources":["../src/types/common.ts","../src/utils/crypto.ts","../src/lib/http-client.ts","../src/resources/checkout.ts","../src/resources/debicheck.ts","../src/resources/token.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["export type TransactionStatus = \n | 0 // Processing\n | 1 // Closed\n | 2 // Completed\n | 3; // Cancelled\n\nexport type TransactionType = \n | 1 // Purchase\n | 2 // Purchase Cancellation\n | 3 // Refund\n | 4 // Pre-auth\n | 11; // Cashback\n\nexport type PaymentScenario = \n | 'WEB_PAY' // PC Web Payment\n | 'WAP_PAY' // Mobile/WAP Payment\n | 'CNP_PAY'; // Online card payment\n\nexport type PlatformType = \n | 'WEB' // Computerized website\n | 'WAP' // Mobile H5 page\n | 'ANDROID' // Android\n | 'IOS'; // iOS\n\nexport type Currency = 'ZAR' | 'USD' | 'EUR' | 'GBP';\n\nexport interface ApiConfig {\n appId: string;\n merchantNo: string;\n storeNo: string;\n privateKey: string;\n publicKey: string;\n gatewayPublicKey: string;\n baseUrl?: string;\n timeout?: number;\n sandbox?: boolean;\n}\n\nexport interface ApiResponse<T = any> {\n code: string;\n msg: string;\n data?: T;\n sign?: string;\n timestamp?: number;\n}\n\nexport interface ApiError {\n code: string;\n message: string;\n details?: any;\n timestamp?: number;\n}\n\nexport class AddPayError extends Error {\n public code: string;\n public details?: any;\n public timestamp?: number;\n\n constructor(code: string, message: string, details?: any) {\n super(message);\n this.name = 'AddPayError';\n this.code = code;\n this.details = details;\n this.timestamp = Date.now();\n }\n}\n\nexport interface RequestOptions {\n timeout?: number;\n retries?: number;\n headers?: Record<string, string>;\n}","import crypto from 'crypto';\n\nexport class CryptoUtils {\n static signWithRSA(data: string, privateKey: string): string {\n const sign = crypto.createSign('RSA-SHA256');\n sign.update(data);\n sign.end();\n return sign.sign(privateKey, 'base64');\n }\n\n static verifyWithRSA(data: string, signature: string, publicKey: string): boolean {\n try {\n const verify = crypto.createVerify('RSA-SHA256');\n verify.update(data);\n verify.end();\n return verify.verify(publicKey, signature, 'base64');\n } catch {\n return false;\n }\n }\n\n static encryptWithRSA(data: string, publicKey: string): string {\n const buffer = Buffer.from(data, 'utf-8');\n const encrypted = crypto.publicEncrypt(\n {\n key: publicKey,\n padding: crypto.constants.RSA_PKCS1_OAEP_PADDING,\n },\n buffer\n );\n return encrypted.toString('base64');\n }\n\n static decryptWithRSA(encryptedData: string, privateKey: string): string {\n const buffer = Buffer.from(encryptedData, 'base64');\n const decrypted = crypto.privateDecrypt(\n {\n key: privateKey,\n padding: crypto.constants.RSA_PKCS1_OAEP_PADDING,\n },\n buffer\n );\n return decrypted.toString('utf-8');\n }\n\n static generateNonce(): string {\n return crypto.randomBytes(16).toString('hex');\n }\n\n static generateTimestamp(): number {\n return Date.now();\n }\n\n static sortObjectKeys(obj: Record<string, any>): Record<string, any> {\n const sorted: Record<string, any> = {};\n Object.keys(obj)\n .sort()\n .forEach((key) => {\n if (obj[key] !== undefined && obj[key] !== null && obj[key] !== '') {\n sorted[key] = obj[key];\n }\n });\n return sorted;\n }\n\n static buildSignatureString(params: Record<string, any>): string {\n const sorted = this.sortObjectKeys(params);\n const pairs: string[] = [];\n \n for (const [key, value] of Object.entries(sorted)) {\n if (key === 'sign') continue;\n if (value === undefined || value === null || value === '') continue;\n \n if (typeof value === 'object') {\n pairs.push(`${key}=${JSON.stringify(value)}`);\n } else {\n pairs.push(`${key}=${value}`);\n }\n }\n \n return pairs.join('&');\n }\n}","import { ApiConfig, ApiResponse, AddPayError, RequestOptions } from '../types';\nimport { CryptoUtils } from '../utils/crypto';\n\nexport class HttpClient {\n private config: ApiConfig;\n private baseUrl: string;\n\n constructor(config: ApiConfig) {\n this.config = config;\n this.baseUrl = config.baseUrl || \n (config.sandbox ? 'http://gw.wisepaycloud.com' : 'https://api.paycloud.africa');\n }\n\n async request<T = any>(\n endpoint: string,\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' = 'POST',\n data?: Record<string, any>,\n options?: RequestOptions\n ): Promise<ApiResponse<T>> {\n const url = `${this.baseUrl}${endpoint}`;\n const timeout = options?.timeout || this.config.timeout || 30000;\n const retries = options?.retries || 0;\n\n const requestData = this.prepareRequestData(data || {});\n const signature = this.generateSignature(requestData);\n \n const body = {\n ...requestData,\n app_id: this.config.appId,\n merchant_no: this.config.merchantNo,\n store_no: this.config.storeNo,\n sign: signature,\n timestamp: CryptoUtils.generateTimestamp(),\n nonce: CryptoUtils.generateNonce(),\n };\n\n let lastError: Error | undefined;\n \n for (let attempt = 0; attempt <= retries; attempt++) {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n const response = await fetch(url, {\n method,\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n ...options?.headers,\n },\n body: JSON.stringify(body),\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n throw new AddPayError(\n 'HTTP_ERROR',\n `HTTP ${response.status}: ${response.statusText}`,\n { status: response.status, statusText: response.statusText }\n );\n }\n\n const result = await response.json() as ApiResponse<T>;\n \n if (result.code !== '0' && result.code !== 'SUCCESS') {\n throw new AddPayError(result.code, result.msg || 'Unknown error', result);\n }\n\n if (result.sign && !this.verifySignature(result)) {\n throw new AddPayError('INVALID_SIGNATURE', 'Response signature verification failed');\n }\n\n return result;\n } catch (error) {\n lastError = error as Error;\n \n if (error instanceof AddPayError) {\n throw error;\n }\n \n if ((error as any)?.name === 'AbortError') {\n if (attempt === retries) {\n throw new AddPayError('TIMEOUT', `Request timeout after ${timeout}ms`);\n }\n continue;\n }\n \n if (attempt === retries) {\n throw new AddPayError(\n 'NETWORK_ERROR',\n `Network error: ${lastError?.message || 'Unknown error'}`,\n lastError\n );\n }\n \n await this.delay(Math.min(1000 * Math.pow(2, attempt), 5000));\n }\n }\n \n throw lastError || new AddPayError('UNKNOWN_ERROR', 'Unknown error occurred');\n }\n\n private prepareRequestData(data: Record<string, any>): Record<string, any> {\n const cleaned: Record<string, any> = {};\n \n for (const [key, value] of Object.entries(data)) {\n if (value !== undefined && value !== null) {\n if (typeof value === 'object' && !Array.isArray(value)) {\n cleaned[key] = JSON.stringify(value);\n } else {\n cleaned[key] = value;\n }\n }\n }\n \n return cleaned;\n }\n\n private generateSignature(data: Record<string, any>): string {\n const signString = CryptoUtils.buildSignatureString({\n ...data,\n app_id: this.config.appId,\n merchant_no: this.config.merchantNo,\n store_no: this.config.storeNo,\n });\n \n return CryptoUtils.signWithRSA(signString, this.config.privateKey);\n }\n\n private verifySignature(response: ApiResponse): boolean {\n const { sign, ...data } = response;\n if (!sign) return true;\n \n const signString = CryptoUtils.buildSignatureString(data);\n return CryptoUtils.verifyWithRSA(signString, sign, this.config.gatewayPublicKey);\n }\n\n private delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n}","import { HttpClient } from '../lib/http-client';\nimport {\n CheckoutRequest,\n CheckoutResponse,\n CheckoutStatusRequest,\n CheckoutStatusResponse,\n} from '../types';\n\nexport class CheckoutResource {\n constructor(private client: HttpClient) {}\n\n /**\n * Create a checkout session for hosted payment page\n */\n async create(request: CheckoutRequest): Promise<CheckoutResponse> {\n const response = await this.client.request<CheckoutResponse>(\n '/api/entry/checkout',\n 'POST',\n request\n );\n \n if (!response.data) {\n throw new Error('No checkout data returned');\n }\n \n return response.data;\n }\n\n /**\n * Get the status of a checkout session\n */\n async getStatus(request: CheckoutStatusRequest): Promise<CheckoutStatusResponse> {\n if (!request.merchant_order_no && !request.order_no) {\n throw new Error('Either merchant_order_no or order_no is required');\n }\n \n const response = await this.client.request<CheckoutStatusResponse>(\n '/api/entry/checkout/status',\n 'POST',\n request\n );\n \n if (!response.data) {\n throw new Error('No status data returned');\n }\n \n return response.data;\n }\n\n /**\n * Cancel a checkout session\n */\n async cancel(merchantOrderNo: string): Promise<CheckoutStatusResponse> {\n const response = await this.client.request<CheckoutStatusResponse>(\n '/api/entry/checkout/cancel',\n 'POST',\n { merchant_order_no: merchantOrderNo }\n );\n \n if (!response.data) {\n throw new Error('No cancellation data returned');\n }\n \n return response.data;\n }\n\n /**\n * Refund a completed checkout transaction\n */\n async refund(\n merchantOrderNo: string,\n refundAmount?: string | number,\n reason?: string\n ): Promise<CheckoutStatusResponse> {\n const request: any = { merchant_order_no: merchantOrderNo };\n \n if (refundAmount !== undefined) {\n request.refund_amount = refundAmount;\n }\n \n if (reason) {\n request.refund_reason = reason;\n }\n \n const response = await this.client.request<CheckoutStatusResponse>(\n '/api/entry/checkout/refund',\n 'POST',\n request\n );\n \n if (!response.data) {\n throw new Error('No refund data returned');\n }\n \n return response.data;\n }\n\n /**\n * Create a checkout session with fluent API\n */\n createCheckout() {\n return new CheckoutBuilder(this);\n }\n}\n\n/**\n * Fluent builder for checkout requests\n */\nexport class CheckoutBuilder {\n private request: Partial<CheckoutRequest> = {};\n\n constructor(private resource: CheckoutResource) {}\n\n merchantOrderNo(value: string): this {\n this.request.merchant_order_no = value;\n return this;\n }\n\n amount(value: string | number): this {\n this.request.order_amount = value;\n return this;\n }\n\n currency(value: CheckoutRequest['price_currency']): this {\n this.request.price_currency = value;\n return this;\n }\n\n notifyUrl(value: string): this {\n this.request.notify_url = value;\n return this;\n }\n\n returnUrl(value: string): this {\n this.request.return_url = value;\n return this;\n }\n\n description(value: string): this {\n this.request.description = value;\n return this;\n }\n\n attach(value: string): this {\n this.request.attach = value;\n return this;\n }\n\n expireTime(value: number): this {\n this.request.expire_time = value;\n return this;\n }\n\n goods(value: CheckoutRequest['goods_info']): this {\n this.request.goods_info = value;\n return this;\n }\n\n terminal(value: CheckoutRequest['terminal']): this {\n this.request.terminal = value;\n return this;\n }\n\n sceneInfo(value: CheckoutRequest['scene_info']): this {\n this.request.scene_info = value;\n return this;\n }\n\n customerInfo(value: CheckoutRequest['customer_info']): this {\n this.request.customer_info = value;\n return this;\n }\n\n async execute(): Promise<CheckoutResponse> {\n this.validate();\n return this.resource.create(this.request as CheckoutRequest);\n }\n\n private validate(): void {\n const required = [\n 'merchant_order_no',\n 'order_amount',\n 'price_currency',\n 'notify_url',\n 'return_url',\n ];\n \n for (const field of required) {\n if (!(field in this.request)) {\n throw new Error(`Missing required field: ${field}`);\n }\n }\n }\n}","import { HttpClient } from '../lib/http-client';\nimport {\n DebiCheckMandateRequest,\n DebiCheckMandateResponse,\n DebiCheckCollectionRequest,\n DebiCheckCollectionResponse,\n DebiCheckStatusRequest,\n DebiCheckStatusResponse,\n MandateInfo,\n DebiCheckCustomerInfo,\n} from '../types';\n\nexport class DebiCheckResource {\n constructor(private client: HttpClient) {}\n\n /**\n * Create a DebiCheck mandate\n */\n async createMandate(request: DebiCheckMandateRequest): Promise<DebiCheckMandateResponse> {\n const response = await this.client.request<DebiCheckMandateResponse>(\n '/api/entry/debicheck/mandate',\n 'POST',\n request\n );\n \n if (!response.data) {\n throw new Error('No mandate data returned');\n }\n \n return response.data;\n }\n\n /**\n * Initiate a collection against an approved mandate\n */\n async collect(request: DebiCheckCollectionRequest): Promise<DebiCheckCollectionResponse> {\n const response = await this.client.request<DebiCheckCollectionResponse>(\n '/api/entry/debicheck/collect',\n 'POST',\n request\n );\n \n if (!response.data) {\n throw new Error('No collection data returned');\n }\n \n return response.data;\n }\n\n /**\n * Get the status of a mandate and its collections\n */\n async getStatus(request: DebiCheckStatusRequest): Promise<DebiCheckStatusResponse> {\n if (!request.mandate_reference && !request.merchant_order_no) {\n throw new Error('Either mandate_reference or merchant_order_no is required');\n }\n \n const response = await this.client.request<DebiCheckStatusResponse>(\n '/api/entry/debicheck/status',\n 'POST',\n request\n );\n \n if (!response.data) {\n throw new Error('No status data returned');\n }\n \n return response.data;\n }\n\n /**\n * Cancel a mandate\n */\n async cancelMandate(mandateReference: string): Promise<DebiCheckStatusResponse> {\n const response = await this.client.request<DebiCheckStatusResponse>(\n '/api/entry/debicheck/mandate/cancel',\n 'POST',\n { mandate_reference: mandateReference }\n );\n \n if (!response.data) {\n throw new Error('No cancellation data returned');\n }\n \n return response.data;\n }\n\n /**\n * Create a mandate with fluent API\n */\n createMandateBuilder() {\n return new DebiCheckMandateBuilder(this);\n }\n\n /**\n * Create a collection with fluent API\n */\n createCollectionBuilder() {\n return new DebiCheckCollectionBuilder(this);\n }\n}\n\n/**\n * Fluent builder for DebiCheck mandate requests\n */\nexport class DebiCheckMandateBuilder {\n private request: Partial<DebiCheckMandateRequest> = {};\n\n constructor(private resource: DebiCheckResource) {}\n\n merchantOrderNo(value: string): this {\n this.request.merchant_order_no = value;\n return this;\n }\n\n customerInfo(value: DebiCheckCustomerInfo): this {\n this.request.customer_info = value;\n return this;\n }\n\n customer(builder: (info: CustomerInfoBuilder) => void): this {\n const customerBuilder = new CustomerInfoBuilder();\n builder(customerBuilder);\n this.request.customer_info = customerBuilder.build();\n return this;\n }\n\n mandateInfo(value: MandateInfo): this {\n this.request.mandate_info = value;\n return this;\n }\n\n mandate(builder: (info: MandateInfoBuilder) => void): this {\n const mandateBuilder = new MandateInfoBuilder();\n builder(mandateBuilder);\n this.request.mandate_info = mandateBuilder.build();\n return this;\n }\n\n notifyUrl(value: string): this {\n this.request.notify_url = value;\n return this;\n }\n\n returnUrl(value: string): this {\n this.request.return_url = value;\n return this;\n }\n\n async execute(): Promise<DebiCheckMandateResponse> {\n this.validate();\n return this.resource.createMandate(this.request as DebiCheckMandateRequest);\n }\n\n private validate(): void {\n const required = ['merchant_order_no', 'customer_info', 'mandate_info', 'notify_url'];\n \n for (const field of required) {\n if (!(field in this.request)) {\n throw new Error(`Missing required field: ${field}`);\n }\n }\n }\n}\n\n/**\n * Builder for customer info\n */\nexport class CustomerInfoBuilder {\n private info: Partial<DebiCheckCustomerInfo> = {};\n\n id(value: string): this {\n this.info.customer_id = value;\n return this;\n }\n\n name(value: string): this {\n this.info.customer_name = value;\n return this;\n }\n\n email(value: string): this {\n this.info.customer_email = value;\n return this;\n }\n\n phone(value: string): this {\n this.info.customer_phone = value;\n return this;\n }\n\n idNumber(value: string): this {\n this.info.id_number = value;\n return this;\n }\n\n accountNumber(value: string): this {\n this.info.account_number = value;\n return this;\n }\n\n accountType(value: DebiCheckCustomerInfo['account_type']): this {\n this.info.account_type = value;\n return this;\n }\n\n bankName(value: string): this {\n this.info.bank_name = value;\n return this;\n }\n\n branchCode(value: string): this {\n this.info.branch_code = value;\n return this;\n }\n\n build(): DebiCheckCustomerInfo {\n const required = [\n 'customer_id',\n 'customer_name',\n 'id_number',\n 'account_number',\n 'account_type',\n 'bank_name',\n 'branch_code',\n ];\n \n for (const field of required) {\n if (!(field in this.info)) {\n throw new Error(`Missing required customer field: ${field}`);\n }\n }\n \n return this.info as DebiCheckCustomerInfo;\n }\n}\n\n/**\n * Builder for mandate info\n */\nexport class MandateInfoBuilder {\n private info: Partial<MandateInfo> = {};\n\n type(value: MandateInfo['mandate_type']): this {\n this.info.mandate_type = value;\n return this;\n }\n\n maxAmount(value: string | number): this {\n this.info.max_amount = value;\n return this;\n }\n\n currency(value: MandateInfo['currency']): this {\n this.info.currency = value;\n return this;\n }\n\n startDate(value: string): this {\n this.info.start_date = value;\n return this;\n }\n\n endDate(value: string): this {\n this.info.end_date = value;\n return this;\n }\n\n frequency(value: MandateInfo['frequency']): this {\n this.info.frequency = value;\n return this;\n }\n\n installments(value: number): this {\n this.info.installments = value;\n return this;\n }\n\n trackingDays(value: number): this {\n this.info.tracking_days = value;\n return this;\n }\n\n description(value: string): this {\n this.info.description = value;\n return this;\n }\n\n build(): MandateInfo {\n const required = ['mandate_type', 'max_amount', 'currency', 'start_date'];\n \n for (const field of required) {\n if (!(field in this.info)) {\n throw new Error(`Missing required mandate field: ${field}`);\n }\n }\n \n return this.info as MandateInfo;\n }\n}\n\n/**\n * Fluent builder for DebiCheck collection requests\n */\nexport class DebiCheckCollectionBuilder {\n private request: Partial<DebiCheckCollectionRequest> = {};\n\n constructor(private resource: DebiCheckResource) {}\n\n mandateReference(value: string): this {\n this.request.mandate_reference = value;\n return this;\n }\n\n merchantOrderNo(value: string): this {\n this.request.merchant_order_no = value;\n return this;\n }\n\n amount(value: string | number): this {\n this.request.collection_amount = value;\n return this;\n }\n\n currency(value: DebiCheckCollectionRequest['currency']): this {\n this.request.currency = value;\n return this;\n }\n\n collectionDate(value: string): this {\n this.request.collection_date = value;\n return this;\n }\n\n notifyUrl(value: string): this {\n this.request.notify_url = value;\n return this;\n }\n\n async execute(): Promise<DebiCheckCollectionResponse> {\n this.validate();\n return this.resource.collect(this.request as DebiCheckCollectionRequest);\n }\n\n private validate(): void {\n const required = [\n 'mandate_reference',\n 'merchant_order_no',\n 'collection_amount',\n 'currency',\n 'notify_url',\n ];\n \n for (const field of required) {\n if (!(field in this.request)) {\n throw new Error(`Missing required field: ${field}`);\n }\n }\n }\n}","import { HttpClient } from '../lib/http-client';\nimport {\n TokenizationRequest,\n TokenizationResponse,\n TokenPaymentRequest,\n TokenPaymentResponse,\n TokenDeleteRequest,\n TokenDeleteResponse,\n TokenListRequest,\n TokenListResponse,\n CardInfo,\n TokenCustomerInfo,\n BillingAddress,\n} from '../types';\n\nexport class TokenResource {\n constructor(private client: HttpClient) {}\n\n /**\n * Tokenize a card for future payments\n */\n async tokenize(request: TokenizationRequest): Promise<TokenizationResponse> {\n const response = await this.client.request<TokenizationResponse>(\n '/api/entry/token/create',\n 'POST',\n request\n );\n \n if (!response.data) {\n throw new Error('No tokenization data returned');\n }\n \n return response.data;\n }\n\n /**\n * Process a payment using a stored token\n */\n async pay(request: TokenPaymentRequest): Promise<TokenPaymentResponse> {\n const response = await this.client.request<TokenPaymentResponse>(\n '/api/entry/token/pay',\n 'POST',\n request\n );\n \n if (!response.data) {\n throw new Error('No payment data returned');\n }\n \n return response.data;\n }\n\n /**\n * Delete a stored token\n */\n async delete(request: TokenDeleteRequest): Promise<TokenDeleteResponse> {\n const response = await this.client.request<TokenDeleteResponse>(\n '/api/entry/token/delete',\n 'POST',\n request\n );\n \n if (!response.data) {\n throw new Error('No deletion data returned');\n }\n \n return response.data;\n }\n\n /**\n * List all tokens for a customer\n */\n async list(request: TokenListRequest): Promise<TokenListResponse> {\n const response = await this.client.request<TokenListResponse>(\n '/api/entry/token/list',\n 'POST',\n request\n );\n \n if (!response.data) {\n throw new Error('No token list data returned');\n }\n \n return response.data;\n }\n\n /**\n * Get token details\n */\n async get(token: string): Promise<TokenizationResponse> {\n const response = await this.client.request<TokenizationResponse>(\n '/api/entry/token/get',\n 'POST',\n { token }\n );\n \n if (!response.data) {\n throw new Error('No token data returned');\n }\n \n return response.data;\n }\n\n /**\n * Create a tokenization request with fluent API\n */\n createTokenization() {\n return new TokenizationBuilder(this);\n }\n\n /**\n * Create a token payment with fluent API\n */\n createPayment() {\n return new TokenPaymentBuilder(this);\n }\n}\n\n/**\n * Fluent builder for tokenization requests\n */\nexport class TokenizationBuilder {\n private request: Partial<TokenizationRequest> = {};\n\n constructor(private resource: TokenResource) {}\n\n merchantOrderNo(value: string): this {\n this.request.merchant_order_no = value;\n return this;\n }\n\n cardInfo(value: CardInfo): this {\n this.request.card_info = value;\n return this;\n }\n\n card(builder: (info: CardInfoBuilder) => void): this {\n const cardBuilder = new CardInfoBuilder();\n builder(cardBuilder);\n this.request.card_info = cardBuilder.build();\n return this;\n }\n\n customerInfo(value: TokenCustomerInfo): this {\n this.request.customer_info = value;\n return this;\n }\n\n customer(builder: (info: TokenCustomerBuilder) => void): this {\n const customerBuilder = new TokenCustomerBuilder();\n builder(customerBuilder);\n this.request.customer_info = customerBuilder.build();\n return this;\n }\n\n notifyUrl(value: string): this {\n this.request.notify_url = value;\n return this;\n }\n\n returnUrl(valu