shipy-sdk-js
Version:
Shipy Payment Gateway SDK for JavaScript/TypeScript
47 lines (46 loc) • 1.75 kB
JavaScript
;
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;