اتصال فروشگاه اینترنتی به نفیس پی
راهنمای گامبهگام افزودن «خرید اعتباری با نفیس پی» به صفحهی پرداخت فروشگاه شما.
پیشنویس. وبسرویس عمومی پذیرندگان روی https://api.nafispay.com در حال آمادهسازی است. روند، فیلدها، وضعیتها و قواعد برگشت وجه در این صفحه از هستهی فعلی پرداخت نفیس پی گرفته شدهاند؛ مسیرهای HTTP نمونهها پیشنمایش هستند و پیش از فعالسازی ممکن است تغییر کنند. هر جا قابلیتی هنوز فعال نیست، با «بهزودی» مشخص شده است.
۱نمای کلی روند
- مشتری در صفحهی پرداخت فروشگاه شما «خرید اعتباری با نفیس پی» را انتخاب میکند.
- سرور فروشگاه یک پرداخت در نفیس پی میسازد و یک آدرس هدایت (redirect) میگیرد.
- مشتری به صفحهی پرداخت لندتک (ارائهدهندهی اعتبار) هدایت میشود و خرید را با اعتبار خود تأیید میکند.
- لندتک مشتری را به نفیس پی برمیگرداند و نفیس پی پرداخت را سمت سرور با لندتک تأیید (verify) میکند.
- سرور فروشگاه وضعیت پرداخت را از نفیس پی استعلام میکند و فقط در وضعیت موفق، سفارش را نهایی میکند.
- در صورت لغو سفارش، برگشت کامل وجه در مهلت مجاز درخواست میشود.
۲احراز هویت
کلید وبسرویس (API key) پس از تأیید و امضای قرارداد پذیرندگی، از پنل پذیرنده صادر میشود. بهزودی — صدور کلید در پنل هنوز فعال نیست و تا آن زمان کلید از طریق کارشناس نفیس پی هماهنگ میشود.
- کلید را فقط روی سرور نگه دارید؛ هرگز در کد سمت مرورگر یا اپلیکیشن موبایل قرار ندهید.
- همهی درخواستها فقط از روی HTTPS ارسال شوند.
- در نمونههای این صفحه به جای کلید واقعی از
YOUR_API_KEYاستفاده شده است.
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
قالب نهایی هدر احراز هویت همزمان با انتشار وبسرویس اعلام میشود.
۳ساخت پرداخت
برای هر سفارش یک پرداخت بسازید. مبلغ به ریال و عدد صحیح است.
POST https://api.nafispay.com/v1/payments (پیشنمایش)
نمونهی درخواست
{
"paymentId": "ORDER-10045",
"amountRial": 125000000,
"customer": {
"mobile": "09120000000",
"nationalId": "0000000000"
},
"items": [
{ "name": "گوشی موبایل", "count": 1, "amountRial": 125000000 }
]
}
| فیلد | توضیح |
|---|---|
paymentId | شناسهی یکتای پرداخت از سمت شما. ارسال دوبارهی همان شناسه پرداخت تکراری نمیسازد و همان نتیجهی قبلی برمیگردد (reused: true). |
amountRial | مبلغ کل به ریال. حداقل و حداکثر مبلغ برای هر لندتک متفاوت است و مبلغ خارج از بازه رد میشود. |
customer.mobile | شمارهی موبایل مشتری به شکل 09xxxxxxxxx (۱۱ رقم). |
customer.nationalId | کد ملی ۱۰ رقمی؛ فقط برای لندتکهایی که آن را لازم دارند. |
items | اختیاری؛ اقلام سبد خرید. |
نمونهی پاسخ
{
"paymentId": "ORDER-10045",
"redirect": {
"url": "REDIRECT_URL",
"method": "GET"
},
"reused": false
}۴هدایت مشتری و بازگشت (callback)
- مشتری را به
redirect.urlبفرستید. اگرredirect.methodبرابرPOSTبود، فیلدهایredirect.formFieldsرا در یک فرم خودکار (auto-submit) به همان آدرس ارسال کنید. - پس از پرداخت یا انصراف، لندتک مشتری را به آدرس بازگشت نفیس پی برمیگرداند؛ نفیس پی همان لحظه پرداخت را سمت سرور تأیید میکند و صفحهی نتیجه را به مشتری نشان میدهد.
- پارامترهای آدرس بازگشت را هرگز بهعنوان نشانهی موفقیت نپذیرید؛ همیشه وضعیت را از سرور استعلام کنید (بخش ۵).
- بازگشت مستقیم مشتری به آدرس دلخواه فروشگاه و اعلان سروربهسرور (webhook): بهزودی.
۵تأیید پرداخت
تأیید نهایی با لندتک را نفیس پی سمت سرور انجام میدهد. سرور شما فقط وضعیت را استعلام میکند:
GET https://api.nafispay.com/v1/payments/ORDER-10045 (پیشنمایش)
{
"paymentId": "ORDER-10045",
"state": "VERIFIED",
"outcome": "success"
}
- سفارش را فقط وقتی نهایی کنید که
outcomeبرابرsuccessباشد. - در
pending(مثلاًPAID_UNVERIFIED) سفارش را باز نگه دارید و دوباره استعلام کنید؛ نفیس پی وضعیت را با لندتک همگام میکند. - در
reviewپرداخت برای بررسی به پشتیبانی نفیس پی ارجاع شده است؛ آن را موفق یا ناموفق فرض نکنید.
۶برگشت وجه
POST https://api.nafispay.com/v1/payments/ORDER-10045/refund (پیشنمایش)
- فقط برگشت کامل مبلغ پشتیبانی میشود؛ برگشت بخشی از مبلغ فعلاً امکانپذیر نیست.
- برگشت فقط برای پرداخت موفق و در مهلت مجاز هر لندتک ممکن است (بسته به لندتک، چند روز پس از خرید یا تا پیش از تسویه). پس از پایان مهلت، درخواست رد میشود.
- برای یک پرداخت همزمان فقط یک عملیات اجرا میشود؛ درخواست موازی با خطای تداخل رد میشود.
۷وضعیتها و خطاها
| state | معنا | outcome |
|---|---|---|
AWAITING_PAYMENT | در انتظار پرداخت مشتری | pending |
PAID_UNVERIFIED | پرداختشده، هنوز تأیید نشده | pending |
VERIFIED | موفق — تأیید شد | success |
SETTLE_QUEUE | موفق — در صف تسویه | success |
SETTLED | تسویهشده (دیگر قابل برگشت نیست) | success |
REFUND_WINDOW_CLOSED | موفق؛ مهلت برگشت تمام شده | success |
REVERSED / REFUNDED | برگشت کامل وجه انجام شد | failed |
CANCELED / FAILED / EXPIRED | لغو، ناموفق یا منقضی | failed |
NEEDS_REVIEW | نیاز به بررسی پشتیبانی | review |
خطاها
{ "error": "validation", "message": "شماره موبایل معتبر نیست" }
| کد HTTP | موارد |
|---|---|
400 | اطلاعات نامعتبر: مبلغ خارج از بازه، موبایل یا کد ملی نادرست |
409 | عملیات دیگری روی همین پرداخت در جریان است، یا لندتک موقتاً در دسترس نیست |
422 | برگشت وجه ممکن نیست: برگشت جزئی، پایان مهلت، یا وضعیت نامناسب |
502 | خطا یا پاسخ نامشخص از لندتک؛ وضعیت با استعلام بعدی روشن میشود |
پیام خطاها فارسی و قابل نمایش به کاربر است.
۸نکات آزمایش
- محیط آزمایشی (sandbox) عمومی و کلید آزمایشی: بهزودی. تا آن زمان آزمایش اتصال با هماهنگی کارشناس نفیس پی انجام میشود.
- با مبلغ کم آزمایش کنید و برای هر تلاش یک
paymentIdتازه بسازید. - سناریوهای انصراف مشتری، بستن صفحه پیش از بازگشت، و تکرار درخواست ساخت با همان شناسه را هم بیازمایید.
- موفقیت را فقط از استعلام سمت سرور بپذیرید، نه از صفحهی بازگشت.
- پرسش یا مشکل: info@nafispay.com · ۰۹۳۷۰۵۶۹۴۹۴