npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

qpay

v2.0.5

Published

QPay API integration

Readme

QPay API Integration

QPay системийн API-д зориулсан TypeScript/JavaScript сан. Автомат токен менежмент, refresh token ашиглалт зэрэг боломжуудыг агуулсан.

Онцлогууд

  • Автомат токен менежмент - access token болон refresh token-г автоматаар удирдана
  • TypeScript дэмжлэг - Бүрэн төрөл тодорхойлолттой
  • Axios суурьтай - HTTP хүсэлтүүд болон хариунууд
  • Promise/async-await - Орчин үеийн асинхрон программчлал

API Coverage / Дэмжигдсэн функцүүд

Энэ сан нь QPay API-ийн дараах функцүүдийг дэмждэг:

🔐 Auth / Нэвтрэх (Эрх олгох)

  • Token / Токен үүсгэх - Анхны нэвтрэх токен авах
  • Refresh / Токен шинэчлэх - Хуучин токеноо шинэчлэх

📄 Invoice / Нэхэмжлэх удирдлага

  • Create Simple / Нэхэмжлэх үүсгэх - Шинэ төлбөрийн нэхэмжлэх үүсгэх
  • Get / Нэхэмжлэх татах - Нэхэмжлэхийн мэдээлэл, төлөв шалгах
  • Create / Нарийвчилсан нэхэмжлэх - Барааны жагсаалттай нэхэмжлэх
  • Cancel / Нэхэмжлэх цуцлах - Одоогоор дэмжигдэхгүй

💳 Payment / Төлбөр удирдлага (Ирээдүйд нэмэгдэх)

  • Get / Төлбөрийн мэдээлэл - Төлбөрийн дэлгэрэнгүй мэдээлэл
  • List / Төлбөрийн жагсаалт - Бүх төлбөрүүдийн жагсаалт
  • Check / Төлбөр шалгах - Төлбөрийн төлөв шалгах
  • Cancel / Төлбөр цуцлах - Төлбөр буцаах
  • Refund / Мөнгө буцаах - Төлсөн мөнгө буцаах

🧾 EBarimt / Цахим баримт (Ирээдүйд нэмэгдэх)

  • Create / Баримт үүсгэх - Цахим баримт үүсгэх
  • Cancel / Баримт цуцлах - Цахим баримт цуцлах

Тэмдэглэл:

  • ✅ = Одоо ашиглах боломжтой
  • ❌ = Одоогоор дэмжигдэхгүй, ирээдүйд нэмэгдэнэ

Суулгах

npm install qpay

Тохиргоо

QPay API-г ашиглахын тулд эхлээд QPay класын шинэ instance үүсгэх шаардлагатай.

import { QPay } from "qpay";

const qpay = new QPay({
  username: "EXAMPLE",
  password: "eXaMPlE",
  invoice_code: "EXAMPLE_INVOICE",
});

Аюулгүй байдал: Хэрэглэгчийн нэр, нууц үг зэрэг мэдээллийг кодонд шууд бичихээс зайлсхийж, environment variables ашиглана уу:

import { QPay } from "qpay";

const qpay = new QPay({
  username: process.env.QPAY_USERNAME!,
  password: process.env.QPAY_PASSWORD!,
  invoice_code: process.env.QPAY_INVOICE_CODE!,
});

Токен менежмент

Энэ сан нь токен менежментийг автоматаар хийдэг:

  • Access token автоматаар үүсгэгдэж, хүчинтэй хугацаа шалгагдана
  • Refresh token ашиглан access token-г шинэчилнэ
  • Token дууссан үед автоматаар шинэ токен үүсгэнэ
  • Алдаа гарсан үед refresh token-оор дахин оролдоно

Токен менежментийг гараар хийх шаардлагагүй - сан автоматаар удирдана.

Нэхэмжлэх үүсгэх

Нэхэмжлэх үүсгэхийн тулд createInvoice функцийг ашиглана. Энэ функц нь нэхэмжлэхийн мэдээллийг агуулсан объект хүлээн авч, үүсгэсэн нэхэмжлэхийн хариуг буцаана.

import { QPay } from "qpay";

const qpay = new QPay({
  username: process.env.QPAY_USERNAME!,
  password: process.env.QPAY_PASSWORD!,
  invoice_code: process.env.QPAY_INVOICE_CODE!,
});

try {
  const invoiceResponse = await qpay.createInvoice({
    amount: 500,
    callback_url: "https://your-website.com/callback",
    invoice_description: "Бүтээгдэхүүний төлбөр",
    invoice_receiver_code: "12345678",
    sender_invoice_no: "ORDER_001",
  });

  console.log("Нэхэмжлэх амжилттай үүслээ:");
  console.log("Invoice ID:", invoiceResponse.data.invoice_id);
  console.log("QR code:", invoiceResponse.data.qr_text);
  console.log("Deep links:", invoiceResponse.data.qpay_urls);
} catch (error) {
  console.error("Нэхэмжлэх үүсгэхэд алдаа гарлаа:", error);
}

Нэхэмжлэхийн параметрүүд

  • amount: Төлбөрийн дүн (заавал)
  • callback_url: Төлбөр хийгдсэний дараа буцах URL (заавал)
  • invoice_description: Нэхэмжлэхийн тайлбар (заавал)
  • invoice_receiver_code: Хүлээн авагчийн код (заавал)
  • sender_invoice_no: Таны системийн нэхэмжлэхийн дугаар (заавал)

