pg-test-project
Version:
A payment gateway for sab paisa
98 lines (80 loc) • 2.53 kB
text/typescript
import CryptoJS from "crypto-js";
import uuid from 'react-uuid'
import { devUrl, prodUrl, stagUrl } from "../constants/envVariables";
const getPaymentModeByName = (value: string, data: { [key: string]: any }) => {
const objData: { [key: string]: any } = {
debit_card: 1,
credit_card: 2,
net_banking: 3,
cash: 4,
neft_rtgs: 5,
upi: 6,
wallet: 7,
bhim_upi_qr: 8,
rupay_card: 12,
rtgs: 13,
imps: 10
}
return data.filter((obj: any) => obj.paymodeId == (objData[value]));
}
const encryptAES = (message: string, object: any) => {
let encObj: any = {};
for (const key in object) {
encObj[key] = CryptoJS.AES.encrypt(object[key], "sabpaisa").toString()
}
return encObj;
}
const encrypt = function (plain_text: any, secret: any, ivString: any) {
const msg = plain_text;
// key & iv - 128-bit (16 byte)
const key = CryptoJS.enc.Utf8.parse(secret);
const iv = CryptoJS.enc.Utf8.parse(ivString);
// AES-128
const enc = CryptoJS.AES.encrypt(msg, key, {
iv,
mode: CryptoJS.mode.CBC,
}).ciphertext.toString(CryptoJS.enc.Base64);
return enc;
}
const encryptAESString = (data: string, authkey: string, authiv: string): string => {
let encData = encrypt(data, authkey, authiv);
return encData;
}
const decrypt = function (plain_text: any, encryptionMethod: any, secret: any, ivString: any) {
const msg = plain_text;
// key & iv - 128-bit (16 byte)
const key = CryptoJS.enc.Utf8.parse(secret);
const iv = CryptoJS.enc.Utf8.parse(ivString);
// AES-128
const dec = CryptoJS.AES.decrypt(msg, key, {
iv,
mode: CryptoJS.mode.CBC,
});
return dec.toString(CryptoJS.enc.Utf8);
}
const decAESString = (data: string, authkey: string, authiv: string): string => {
let decData = decrypt(data, "aes-128-cbc", authkey, authiv);
return decData;
}
const getUUID = () => {
return uuid();
}
const getPaymentUrl = (env: string = ""): string => {
let finalUrl: string = "";
switch (env) {
case "dev":
finalUrl = devUrl;
break;
case "stag":
finalUrl = stagUrl;
break;
case "prod":
finalUrl = prodUrl;
break;
default:
finalUrl = devUrl;
break;
}
return finalUrl;
}
export { getPaymentModeByName, encryptAES, encryptAESString, getUUID, decAESString, getPaymentUrl };