ملی ای‌پی‌آی

کارت به نام خودم است ولی تطابق با کد ملی منفی است: فهرست عیب‌یابی

اگر تطابق کارت و کد ملی منفی شد، به ترتیب تاریخ تولد، شماره کارت و این فرض را بررسی کنید که کارت مال شخص دیگری است؛ هر بار فقط یک چیز را عوض کنید.

اگر کارت واقعاً به نام شماست و تطابق با کد ملی «منفی» برمی‌گردد، اول تاریخ تولد را بررسی کنید، نه کارت. آمار ندارم، ولی از میان ورودی‌ها این یکی است که کاربر از حفظ تایپ می‌کند و جابه‌جایی‌اش دیده نمی‌شود.

این نوشته یک فهرست عیب‌یابی به ترتیب احتمال است، برای کسی که از تطابق کد ملی و کارت جواب غیرمنتظره گرفته: چه چیزی را به چه ترتیبی چک کنم؟

اول بفهمید کدام جواب را گرفته‌اید

سه نتیجه ممکن است و فرقشان اساسی است.

  • خطای ورودی (invalid_input). پرسش اصلاً انجام نشد. شماره کارت با الگوریتم کنترلی نمی‌خواند، کد ملی ساختار معتبر ندارد یا تاریخ تولد ناقص است. هزینه ندارد و راه‌حل ساده است: ورودی را اصلاح کنید.
  • نتیجه منفی (matched: false). پرسش انجام شد و کارت با این کد ملی و تاریخ تولد نخواند. هزینه دارد.
  • کارت یافت نشد. شماره‌ای که در سیستم بانکی ثبت نیست. این هم یک پاسخ معتبر و هزینه‌دار است.

اگر خطای ورودی است، بقیهٔ این نوشته به کارتان نمی‌آید. اگر دو تای دیگر است، ادامه دهید.

فهرست عیب‌یابی

۱. تاریخ تولد

محتمل‌ترین مظنون. کارت‌های بانکی تاریخ تولد ندارند، ولی سرویس آن را از شما می‌خواهد، و آنچه باید بفرستید تاریخ ثبت‌شده برای صاحب کد ملی است.

چه چیزی را بررسی کنید:

  • شمسی است یا میلادی؟ میلادی در این فیلد معنا ندارد.
  • روز و ماه جابه‌جا نشده‌اند؟ 1370/05/01 با 1370/01/05 فرق دارد و هر دو معتبرند.
  • کاربر از روی همان سندی تایپ کرده که ثبت از آن آمده؟ تاریخ روی شناسنامه یا کارت ملی را مبنا بگیرید، نه حافظه را.

۲. شماره کارت

شمارهٔ کارت شانزده رقم است و رقم آخرش کنترلی است. خطای تایپی معمولاً در همان اعتبارسنجی گرفته می‌شود. ولی دو خطای تایپی که همدیگر را خنثی کنند ممکن است از کنترل بگذرند و کارتی دیگر یا ناموجود بدهند. اگر کاربر از روی عکس یا پیامک کپی کرده، دوباره از روی خود کارت یا برنامهٔ بانک بخواهید.

یک نکتهٔ ظریف: کارت‌های تازه صادرشده یا جایگزین ممکن است شمارهٔ دیگری داشته باشند. کاربر شماره کارت قدیمی را می‌دهد. اینکه شمارهٔ قدیمی چه مدت در سیستم می‌ماند را نمی‌دانم و حدس نمی‌زنم؛ فقط بدانید که این یک علت محتمل «کارت یافت نشد» است.

۳. کارت واقعاً مال این شخص نیست

گاهی پاسخ منفی درست است. کارتی که به نام همسر، پدر یا دوست است، با کد ملی کاربر نمی‌خواند. کاربرانی که «فقط می‌خواهند پول بگیرند» اغلب کارتی را که دم دستشان است وارد می‌کنند، نه کارتی را که به نام خودشان است. پیام شما باید بگوید «کارت باید به نام خود شما باشد» تا از ابتدا روشن شود.

۴. کد ملی

رقم کنترل را سرویس بررسی می‌کند، ولی ممکن است کد ملی ورودی ساختار درست داشته باشد ولی مال شخص دیگری باشد. اگر کاربر چند عضو خانواده را در یک حساب ثبت می‌کند، کد ملی عضو دیگر به‌راحتی در فیلد اشتباه می‌نشیند.

۵. حساب‌های مشترک و کارت‌های ویژه

اینجا باید صادق باشم: اینکه سرویس برای کارتِ حساب مشترک، کارت اعتباری سازمانی یا کارت هدیه چه می‌گوید را از مستندات نمی‌توانم تأیید کنم. اگر محصول شما با چنین کارت‌هایی سروکار دارد، پیش از وعده‌دادن با چند نمونهٔ واقعی خودتان بیازمایید.

یک روش ساده برای جداکردن علت‌ها

اگر می‌توانید یک بار دیگر بپرسید، کاری که می‌کنم این است: فقط یک متغیر را عوض کنید. اول تاریخ تولد را از روی سند دوباره وارد کنید. اگر باز منفی بود، شماره کارت را از روی خود کارت بخوانید. اگر باز منفی بود، فرض کنید کارت مال شخص دیگری است.

