Skip to content

nrmz/transfer-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

شرح کلی پروژه

فرض کنید قرار است یکی از API های یک سیستم بانکی را توسعه بدهید. لطفا با استفاده از آخرین نسخه فریم ورک لاراول سیستمی فوق را با شرایط زیر پیاده سازی کنید

#فرضیات پروژه

  • هر کاربر در سیستم می تواند یک شماره موبایل و چندین شماره حساب و به ازای هر شماره حساب هم چند شماره کارت داشته باشد

  • در تمامی موارد در صورت نیاز میتوانید از مقادیر فرضی استفاده کنید. مثلا اگر نیاز هست که یک API KEY از یک سرویس داشته باشید میتوانید آن را با مقدار فرضی تکمیل کنید و پروژه را تحویل نمایید. مثلا اگر شما نیاز به یک کلید از سرویس کاوه نگار داخل پروژه دارید می توانید این کلید را صرفا یه مقدار دلخواه در نظر بگیرید

- KAVEHNEGAR_API_KEY = 12345

#نیازمندی های پروژه:

  • تمام Migration های دیتابیس مورد نیاز پروژه را خودتان اضافه کنید.

  • تمام Seeder های دیتابیس مورد نیاز پروژه را جهت سهولت نصب، راه اندازی و تست پروژه خودتان اضافه کنید.

  • یک API بنویسید که شماره کارت مبدا و مقصد را بگیرد و در صورت کفایت موجودی عملیات انتقال مبلغ را انجام دهد.

  • شماره کارت باید اعتبار سنجی (Validate) شود و فقط یک شماره کارت معتبر را بپذیرد. پس شماره کارتهایی که در سیستم بانکی ایران معتبر نیستن را سیستم شما نباید بپذیرد مثلا 1234-1234-1234-1234 نامعتبر است.

  • حداقل مبلغ برای انجام تراکنش ۱۰۰۰ تومان و حداکثر ۵۰ میلیون تومان است.

  • انجام هر تراکنش ۵۰۰ تومان کارمزد برای بانک شما به همراه دارد که باید این کارمزدها را یک جدول جداگانه نگهداری کنید.

  • این API باید قابلیت پردازش شماره کارت و مبلغ با اعداد انگلیسی و فارسی و عربی را داشته باشد و کلاینت را مجبور نکن که حتما اعداد را انگلیسی ارسال کند.

  • در جداول مرتبط با تراکنش های انجام شده, هیچ ارتباط مستقیمی به کاربر نباید وجود داشته باشد. تنها ارتباط مستقیم با کارت مجاز است.

  • بعد از انجام این تراکنش باید برای هر دو کاربر مبدا و مقصد پیامک کاهش/افزایش موجودی ارسال شود.

  • متن این پیامک باید براحتی توسط توسعه دهندگان بعدی قابل تغییر باشد.

  • سیستم باید امکان ارسال پیامک از سرویس شرکتهای پیامک زیر را داشته باشد

  • سیستم باید طوری نوشته شود که قابلیت افزودن سرویس جدید ارسال پیامک از شرکتهای جدید را داشته باشید مثلا اگر در آینده خواستیم سرویس ارسال پیامک از شرکت sms.ir را هم اضافه کنیم براحتی و با کمترین تغییرات بتوانیم این کار را انجام دهیم.

  • یک API طراحی کنید که اطلاعات سه کاربری که در ۱۰ دقیقه ی اخیر بیشترین تراکنش را دارند, به همراه لیست ۱۰ تراکنش آخر هر کدام, بازگرداند.

#ملاحظات:

-حتما API باید بصورت REST توسعه داده شود.

-مکانیزم احراز هویت API مهم نیست و میتوانید آن را در نظر نگیرید.

-رعایت تمام استانداردهای برنامه نویسی الزامی است.

-استفاده از best peractise الزامی است.

-استفاده از Design Pattern ها در صورت امکان الزامی است.

-پروژه باید بصورت repository روی سایت Github یا Gitlab تحویل داده شود.

-هر دو وب سایت کاوه نگار و قاصدک بعد از ثبت نام یک مبلغ ناچیز برای تست در پنل کاربر شارژ میکنند و نیازی به هزینه کردن وجود ندارد. نهایتا هم کیفیت کد بررسی خواهد شد و نیاز به ارسال واقعی پیامک وجود ندارد.

-نوشتن تست الزامی نیست اما قطعا امتیاز اضافه به همراه خواهد داشت.

##نصب و راه‌اندازی

- تنظیمات دیتابیس فایل env قرار دارد

‍‍‍‍‍‍‍‍‍‍‍‍‍DB_CONNECTION=mysql

DB_HOST=mysql

DB_PORT=3306

DB_DATABASE=homestead

DB_USERNAME=homestead

DB_PASSWORD=secret

- برای اجرای برنامه نیاز است ابتدا دستور زیر را اجرا تا پکیج های لازم نصب شود

docker-compose run --rm composer install

- سپس با دستور زیر برنامه اجرا می شود و در http://localhost:8000 دسترس خواهد بود

docker-compose up -d server

- با اجرای دستور زیر علاوه بر ساخت جداول دیتابیس؛ داده های تصادفی هم برای تست ثبت خواهد شد

docker-compose run --rm artisan migrate --seed

- برای احراز هویت کاربران از passport استفاده شده است و نیاز است با دستور زیر نصب و راه اندازی شود

لطفا بعد از هر بار اجرای دستور migrate، مجددا دستور زیر اجرا شود

docker-compose run --rm artisan passport:install

- با استفاده از اطلاعات زیر می توانید با متد login در پست من وارد شوید

"mobile": "09128458991"

"password": "password"

- برای تنظیم ارسال پیامک باید پارامتر های زیر در فایل .env وارد نمایید و در حال حاضر از سامانه های kavenegar , smsir پشتیبانی می شودو و پیامک ها در فایل لاگ ثبت می شود

SMS_PROVIDER_NAME=kavenegar

SMS_PROVIDER_API_KEY=123456

- برای تغییر متن پیام می توانید به فایل زیر مراجعه کنید و متن پیام واریز و برداشت را ویرایش نمایید

./src/lang/fa/messages/

پست من

- در لینک زیر لیست Api و نمونه request & response در دسترس است

Postman.

- لطفا پارامتر token و baseUrl در environment postman تعریف کنید
  • به محض لاگین یا رجیستر به صورت اتوماتیک token از سمت سرور دریافت خواهد شد ونیازی به مقداردهی دستی ندارد

baseUrl: http://localhost:8000/api

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages