من یه پروژه دارم که میخواهم با api پیامک ارسال کنم. خواهشا تا آخر موارد زیر خوانده شود.
برای ششروع کار وب سرویسهایی برای ثبت نام/ ورود در اختیار قرار دهید که مراحل آن به این صورت خواهد بود.
api.php
Route::namespace('Api')->prefix('user')->group(function (){
Route::get('verify/{number}', 'ApiController@verify');
Route::get('resend/{number}', 'ApiController@resend');
Route::get('login/{number}/{code}', 'ApiController@login');
});
ApiController.php
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\User;
use Carbon\Carbon;
class ApiController extends Controller
{
public function verify($number) {
$user = User::first(['mobile'=> $number]);
// dd('salam ');
$code = substr((string) uniqid(), 0, 5);
$user->first_name = "علی";
$user->last_name = "علیزاده";
$user->mobile = "09389267856";
$user->birth_date = "1366/08/08";
$user->gender = 1;
$user->province_id = 1;
$user->city_id = 1;
$user->address = 'خیابان ازادی - ۱۰ متری دوم پلاک ۲۱';
$user->email = 'ali@gmail.com';
$user->email = 'ali@gmail.com';
$user->password = bcrypt(123456);
$user->lastVerifyRequest = Carbon::now();
$response = ['user' => $user];
$user->save();
if ($user->exists) {
array_add($response, 'exists', true);
}else {
array_add($response, 'exists', false);
}
sms($number, $code);
array_add($response, 'status', 200);
return $response;
}
public function resend ( $number ) {
$user = User::firstOrCreate(['mobile'=> $number]);
if ($user->exists){
$response = ['user' => $user];
if (Carbon::now()->lt($user->lastVerifyRequest->addMinutes(10))){
sms($number, $user->code);
array_add($response, 'status', 200);
}else{
$code = substr((string) uniqid(), 0, 5);
$user->code = $code;
$user->lastVerifyRequest = Carbon::now();
$user->save();
sms($number, $user->code);
array_add($response, 'status', 200);
}
return $response;
}else{
return ['status' => 404];
}
}
public function login ( $number, $code ) {
$user = User::firstOrCreate(['mobile'=> $number]);
if ($user->code == $code){
return ['status' => 200, 'user' => $user];
}else {
return ['status' => 405];
}
}
}
جدول کاربران
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('level')->default('user');
$table->string('first_name');
$table->string('last_name');
$table->string('mobile')->unique();
$table->string('code');
$table->boolean('verification_code')->default(false);
$table->string('birth_date');
$table->boolean('gender');
$table->bigInteger('province_id')->unsigned();
$table->bigInteger('city_id')->unsigned();
$table->text('address');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('api_token' , 60)->nullable()->unique();
$table->rememberToken();
$table->timestamps();
$table->foreign('province_id')->references('id')->on('provinces')->onDelete('cascade');
$table->foreign('city_id')->references('id')->on('cities')->onDelete('cascade');
});
}
فیلد code یه کد 5 رقمی است که به کارربر فرستاده میشود
فیلد verification_code اگر 1 باشد به معنای تایید شده است
ولی اگزverification_code اگر 0 باشد به معنای تایید نشده است
فیلد mobile هم که مشخصه شماره موبایل است.
ضروریه
شاید پاسخ شما همینجا باشد
Api پنل پیامک کد تایید میفرسته پس هر چی درخواست بدی کدشو میفرسته .... ، بعد بر روی یوزر مورد نظر کد تایید تو دیتابیس ذخیره کن و عمل مقایسه را از ورود کاربر انجام بده ، حالا میتونی جدول لاگ زمان رخداد هارو پر کنی و بر اون اساس هم عمل مقایسه و اکشن هاتو تعریف کنی و خروجی مناسب به کاربر بفرستی کل این فراید میتونی در یک api انجام بدی
کد هم که گفتم منظورم اینه که هر فایل جیسونی اولین فیلد خروجی code باشه که مقادیر اون به من نشون میده که چیکار کنم با خروجی تحویلی از شما
مثلاً پیام بعدی رو دقت کنید که به این شکل باشه:
api/v1/comments/create?api_token
(post)
برای ایجاد نظر برای کاربر با محدودیت هر روز یک نظر
پارامتر های ارسالی:
title => required | string | max:100,
text => required | string | max:1000,
کد های بازگشتی:
0 => موفقت آمیز - نظر کاربر با موفقیت به ثبت رسید.
1 => خطا - فرمت اطلاعات خواسته شده نادرست است.
2 => خطا - کاربر به تازگی نظر ثبت کرده است. حداقل باید یک روز از ثبت آخرین نظر بگذرد..
401 => خطا - احراز هویت نا موفق