چگونه با api پیامک ارسال کنیم
https://lamtakam.com/qanda/2401/چگونه-با-api-پیامک-ارسال-کنیم 0من یه پروژه دارم که میخواهم با api پیامک ارسال کنم. خواهشا تا آخر موارد زیر خوانده شود.
برای ششروع کار وب سرویسهایی برای ثبت نام/ ورود در اختیار قرار دهید که مراحل آن به این صورت خواهد بود.
- شماره ورودی کاربر بوسیله یک api برای شما ارسال می شود، شما وجود یا عدم وجود آن در سامانه را بررسی میکنید.
در صورت وجود کد تایید را به کاربر از طریق پیامک ارسال میکنید.
در صورت عدم وجود نیز کد تایید بصورت پیامک ارسال میشود.
با این تفاوت که برای هر کدوم از این انواع کد مربوطه را برای من ارسال می کنید.
خوب یک api نیز برای درخواست مجدد همان کد تایید(اینکه دوباره پیامک ارسال شود) در نظر بگیرید.
در ضمن کد تایید ایجاد شده توسط سامانه را که یک عدد 4 یا 5 رقمی می باشد به مدت 10 دقیقه معتبر باشد، در صورت عدم ورود کاربر در طول این10دقیقه، این کد از اعتبار ساقط میشود و نیاز به ارسال کد جدید می باشید.
در ضمن در زمان درخواست مجدد برای کد تایید نیز همان کد تایید اولیه ارسال شود(در این بازه 10 دقیقه) در غیر اینصورت کد جدید تولید و این کد جدید ارسال شود. - api برای تایید کد ورودی ارسال شده توسط پیامک
در این api نیز باز نوع ورود که ثبت نام جدید می باشد یا قدیم(ورود مجدد) ارسال شود.
در صورتی که کاربر قدیمی باشد، اطلاعات کاربری کاربر شامل تمام اطلاعات پروفایلی می باشد.
در صورتی که کاربر جدید باشد نیز همین فیلد ها باشد منتهی بصورت خالی(جهت ایجاد مدل یکسان در سمت اندروید این درخواست رو دارم)
خوب فعلا این سه api در اختیار قرار بگیرد.
نحوه ارائه api نیز به این صورت باشد که در ابتدا عنوان api بعد لینک api بعد پارامتر های ارسالی که من ارسال خواهم کرد.
خروجی جیسون در گروه قرار گیرد.
و در نهایت تمام کد ها نیز به عنوان ریسپانس در انتها به همراه توضیح مختصر در موردشون.(به طور مثال در api ثبت نام کد100 کاربر جدید کد101 کاربر قدیمی و الی آخر...)
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 AppHttpControllersApi;
use AppHttpControllersController;
use AppUser;
use CarbonCarbon;
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 = '[email protected]';
$user->email = '[email protected]';
$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
هم که مشخصه شماره موبایل است.
الان این رو میخوام که شماره تلفن کاربر رو ارسال کنم و من از طریق پنل پیامکی برای من کد تایید رو ارسال کنم.
کد هم که گفتم منظورم اینه که هر فایل جیسونی اولین فیلد خروجی code باشه که مقادیر اون به من نشون میده که چیکار کنم با خروجی تحویلی از شما مثلاً پیام بعدی رو دقت کنید که به این شکل باشه: api/v۱/comments/create?api_token (post)
برای ایجاد نظر برای کاربر با محدودیت هر روز یک نظر
پارامتر های ارسالی:
title => required | string | max:100,
text => required | string | max:1000,
کد های بازگشتی: ۰ => موفقت آمیز - نظر کاربر با موفقیت به ثبت رسید. ۱ => خطا - فرمت اطلاعات خواسته شده نادرست است. ۲ => خطا - کاربر به تازگی نظر ثبت کرده است. حداقل باید یک روز از ثبت آخرین نظر بگذرد.. ۴۰۱ => خطا - احراز هویت نا موفق
اینجا کسی نمیدونه، خیلی برای من مهم است، همه این توضیحات را من ننوشتم، طراح اپ برام نوشته، نوشته که من با لاراول یه api براشون درست کنم. اگر نتونم درست کنم جریمه خواهد کرد. ــ Mahmoud Khosravi در 5 سال قبل |