کدهای خطای وب‌سرویس پیامک؛ معنی هر خطا و راه‌حل آن

کدهای خطای وب‌سرویس پیامک؛ معنی هر خطا و راه‌حل آن

تیم وب‌سرویس برنامه‌نویسان

وب‌سرویسی که فقط بگوید «خطا»، برنامه‌نویس را ساعت‌ها سرگردان می‌کند. در درگاه پیامک (SMSGate) بدنهٔ همهٔ پاسخ‌ها یک قالب ثابت دارد:

{ "code": 164, "message": "موجودی کافی نیست", "data": {} }

code برای موفقیت ۱۰۰ است و خطاها از ۱۰۱ شروع می‌شوند. برنامه‌تان را بر اساس این عدد بنویسید و message را که توضیح فارسی خطاست، برای لاگ و پشتیبانی نگه دارید. در ادامه، کدها را به‌ترتیب موضوع مرور می‌کنیم.

کلید API و IP

کدمعنیراه‌حل
۱۰۱کلید API ارسال نشدهسرآیند Authorization: Bearer کلید را بفرستید و مطمئن شوید پراکسی یا فریم‌ورک آن را حذف نمی‌کند.
۱۰۲کلید نامعتبر استکلید را دوباره کپی کنید؛ معمولاً فاصله یا کاراکتر اضافه در ابتدا یا انتهای آن است.
۱۰۳کلید غیرفعال یا تعلیق شدهوضعیت کلید را در فهرست کلیدها ببینید یا از کلید فعال دیگری استفاده کنید.
۱۰۴IP شما برای این کلید مجاز نیستIP خروجی واقعی سرور را به فهرست IPهای مجاز همان کلید اضافه کنید.
۱۰۵کلید به این عملیات دسترسی ندارددسترسی (scope) لازم را به کلید بدهید، یا از کلیدی استفاده کنید که این اجازه را دارد.
۱۲۲کلید API پیدا نشددر عملیات مدیریت کلید، شناسهٔ کلید مقصد را بررسی کنید.

حساب کاربری

کدمعنیراه‌حل
۱۰۶حساب به این عملیات دسترسی ندارداین امکان برای حساب شما فعال نشده؛ با پشتیبانی هماهنگ کنید.
۱۰۷حساب غیرفعال استبا پشتیبانی تماس بگیرید.
۱۰۸حساب تعلیق شدهبا پشتیبانی تماس بگیرید.
۱۲۳این دسترسی روی حساب داده نشدهکلید نمی‌تواند دسترسی‌ای بگیرد که خود حساب ندارد.

داده‌های درخواست

کدمعنیراه‌حل
۱۱۰داده‌های ارسالی نامعتبربدنه را با JSON معتبر و سرآیند Content-Type: application/json بفرستید.
۱۱۱فیلد اجباری نیامدهنام فیلد در data.field می‌آید؛ مثلاً body در ارسال غیرنظیربه‌نظیر.
۱۱۵منبع پیدا نشدشناسه‌ای که در نشانی فرستاده‌اید (مثلاً شناسهٔ ارسال) را بررسی کنید.
۱۱۹ تا ۱۲۱IP تکراری، IP پیدا نشد، قالب IP نادرستدر مدیریت فهرست IP، نشانی را درست وارد کنید. نشانی‌های IPv6 باید در نشانی درخواست URL Encode شوند.
۱۲۶مقدار اعتبار نامعتبرمبلغ انتقال باید عدد صحیح مثبت و به ریال باشد.

خط فرستنده و گیرندگان

کدمعنیراه‌حل
۱۵۰شمارهٔ فرستنده نامعتبرشمارهٔ خط را با ارقام لاتین و بدون پیشوند ۹۸ بفرستید.
۱۵۲هیچ گیرندهٔ معتبری نیستهمهٔ شماره‌ها نامعتبر بوده‌اند. اگر فقط برخی نامعتبر باشند، بقیه ارسال می‌شوند و آن‌ها در پاسخ با وضعیت invalid مشخص می‌شوند.
۱۵۷برای این فرستنده اپراتوری پیدا نشدشمارهٔ خط را بررسی کنید؛ احتمالاً پیش‌شمارهٔ آن اشتباه است.
۱۵۹این خط متعلق به حساب شما نیستفهرست خطوط حساب را با GET /v1/account/line ببینید و از یکی از همان‌ها استفاده کنید.
۱۶۰خط غیرفعال استخط دیگری را انتخاب کنید یا برای فعال‌سازی با پشتیبانی تماس بگیرید.

موجودی و پرداخت

کدمعنیراه‌حل
۱۶۴ و ۱۲۴موجودی حساب کافی نیستحساب را شارژ کنید. بهتر است برای موجودی هشدار بگذارید تا ارسال‌های ضروری مثل کد تأیید ناگهان قطع نشوند.
۱۲۵موجودی این کلید کافی نیستحساب موجودی دارد، اما کلید موجودی ندارد؛ از حساب اصلی به این کلید اعتبار منتقل کنید.
۱۳۲ و ۱۳۳درگاه پرداخت پیکربندی نشده یا در دسترس نیستبرای شارژ آنلاین کمی بعد دوباره تلاش کنید یا از راه پنل شارژ کنید.

خطاهای موقت: دوباره تلاش کنید، ولی درست

کدمعنیراه‌حل
۱۱۶خطای سروربا فاصله دوباره تلاش کنید.
۱۱۷سرویس صف در دسترس نیستدرخواست پیش از هر ثبت رد شده، پس تکرار آن پیام تکراری نمی‌سازد.

برای خطاهای موقت، تکرار با فاصلهٔ فزاینده (مثلاً ۲، ۴ و ۸ ثانیه) و تعداد محدود را پیاده کنید. خطاهای ۴xx مثل داده یا کلید نامعتبر را تکرار نکنید؛ با تکرار درست نمی‌شوند و فقط لاگ را شلوغ می‌کنند.

پاسخ «پذیرفته» با وضعیت pending: گاهی پاسخ موفق است، ولی وضعیت ارسال به‌جای enqueued، pending است؛ یعنی ارسال ثبت شده اما هنوز به صف نرسیده. این خطا نیست؛ همان درخواست را دوباره نفرستید، وگرنه پیام تکراری ارسال می‌کنید.

جمع‌بندی

بیشتر خطاهای وب‌سرویس در سه دسته‌اند: کلید و IP، داده و خط، و موجودی. هرکدام راه‌حل روشنی دارد. اگر خطایی برطرف نشد، با ثبت تیکت پشتیبانی و فرستادن کد خطا، زمان درخواست و بدنهٔ آن (بدون کلید API) سریع‌تر به جواب می‌رسید. مستندات کامل در doc.webservice.ir است.