UNPKG

np-payment-sdk

Version:

Unified Payment SDK for Nepal (eSewa, Khalti, ConnectIPS, IME Pay, Mobile Banking)

166 lines (165 loc) 5.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FlutterwaveGateway = void 0; const flutterwave_node_v3_1 = __importDefault(require("flutterwave-node-v3")); /** * Flutterwave payment gateway implementation (real) */ class FlutterwaveGateway { constructor(config) { this.config = config; this.flw = new flutterwave_node_v3_1.default(config.publicKey, config.secretKey); } /** * Initiate a payment (card charge) */ async pay(params) { try { const payload = { card_number: params.cardNumber, cvv: params.cvv, expiry_month: params.expiryMonth, expiry_year: params.expiryYear, currency: params.currency, amount: params.amount, fullname: params.fullname, email: params.email, tx_ref: params.transactionId || `flw_tx_${Date.now()}`, redirect_url: params.returnUrl, }; const response = await this.flw.Charge.card(payload); let message = response.message; if (typeof message !== 'string') message = 'Flutterwave payment initiated'; return { gateway: 'flutterwave', status: response.status === 'success' ? 'success' : 'failure', params: response, message: message, }; } catch (err) { if (err instanceof Error) { return { gateway: 'flutterwave', status: 'failure', params: { error: err.message }, message: err.message || 'Flutterwave payment failed', }; } return { gateway: 'flutterwave', status: 'failure', params: { error: String(err) }, message: 'Flutterwave payment failed', }; } } /** * Verify a payment */ async verify(params) { try { const response = await this.flw.Transaction.verify({ id: params.transactionId }); return { gateway: 'flutterwave', status: response.data.status === 'successful' ? 'success' : 'failure', params: response.data, message: 'Flutterwave payment verification', }; } catch (err) { if (err instanceof Error) { return { gateway: 'flutterwave', status: 'failure', params: { error: err.message }, message: err.message || 'Flutterwave verification failed', }; } return { gateway: 'flutterwave', status: 'failure', params: { error: String(err) }, message: 'Flutterwave verification failed', }; } } /** * Refund a payment */ async refund(params) { try { const response = await this.flw.Refund.refund({ id: params.transactionId, amount: params.amount, secKey: this.config.secretKey, }); let refundMessage = response.message; if (typeof refundMessage !== 'string') refundMessage = 'Flutterwave refund processed'; return { gateway: 'flutterwave', status: response.status === 'success' ? 'success' : 'failure', params: response, message: refundMessage, }; } catch (err) { if (err instanceof Error) { return { gateway: 'flutterwave', status: 'failure', params: { error: err.message }, message: err.message || 'Flutterwave refund failed', }; } return { gateway: 'flutterwave', status: 'failure', params: { error: String(err) }, message: 'Flutterwave refund failed', }; } } /** * Create a subscription (not implemented) */ // eslint-disable-next-line @typescript-eslint/no-unused-vars async subscribe(_params) { return { gateway: 'flutterwave', status: 'cancelled', params: {}, message: 'Flutterwave subscription not implemented', }; } /** * Create an invoice (not implemented) */ // eslint-disable-next-line @typescript-eslint/no-unused-vars async createInvoice(_params) { return { gateway: 'flutterwave', status: 'cancelled', params: {}, message: 'Flutterwave invoice not implemented', }; } /** * Wallet operations (not supported) */ // eslint-disable-next-line @typescript-eslint/no-unused-vars async wallet(_params) { return { gateway: 'flutterwave', status: 'failure', params: {}, message: 'Flutterwave does not support wallet operations', }; } } exports.FlutterwaveGateway = FlutterwaveGateway;