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 🙏

© 2024 – Pkg Stats / Ryan Hefner

eazy-idpay

v1.1.3

Published

استفاده آسان و راحت از درگاه پرداخت آیدی پی

Downloads

18

Readme

درباره ایزی آیدی پی

روش نصب

npm i eazy-idpay

متد ها

create() // ایجاد تراکنش
verify() // تایید تراکنش
inquiry() // استعلام آخرین وضعیت تراکنش

احراز هویت درگاه

const Eazyidpay = require("eazy-idpay");
const idpay = new Eazyidpay(TOKEN, issandbox);

issandbox : بودن درگاه به صورت آزمایشی می باشد true می باشد و در صورت false به صورت پیش فرض

ایجاد تراکنش

const createpay = await idpay.create({
amount: 100000,
order_id: 2423,
callback: "http://localhost:3000/callback",
name: "فتاح رنجبر",
phone: "09339993377",
mail: "[email protected]",
desc: "توضیحات",
});

در صورت درست بودن تمام ورودی های متد پاسخ زیر برای شما به صورت جیسون به شما داده میشود

{
"id": "d2e353189823079e1e4181772cff5292",
"link": "https://idpay.ir/p/ws-sandbox/d2e353189823079e1e4181772cff5292"
}

شما باید برای انجام مراحل پرداخت کاربر را به پراپرتی link در پاسخ ایجاد تراکنش ریدایرکت کنید

در صورت بروز خطا در ایجاد تراکنش پاسخی مشابه زیر به صورت جیسون دریافت می کنید

{
  status: 406
  data:{
    "error_code": 32,
    "error_message": ".نباید خالی باشد `order_id` مقدار"
  }
}

لیست خطاها

| اجباری | نوع | ورودی | | ------ | ---- | -------- | | بله | عدد | amount | | بله | رشته | order_id | | بله | رشته | callback | | خیر | رشته | name | | خیر | رشته | phone | | خیر | رشته | mail | | خیر | رشته | desc |

تایید تراکنش

در صفحه کال بک می توانید مرحله اعتبار سنجی تراکنش را با متد verify انجام دهید.

const verifypay = await idpay.verify(id, order_id);

اجباری | نوع | ورودی --- | --- | ---
| بله| رشته |id| | بله| رشته |order_id|

	{
"status": "100",
"track_id": "10012",
"id": "d2e353189823079e1e4181772cff5292",
"order_id": "101",
"amount": "10000",
"date": "1546288200",
"payment": {
    "track_id": "888001",
    "amount": "10000",
    "card_no": "123456******1234",
    "hashed_card_no": "E59FA6241C94B8836E3D03120DF33E80FD988888BBA0A122240C2E7D23B48295",
    "date": "1546288500" },
"verify": { "date": "1546288800" }
}

کد های وضعیت تراکنش درصوت پرداخت توسط کاربر کد status باید 100 باشد و صورت کد 101 یعنی پرداخت قبلا تایید شده است و احتمال دارد کاربر می خواد دوباره از شناسه تراکنش بدون پرداخت دوباره استفاده کند

هشدار آیدی پی : جهت جلوگیری از دوبار مصرف شدن یک پرداخت (Double Spending)، پذیرنده موظف است کلیدهای منحصر بفردی که از طریق API آیدی پی دریافت می‌کند را (مثل id و track_id) در دیتابیس خود ذخیره کند و از یکتا بودن آنها اطمینان حاصل فرماید. توجه داشته باشید که ممکن است یک مشتری رسید پرداخت آیدی پی را ذخیره کند و برای یک خرید دیگر از آن استفاده کند. مسئولیت بررسی و شناسایی Double Spending کاملا به عهده پذیرنده می‌باشد. در صورت بروز خطا در ایجاد تراکنش پاسخی مشابه زیر به صورت جیسون دریافت می کنید

{
status: 406
data:{
  "error_code": 32,
  "error_message": ".نباید خالی باشد `order_id` مقدار"
}
}

استعلام آخرین وضعیت تراکنش

با استفاده از متد inquiry می توانید از آخرین وضعیت یک تراکنش مطلع شوید.

const inquirypay = await idpay.inquiry(id, order_id);

| اجباری | نوع | ورودی | | ------ | ---- | -------- | | بله | رشته | id | | بله | رشته | order_id |

در صورت صحیح بودن اطلاعات تراکنشد پاسخ متد inquiry مشابه زیر است

{
  "status": "100",
  "track_id": "10012",
  "id": "d2e353189823079e1e4181772cff5292",
  "order_id": "101",
  "amount": "10000",
  "wage": {
    "by": "payee",
    "type": "percent",
    "amount": "2500"
  },
  "date": "1546288200",
  "payer": {
    "name": "قاسم رادمان",
    "phone": "09382198592",
    "mail": "[email protected]",
    "desc": "توضیحات پرداخت کننده"
  },
  "payment": {
    "track_id": "888001",
    "amount": "10000",
    "card_no": "123456******1234",
    "hashed_card_no": "E59FA6241C94B8836E3D03120DF33E80FD988888BBA0A122240C2E7D23B48295",
    "date": "1546288500"
  },
  "verify": {
    "date": "1546288800"
  },
  "settlement": {
    "track_id": "12345678900",
    "amount": "7500",
    "date": "1546398000"
  }
}
{
  status: 406
  data:{
    "error_code": 32,
    "error_message": ".نباید خالی باشد `order_id` مقدار"
  }
}

نمونه کد

const Eazyidpay = require("eazy-idpay");

const express = require("express");
const bodyParser = require("body-parser");

const idpay = new Eazyidpay("318a34543-dff-40a2-bcc0-25435f30bde8b");
const app = express();
const port = 3000;

app.use(bodyParser.urlencoded({ extended: false }));

app.get("/buy", async (req, res) => {
  const createpay = await idpay.create({
    order_id: 2423,
    amount: 100000,
    callback: "http://localhost:3000/callback",
    name: "فتاح رنجبر",
    phone: "09000000000",
    mail: "[email protected]",
    desc: "تلگرام : @fanishah",
  });
  console.log(createpay);
  res.redirect(createpay.data.link);
});

app.post("/callback", async (req, res) => {
  const verifypay = await idpay.verify(req.body.id, req.body.order_id);
  const inquirypay = await idpay.inquiry(req.body.id, req.body.order_id);
  console.log(verifypay);
  res.send(inquirypay);
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`));