@mnpay/hipay
Version:
208 lines (207 loc) • 9.82 kB
JavaScript
var z = Object.defineProperty;
var D = (e, c, o) => c in e ? z(e, c, { enumerable: !0, configurable: !0, writable: !0, value: o }) : e[c] = o;
var y = (e, c, o) => D(e, typeof c != "symbol" ? c + "" : c, o);
import S from "axios";
const j = "v2";
var d = /* @__PURE__ */ ((e) => (e.accessToken = "/:version/auth/token", e.cardGet = "/:version/card/get/:cardId", e.cardAdd = "/:version/card/init", e.cardRemove = "/:version/card/remove/:cardId", e.payment = "/:version/payment", e.checkout = "/checkout", e.getCheckout = "/checkout/get/:checkoutId", e))(d || {}), n = /* @__PURE__ */ ((e) => (e.accessToken = "accessToken", e.cardGet = "cardGet", e.cardAdd = "cardAdd", e.cardRemove = "cardRemove", e.payment = "payment", e.checkout = "checkout", e.getCheckout = "getCheckout", e))(n || {}), i = /* @__PURE__ */ ((e) => (e.accessToken = "[Hipay] токен авах үед алдаа гарлаа", e.cardGet = "[Hipay] кард лавлах үед алдаа гарлаа", e.cardAdd = "[Hipay] кард нэмэх үед алдаа гарлаа", e.cardRemove = "[Hipay] кард хасах үед алдаа гарлаа", e.payment = "[Hipay] төлбөрийн гүйлгээ хийх үед алдаа гарлаа", e.checkout = "[Hipay] төлбөрийн нэхэмжлэл үүсгэх үед алдаа гарлаа", e.getCheckout = "[Hipay] төлбөрийн нэхэмжлэл лавлах үед алдаа гарлаа", e))(i || {}), R = /* @__PURE__ */ ((e) => (e.mnt = "MNT", e.usd = "USD", e))(R || {});
const m = {
[n.accessToken]: {
method: "post",
url: d.accessToken,
dataTransferKey: "data",
errorTitle: i.accessToken
},
[n.cardGet]: {
method: "get",
url: d.cardGet,
dataTransferKey: "pathParams",
errorTitle: i.cardGet
},
[n.cardAdd]: {
method: "post",
url: d.cardAdd,
dataTransferKey: "data",
errorTitle: i.cardAdd
},
[n.cardRemove]: {
method: "post",
url: d.cardRemove,
dataTransferKey: "pathParams",
errorTitle: i.cardRemove
},
[n.payment]: {
method: "post",
url: d.payment,
dataTransferKey: "data",
errorTitle: i.payment
},
[n.checkout]: {
method: "post",
url: d.checkout,
dataTransferKey: "data",
errorTitle: i.checkout
},
[n.getCheckout]: {
method: "get",
url: d.getCheckout,
dataTransferKey: "pathParams",
errorTitle: i.getCheckout
}
};
class p extends Error {
constructor(o, r = {
code: 0,
description: "unexpected error",
details: []
}, s) {
const a = m[o], l = `${s ?? a.errorTitle}: ${JSON.stringify(r)}`;
super(l);
y(this, "requestName");
y(this, "responseData");
y(this, "title");
this.requestName = o, this.title = a.errorTitle, this.responseData = r;
}
}
const U = (e, c) => {
if (c.code === 1 || c.code === "1")
return c;
throw c.code === "0" || c.code === 0 ? new p(e, c) : new p(e);
}, f = (e, c) => {
const o = /:([a-zA-Z0-9]+)/g;
return e.replace(o, (r, s) => (typeof (c == null ? void 0 : c[s]) == "string" || typeof (c == null ? void 0 : c[s]) == "number" ? c[s] : "").toString());
}, k = (e, c, o, r) => {
const s = m[e], a = m[e].method.toUpperCase(), l = o.config.version;
return async (T) => {
const h = (r == null ? void 0 : r(T)) ?? T, g = f(s.url, { ...h, version: l });
return U(e, (await (async () => {
try {
return await c({
method: a,
url: g,
...s.dataTransferKey === "data" ? { data: h } : {},
..."access_token" in h ? { headers: { Authorization: `Bearer ${h.access_token}` } } : {}
});
} catch {
throw new p(e);
}
})()).data);
};
}, J = (e) => {
const { baseURL: c } = e, o = S.create({ baseURL: c }), r = {
config: e
}, s = k(n.accessToken, o, r, (t) => ({
...t,
client_id: (t == null ? void 0 : t.client_id) ?? e.client_id,
client_secret: (t == null ? void 0 : t.client_secret) ?? e.client_secret,
code: (t == null ? void 0 : t.code) ?? e.code,
grant_type: (t == null ? void 0 : t.grant_type) ?? "authorization_code",
redirect_uri: (t == null ? void 0 : t.redirect_uri) ?? ""
})), a = async (t) => await s(t ?? e), l = k(n.cardGet, o, r), T = k(n.getCheckout, o, r), h = k(n.cardRemove, o, r), g = k(n.cardAdd, o, r, (t) => ({
...t,
entityId: t.entityId ?? e.client_id,
redirect_uri: t.redirect_uri ?? "",
return_uri: t.return_uri ?? ""
})), A = k(n.checkout, o, r, (t) => ({
...t,
entityId: t.entityId ?? e.client_id,
currency: t.currency ?? R.mnt
})), $ = k(n.payment, o, r, (t) => {
var u;
return {
...t,
access_token: t.access_token ?? ((u = r.token) == null ? void 0 : u.access_token) ?? "",
entityId: t.entityId ?? e.client_id,
ipaddress: t.ipaddress ?? ""
};
}), w = async (t) => {
var C, x, I, G, K;
const u = /* @__PURE__ */ new Date(), _ = (C = r.token) != null && C.expires ? new Date((x = r.token) == null ? void 0 : x.expires) : void 0, v = u.valueOf() + 5 * 60 * 1e3 < ((_ == null ? void 0 : _.valueOf()) ?? 0);
if ((I = r.token) != null && I.access_token && v)
return {
access_token: (G = r.token) == null ? void 0 : G.access_token,
expires: (K = r.token) == null ? void 0 : K.access_token
};
const { access_token: O, expires: P } = await s(t ?? e);
r.token = {
access_token: O,
expires: P * 1e3
};
};
return o.interceptors.request.use(
async (t) => {
var v;
const u = f(d.accessToken, e);
return !((v = t.url) != null && v.startsWith(u)) && (await w(), r.token && (t.headers.Authorization = `Bearer ${r.token.access_token}`)), t;
},
async (t) => await Promise.reject(t)
), {
/**
* Хандалтын токен авах (get auth token)
* Байгууллага системд хандахдаа хамгийн түрүүнд хийх үйлдэл гэж ойлгож болно.
* Уг хүсэлтийн хариунд ирсэн хандалтын токений (access_token) тусламжтай дараа
* дараагийн үйлдлийг хийх боломжтой болно.
*/
getAccessToken: a,
/**
* Хандалтын токен дуудаж хадгалах. Нэг дуудсан тохиолдолд дахиж дуудах шаардлагагүй.
* Байгууллага системд хандахдаа хамгийн түрүүнд хийх үйлдэл гэж ойлгож болно.
* Уг хүсэлтийн хариунд ирсэн хандалтын токений (access_token) тусламжтай дараа
* дараагийн үйлдлийг хийх боломжтой болно.
*/
loadAccessToken: w,
/**
* Карт лавлах (Get card)
* Карт нэмэх хүсэлт амжилттай болсоны дараагаар тухайн карт бүртгэлийн дугаараар картын дэлгэрэнгүй мэдээллийг авна.
*/
getCard: l,
/** Карт нэмэх (Card add)
* Картын бүртгэлийн дугаар авах хүсэлт.
* хүсэлтээс ирсэн {initId} утгаар форм авна.
* Карт нэмэх хүсэлтийг дуудах Hi-Pay-ийн карт нэмэх цонх гарч ирэх бөгөөд тус цонхны тусламжтай
* картын мэдээллийг оруулж и-пин кодоор баталгаажуулсны дараа карт нэмэгдэнэ. */
addCard: g,
/**
* Карт хасах (Remove card)
* Hipay системээр үүсгүүлсэн картын токенийг устгах зориулалттай.
*/
removeCard: h,
/**
* Төлбөрийн нэхэмжлэх үүсгэх (Checkout)
* Байгууллагын программаас барааны мэдээлэл болон худалдан авалтын мэдээллүүдийг Hi-Pay-руу илгээнэ.
* Checkout сервисийг дуудахад амжилттай болсон тохиолдолд checkoutId (дахин давтагдахгүй) дугаар
* буцаах бөгөөд уг дугаараар төлбөрийн гүйлгээ хийх хүсэлтийг илгээнэ.
* Жич. Checkout утгыг Order буюу захиалга, нэхэмжлэх гэж ойлгоно.
* @param {'MNT' | 'USD'} params.currency - default value = MNT
*/
checkout: A,
/**
* Төлбөр нэхэмжлэх лавлах (get checkout)
* Тухайн төлбөр төлөгдсөн эсэхийг нэхэмжлэхийн дугаар ашиглан лавлах
* @param {string} params.checkoutId - Нэхэмжлэхийн (checkout) дугаар
*/
getCheckout: T,
/**
* Төлбөрийн гүйлгээ хийх (Payment)
* Төлбөрийн гүйлгээ хийх хүсэлтэд өмнө нь үүсгэсэн төлбөрийн нэхэмжлэхийг (checkout) төлөх үйлдэл хийгдэнэ.
* Төлбөрийн гүйлгээний хүсэлтэд ашиглагдах токен талбарт Байгууллагын токен-ийг байршуулж ашиглана.
*/
payment: $,
/** Hi-Pay-ийн карт нэмэх цонх */
getCardAddFormUrl: () => `${e.baseURL}/${e.version}/card/form`,
resetToken: () => {
r.token = void 0;
}
};
};
export {
R as HipayCurrency,
p as HipayError,
i as HipayErrorTitle,
n as HipayRequestName,
d as HipayUrl,
J as createHipay,
k as createHipayRequestHandler,
j as defaultVersion,
f as getHipayUrlPath,
m as requestConfig
};