من یه پروژه دارم که میخواهم با 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 خودتون فراخونی کنید و هر جای لازم بود پیامک بفرستید
سلام مجدد
بله من از کاوه نگار استفاده میکنم و کد تاییدیه هم به گوشی کاربر (sms) ارسال میشه و هم در دیتابیس ذخیره میشه حالا من میخوام api
تعریف کنم. چطوری میشه api
تعریف کرد؟
Api پنل پیامک کد تایید میفرسته پس هر چی درخواست بدی کدشو میفرسته .... ، بعد بر روی یوزر مورد نظر کد تایید تو دیتابیس ذخیره کن و عمل مقایسه را از ورود کاربر انجام بده ، حالا میتونی جدول لاگ زمان رخداد هارو پر کنی و بر اون اساس هم عمل مقایسه و اکشن هاتو تعریف کنی و خروجی مناسب به کاربر بفرستی کل این فراید میتونی در یک api انجام بدی
الان این رو میخوام که شماره تلفن کاربر رو ارسال کنم و من از طریق پنل پیامکی برای من کد تایید رو ارسال کنم.
کد هم که گفتم منظورم اینه که هر فایل جیسونی اولین فیلد خروجی code باشه که مقادیر اون به من نشون میده که چیکار کنم با خروجی تحویلی از شما
مثلاً پیام بعدی رو دقت کنید که به این شکل باشه:
api/v1/comments/create?api_token
(post)
برای ایجاد نظر برای کاربر با محدودیت هر روز یک نظر
پارامتر های ارسالی:
title => required | string | max:100,
text => required | string | max:1000,
کد های بازگشتی:
0 => موفقت آمیز - نظر کاربر با موفقیت به ثبت رسید.
1 => خطا - فرمت اطلاعات خواسته شده نادرست است.
2 => خطا - کاربر به تازگی نظر ثبت کرده است. حداقل باید یک روز از ثبت آخرین نظر بگذرد..
401 => خطا - احراز هویت نا موفق
اینجا کسی نمیدونه، خیلی برای من مهم است، همه این توضیحات را من ننوشتم، طراح اپ برام نوشته، نوشته که من با لاراول یه api
براشون درست کنم. اگر نتونم درست کنم جریمه خواهد کرد.
مشکل اینجاست که شرکت های واسطه که وظیفه ارسال sms را دارند شماره مشتری های شما را به رقبا می فروشند . برای همین نمی توان به api آنها اعتماد کرد.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