نمونه کد 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 | شبکه یا پاسخ نامعتبر. نتیجه نامعلوم است؛ استعلام بگیرید |