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}!`));