چرا یک‌یک؟ چون هر تلاش یک پرسش هزینه‌دار است. تغییر همزمان چند چیز اگر درست شد نمی‌گوید کدام علت بوده، و اگر نشد پول بیشتری رفته است.

چه پیامی به کاربر بدهید

پیام نتیجهٔ منفی دو خطا دارد که هر دو رایج‌اند. یکی اتهام: «کارت شما متعلق به شما نیست». دیگری ابهام: «خطا رخ داد». هیچ‌کدام کمک نمی‌کنند.

متنی که پیشنهاد می‌کنم: «کارت با اطلاعات هویتی واردشده نخواند. تاریخ تولد و شماره کارت را دوباره بررسی کنید، و مطمئن شوید کارت به نام خودتان است.» سه چیز در یک جمله، به ترتیب احتمال، بدون نام‌بردن از علت قطعی، چون علت قطعی را خودمان هم نمی‌دانیم.

اگر چند بار پشت سر هم منفی شد، دیگر پیام را تکرار نکنید. راه دیگری نشان بدهید: تماس با پشتیبانی یا مسیر مدرک. کاربری که سه بار همان پیام را ببیند، یا می‌رود یا شروع به حدس‌زدن می‌کند.

داده‌ای که برای عیب‌یابی لازم دارید

برای بررسی شکایت‌ها لازم نیست ورودی‌ها را نگه دارید. همین‌ها کافی‌اند: زمان، نوع نتیجه (ورودی بد، منفی، یافت نشد، موفق)، چهار رقم آخر کارت، و requestId. اگر نسبت «یافت نشد» به کل ناگهان بالا رفت، یا فرم شما شماره‌ها را خراب می‌کند (مثلاً ارقام فارسی را درست تبدیل نمی‌کند)، یا چیزی در نسخهٔ جدید فرم عوض شده. اگر نسبت «منفی» بالا رفت، به فرم تاریخ تولد نگاه کنید.

وقتی کاربر سازمانی است

اگر مشتری شما شرکت یا کسب‌وکار است، «کارت به نام خود فرد» ممکن است اصلاً برای او معنا نداشته باشد: کارت شرکتی به نام شخص حقوقی صادر می‌شود و کد ملی یک انسان با آن نمی‌خواند. در چنین محصولی، پیش از اتصال بپرسید پرداخت‌ها برای شخص حقیقی است یا حقوقی. برای حقوقی، این سرویس مسیر مناسب نیست و اگر آن را بگذارید، پاسخ منفی را برای همه مشتریان سازمانی خواهید گرفت.

جدول خلاصه

نشانهعلت محتملاقدام
منفی، کاربر مطمئن است کارت مال خودش استتاریخ تولداز روی سند دوباره
«کارت یافت نشد»شماره غلط یا کارت عوض‌شدهکارت را دوباره بخوانید
منفی، کارت واقعاً برای کس دیگرکارت دیگریکارت خودش را بخواهید
خطای ورودیقالباصلاح فرم

در فرم چه چیزی کمک می‌کند

  • فیلد تاریخ تولد را با تقویم شمسی بسازید، نه یک کادر متنی آزاد.
  • شماره کارت را با فاصله‌های چهارتایی نشان بدهید، ولی پیش از ارسال فاصله‌ها را بردارید (API فاصله را هم می‌پذیرد).
  • کنار فیلد کارت بنویسید «کارت باید به نام خودتان باشد».
  • بعد از نتیجهٔ منفی، دقیقاً بگویید کدام دو چیز را بررسی کند، نه یک پیام کلی.

آنچه این سرویس نمی‌کند

  • نمی‌گوید کدام ورودی اشتباه بوده؛ فقط می‌گوید جفت نمی‌خواند.
  • موجودی، مسدودی و انقضا را بررسی نمی‌کند.
  • نام صاحب کارت را برنمی‌گرداند. اگر نام صاحب را لازم دارید، سرویس دیگری باید بخواهید. راهنمای تبدیل شماره کارت به شبا یکی از مسیرهای بانکی را شرح می‌دهد.
  • ورودی مستندات API را عوض نمی‌کند: تاریخ تولد اجباری است.

در یک نگاه

وقتی تطابق کارت و کد ملی منفی است، اول تاریخ تولد، بعد شماره کارت، بعد این فرض که کارت مال خود فرد نیست. هر بار یک چیز را عوض کنید و پیش از پرسش دوباره، ورودی را از روی سند بخوانید نه حافظه.

آخرین بازبینی: تیم تحریریه ملی ای‌پی‌آی

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

API تطابق کد ملی و کارت

بررسی تعلق یک کارت بانکی به یک کد ملی.

مشاهده مشخصات فنی و تعرفه

راهنماهای مرتبط

پرسش و تجربه کاربران

اگر این راهنما جوابتان را نداد، همین‌جا بپرسید. پرسش‌ها را تیمملی ای‌پی‌آی پاسخ می‌دهد و هر نظر پیش از انتشار بررسی می‌شود.

هنوز پرسشی ثبت نشده، اولین نفر باشید.