UNPKG

@mnpay/qpay

Version:
107 lines (106 loc) 4.77 kB
import I from "axios"; import { z as g } from "zod"; const w = "https://api.qpay.mn"; var p = /* @__PURE__ */ ((e) => (e.v2 = "v2", e.v1 = "v1", e))(p || {}), a = /* @__PURE__ */ ((e) => (e.authenticate = "/auth/token", e.refresh = "/auth/refresh", e.invoice = "/invoice", e.payment = "/payment/:payment_id", e.paymentCheck = "/payment/check", e.paymentCancel = "/payment/cancel/:payment_id", e.paymentRefund = "/payment/refund/:payment_id", e.paymentList = "/payment/list", e.create = "/bill/create", e.createWithTransaction = "/bill/create_with_transaction", e.check = "/bill/check", e.getInvoice = "/invoice/:invoice_id", e))(a || {}); const C = (e) => e, c = (...e) => C(...e), b = c( (e, { setStore: t }) => async (s) => { const r = Buffer.from(`${s.username}:${s.password}`).toString("base64"), o = await e.post(a.authenticate, void 0, { headers: { Authorization: `Basic ${r}` } }); return t({ accessToken: o.data.access_token, expiresIn: new Date(o.data.expires_in * 1e3), refreshToken: o.data.refresh_token }), o; } ), u = (e, t) => { const s = /:([_a-zA-Z0-9]+)/g; return e.replace(s, (r, o) => (typeof (t == null ? void 0 : t[o]) == "string" || typeof (t == null ? void 0 : t[o]) == "number" ? t[o] : "").toString()); }, x = c((e) => (t) => e.post(a.invoice, t)), $ = c((e) => (t) => e.get(u(a.getInvoice, t))), A = c((e) => (t) => e.delete(u(a.getInvoice, t))), z = c((e) => (t) => e.get(u(a.payment, t))), B = c((e) => (t) => e.post(a.paymentCheck, t)), L = c((e) => (t) => { const { payment_id: s, ...r } = t; return e.delete(u(a.paymentCancel, { payment_id: s }), { data: r }); }), U = c((e) => (t) => { const { payment_id: s, ...r } = t; return e.delete(u(a.paymentRefund, { payment_id: s }), { data: r }); }), D = c((e) => (t) => e.post(a.paymentList, t)), G = c((e, { store: t, setStore: s }) => async (r) => { const o = g.string().parse(r.refreshToken ?? t.refreshToken), n = await e.post(a.refresh, void 0, { headers: { Authorization: `Bearer ${o}` } }); return s({ accessToken: n.data.access_token, expiresIn: new Date(n.data.expires_in * 1e3), refreshToken: n.data.refresh_token }), n; }), O = (e) => { const t = e.version ?? p.v2, s = `${e.baseUrl ?? w}/${t}`, r = I.create({ baseURL: s }), o = { ...e, baseUrl: s }, n = { store: o, setStore: (i) => { Object.assign(o, i); } }, m = b(r, n), k = G(r, n), h = x(r, n), d = $(r, n), l = A(r, n), f = z(r, n), v = B(r, n), y = L(r, n), T = U(r, n), _ = D(r, n); return r.interceptors.request.use(async (i) => (i.url === a.authenticate || i.url === a.refresh || (n.store.accessToken && n.store.refreshToken && n.store.expiresIn ? n.store.expiresIn.getTime() < Date.now() && await k({ refreshToken: n.store.refreshToken }) : await m({ username: n.store.username, password: n.store.password }), i.headers.set("Authorization", `Bearer ${n.store.accessToken}`)), i)), { api: r, /** * #### Токен авах хүсэлт * Access token авах API. * `{ username: client_id, password: client_secret }`-ийг qPay -ээс авна. */ authenticate: m, /** * #### Access token шинэчлэн авах API. * refresh_token -ийг ашиглана. */ refreshToken: k, /** * #### Төлбөрийн нэхэмжлэл үүсгэх. * `invoice_code` -ийг qPay -ээс олгоно. */ createInvoice: h, /** * #### Үүсгэсэн нэхэмжлэлийн мэдээллийг харах * Query Parameter -д qPay invoice_id -ийг илгээнэ. */ getInvoice: d, /** * #### Төлбөрийн нэхэмжлэл цуцлах * Query Parameter -д qPay invoice_id -ийг илгээнэ. */ cancelInvoice: l, /** * #### Үүсгэсэн нэхэмжлэлийн мэдээллийг харах * Query Parameter -д qPay payment_id -ийг илгээнэ. */ getPayment: f, /** * #### Төлбөр төлөгдсөн эсэхийг шалгах * Нэхэмжлэлийн төлбөр шалгах бол object_type=INVOICE */ checkPayment: v, /** * #### Төлбөрийг цуцлах * Query Parameter -д qPay payment_id -ийг илгээнэ. */ cancelPayment: y, refundPayment: T, /** * #### Төлбөр төлөлтийн жагсаалт авах * customer_id, card_terminal_id, p2p_terminal_id -ийн мэдээллийг qPay merchant web admin-аас эсвэл qPay -ээс авна. */ getPaymentList: _ }; }; export { p as QpayApiVersion, a as QpayRequestPath, w as qpayDefaultBaseUrl, O as useQpay };