UNPKG

shipy-sdk-js

Version:

Shipy Payment Gateway SDK for JavaScript/TypeScript

47 lines (46 loc) 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Base = void 0; const EventEmitter_1 = require("./EventEmitter"); class Base { constructor(apiKey, httpClient) { this.apiKey = apiKey; this.eventEmitter = new EventEmitter_1.EventEmitter(); this.httpClient = httpClient; } async request(endpoint, data) { try { return await this.httpClient.post(endpoint, data); } catch (error) { const err = error instanceof Error ? error : new Error(String(error)); this.eventEmitter.emit('error', err); throw err; } } /** * Verify callback data from Shipy */ verifyCallback(callbackData) { const { paymentID, returnID, paymentType, paymentAmount, paymentCurrency, paymentHash } = callbackData; const hashString = `${paymentID}${returnID}${paymentType}${paymentAmount}${paymentCurrency}${this.apiKey}`; const hashBytes = new TextEncoder().encode(hashString); const calculatedHash = btoa(String.fromCharCode(...hashBytes)); const isValid = calculatedHash === paymentHash; if (isValid) { this.eventEmitter.emit('callback.received', callbackData); // Emit payment status specific events based on payment type switch (paymentType) { case 'credit_card': this.eventEmitter.emit('payment.success', callbackData); break; case 'mobile': case 'eft': this.eventEmitter.emit('payment.pending', callbackData); break; } } return isValid; } } exports.Base = Base;