@mnpay/qpay
Version:
107 lines (106 loc) • 4.77 kB
JavaScript
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
};