نمونه کد Node.js

کیت Node.js فینوپال برای اتصال درگاه در پروژه‌های سمت سرور است. مبلغ‌ها به ریال و حداقل ۱۰۰۰ ریال هستند. پیش‌نیاز Node.js نسخه ۱۸ یا بالاتر است.

تا زمان انتشار روی npm، بسته را از مسیر محلی نصب کنید. بعد از انتشار:

npm install finopal-node-sdk

پیکربندی و درخواست

مرچنت‌کد را از پنل کاربری بردارید. order_id و توضیحات الزامی‌اند. توضیحات حداکثر ۲۵۵ کاراکتر است. میزبان واقعی https://payment.finopal.ir و سندباکس https://sandbox.finopal.ir است.

import { FinoPal } from 'finopal-node-sdk';

const finopal = new FinoPal({
  merchantId: 'fino-xxxx-xxxx-xxxx-xxxx',
  sandbox: false,
});

const response = await finopal.payments.create({
  amount: 10000,
  callback_url: 'https://shop.example/callback',
  description: 'سفارش ۱۲۳۴۵',
  order_id: 'ORD-12345',
});

const url = response.payment_url || finopal.payments.getRedirectUrl(response.authority);

تأیید پرداخت

فقط وقتی Status=OK است (در سندباکس Status=0) تأیید کنید. مبلغ باید همان مبلغ درخواست باشد. کد ۱۰۰ تازه تأییدشده و کد ۱۰۱ قبلاً تأییدشده است.

const response = await finopal.verifications.verify({
  amount,
  authority,
});

استعلام، ریورس و کارمزد

const inquiry = await finopal.inquiries.inquire({ authority });
await finopal.reversals.reverse({ authority });
const fee = await finopal.fees.calculate({ amount: 1000000 });

fee_type برابر Merchant یعنی کارمزد روی پذیرنده و Payer یعنی روی خریدار است. اگر verify با خطای شبکه برگشت، پرداخت تازه نسازید و اول استعلام بگیرید.

خطا

کلاسمعنی
ValidationErrorورودی نامعتبر؛ درخواستی ارسال نشده
ResponseErrorگیت‌وی درخواست را رد کرده و کد خطا دارد
TransportErrorشبکه یا پاسخ نامعتبر. نتیجه نامعلوم است؛ استعلام بگیرید