Нэхэмжлэх татах

Нэхэмжлэх татахын тулд getInvoice функцийг ашиглана. Энэ функц нь нэхэмжлэхийн ID-гаар хайдаг, тухайн нэхэмжлэхийн мэдээллийг буцаана.

import { QPay } from "qpay";

const qpay = new QPay({
  username: process.env.QPAY_USERNAME!,
  password: process.env.QPAY_PASSWORD!,
  invoice_code: process.env.QPAY_INVOICE_CODE!,
});

try {
  const invoiceId = "a79715cb-1129-470e-a005-310614799124";
  const invoice = await qpay.getInvoice(invoiceId);

  console.log("Нэхэмжлэхийн мэдээлэл:");
  console.log("Төлөв:", invoice.data.invoice_status);
  console.log("Дүн:", invoice.data.amount);
  console.log("Тайлбар:", invoice.data.invoice_description);

  if (invoice.data.invoice_status === "PAID") {
    console.log("Төлбөр хийгдсэн!");
  }
} catch (error) {
  console.error("Нэхэмжлэх татахад алдаа гарлаа:", error);
}

Дотоод API функц - sendRequestWithAuth

sendRequestWithAuth нь QPay класын дотоод функц бөгөөд автомат токен менежментээр эрх бүхий HTTP хүсэлтүүдийг QPay API руу илгээдэг.

Функцийн ажиллагаа:

  1. Токен шалгах: Одоогийн access token хүчинтэй эсэхийг шалгана
  2. Токен шинэчлэх: Хэрэв token дууссан бол refresh token ашиглан шинэчилнэ
  3. Шинэ токен үүсгэх: Refresh token ч дууссан бол шинэ токен үүсгэнэ
  4. HTTP хүсэлт: Authorization толгойтой хүсэлтийг илгээнэ
// Дотоод ашиглалт - шууд ашиглах шаардлагагүй
async sendRequestWithAuth<T>(
  endpointUrl: string,
  method: "get" | "post" | "put" | "delete",
  data?: any
): Promise<AxiosResponse<T>>

Уян хатан байдал ба өргөтгөх боломж

Энэ функц нь QPay API-ийн ирээдүйн endpoint-үүдийг дэмжих уян хатан байдлыг бүрдүүлдэг:

  • Ямар ч endpoint: Бүх API endpoint-тэй ажиллана
  • Бүх HTTP арга: GET, POST, PUT, DELETE методуудыг дэмждэг
  • Generic төрөл: TypeScript-ийн <T> ашиглан ямар ч хариуны төрөлтэй ажиллана
  • Автомат эрх: Токен менежментийг автоматаар хийдэг

Хэрэглэгчийн өөрийн хандалт

Хэдийгээр энэ функц дотоод зориулалттай боловч, хэрэв QPay API-д шинэ endpoint нэмэгдвэл эсвэл танд тусгай хандалт хэрэгтэй бол энэ функцийг ашиглан өөрийн методуудыг нэмж болно:

// Жишээ: Хэрэв QPay шинэ API нэмвэл
class ExtendedQPay extends QPay {
  // Жишээ: Гүйлгээний түүх татах (хэрэв ийм API байгаа бол)
  async getTransactionHistory(filters?: any) {
    return this.sendRequestWithAuth<TransactionHistoryResponse>(
      "/v2/transactions/history",
      "get",
      filters
    );
  }

  // Жишээ: Нэхэмжлэх цуцлах (хэрэв ийм API байгаа бол)
  async cancelInvoice(invoiceId: string) {
    return this.sendRequestWithAuth<CancelResponse>(
      `/v2/invoice/${invoiceId}/cancel`,
      "put"
    );
  }
}

TypeScript дэмжлэг

Энэ сан нь бүрэн TypeScript дэмжлэгтэй. Бүх төрлүүд автоматаар импорт хийгдэнэ:

import { QPay, QPayCreateInvoice, QPayCreateInvoiceResponse } from "qpay";

const qpay = new QPay({
  username: process.env.QPAY_USERNAME!,
  password: process.env.QPAY_PASSWORD!,
  invoice_code: process.env.QPAY_INVOICE_CODE!,
});

// TypeScript-д төрлүүд автоматаар танигдана
const invoiceData: QPayCreateInvoice = {
  amount: 1000,
  callback_url: "https://example.com/callback",
  invoice_description: "Бүтээгдэхүүний төлбөр",
  invoice_receiver_code: "12345678",
  sender_invoice_no: "ORDER_002",
};

const response: QPayCreateInvoiceResponse = await qpay.createInvoice(
  invoiceData
);

Анхаарах зүйлс

  • Аюулгүй байдал: Хэрэглэгчийн нэр, нууц үг зэрэг мэдээллийг кодонд шууд бичихээс зайлсхийж, environment variables ашиглана уу.

  • Алдааны менежмент: API хүсэлт алдааг зохих ёсоор барьж, хэрэглэгчдэд ойлгомжтой мэдээлэл өгөх нь чухал.

  • Токен менежмент: Сан автоматаар токен удирддаг тул гараар токен үүсгэх шаардлагагүй.

  • Rate limiting: QPay API-д хязгаарлалт байж болохыг анхаарна уу.

  • Callback URL: Production орчинд HTTPS ашиглаж, callback URL-г зөв тохируулна уу.

Go хэл дээр QPay API ашиглахыг хүсвэл дараах санг ашиглаж болно:
https://github.com/mnmonherdene1234/qpaygo