Fudamiku API
Description
Fudamiku API adalah projek web service api yang dibuat untuk menyediakan resource data dan kebutuhan fitur authentikasi dan transaksi yang sudah terintegrasi dengan payment gateway Midtrans. Dan nantinya akan diconsume oleh projek aplikasi mobile Fudamiku menggunakan Flutter.
API ini berfungsi sebagai back-end api aplikasi fudamiku yang mempunyai fitur:
- Create User Account
- Login User Account
- CRUD Resource Food
- Process Order & Transaction
- Cancel Order
- Check History Order
- Payment Method (Credit Card & Gopay)
- Apikey System (Bearer Token)
Installation
- Pastikan kalian telah menginstall composer
- Lakukan clone projek ini
https://github.com/abuazis/Fudamiku-Service-API.git
- Install vendor laravel
composer install
- Buat database baru di MySQL/PostgreSQL dengan nama "fudamiku"
- Duplikat file
.env.example
menjadi.env
- Setting info database kalian di
.env
DB_CONNECTION=<YOUR_DATABASE_CONNECTION> DB_HOST=<YOUR_DATABASE_HOST> DB_PORT=<YOUR_DATABASE_PORT> DB_DATABASE=<YOUR_DATABASE_NAME> DB_USERNAME=<YOUR_DATABASE_USERNAME> DB_PASSWORD=<YOUR_DATABASE_PASSWORD>
- Lakukan migrasi database kalian
php artisan migrate
- Lakukan generate passport key data
php artisan passport:install
- Setting client key dan server key midtrans kalian
MIDTRANS_SERVER_KEY=<YOUR_SERVER_KEY> MIDTRANS_CLIENT_KEY=<YOUR_CLIENT_KEY> MIDTRANS_BASE_URL=https://api.sandbox.midtrans.com/v2
API Requirements
Features | Methods | Bearer Token |
---|---|---|
Create Account | POST | No |
Login Account | POST | No |
Ambil Data Makanan | GET | Yes |
Ambil Data Bahan Makanan | GET | Yes |
Process Order | POST | Yes |
Process Transaction | POST | Yes |
Cancel Order | POST | Yes |
Check History order | GET | Yes |
API Usage List
Create User Account
Rute ini berfungsi untuk membuat akun pengguna.
Pastikan semua parameter diisikan.
Methods | Parameter | Data Type |
---|---|---|
POST | name | String |
POST | String | |
POST | password | String |
POST | password_confirmation | String |
POST | phone_number | Number |
POST | address | String |
POST | house_number | String |
POST | city | String |
POST | photo | File |
URL String
http://127.0.0.1:8000/api/auth/register
Code Backend
$input = $request->all();
$user = $this->user->where('email', $input['email'])->first();
if (!$user) {
$input['uuid'] = Uuid::generate(4)->string;
$input['password'] = Hash::make($input['password']);
if ($request->has('photo')) {
$input['path_photo'] = $this->fileManager->saveData($request->file('photo'), $input['name'], '/images/users/');
$input['photo'] = '/images/users/' . $this->fileManager->fileResult;
}
$user = $this->user->create($input);
$token = $user->createToken('nApp')->accessToken;
return $this->respHandler->authenticate(200, "Success Sign Up", $token, new UserResource($user));
}
else {
return $this->respHandler->exists("User");
}
API Response
Login User Account
Rute ini untuk melakukan validasi login.
Pastikan kalian memasukan data user, karena
kita tidak ingin validasi ini digunakan sembarangan orang.
Methods | Parameter | Data Type |
---|---|---|
POST | String | |
POST | password | String |
URL String
http://127.0.0.1:800/api/auth/login
Code Backend
if ($user) {
if (Hash::check($input['password'], $user->password)) {
$token = $user->createToken('nApp')->accessToken;
return $this->respHandler->authenticate(200, "Success Sign In", $token, new UserResource($user));
}
else {
return $this->respHandler->badCredential();
}
}
else {
return $this->respHandler->notFound("Users");
}
API Response
Get Data Makanan
Rute ini untuk mendapatkan semua data makanan dari database.
URL String
http://127.0.0.1:8000/api/foods
Code Backend
$foods = $this->food->with('foodIngredient')->get();
if ($foods->count() > 0) {
return $this->respHandler->send(200, "Successfuly Get Foods", FoodResource::collection($foods));
}
else {
return $this->respHandler->notFound("Foods");
}
API Response
Process Order
Rute ini untuk melakukan order makanan yang dipilih.
Pastikan bahwa parameter valid dan benar.
Methods | Parameter | Data Type |
---|---|---|
POST | user_id | Number |
POST | food_id | Number |
POST | quantity | Number |
POST | status | String |
URL String
http://127.0.0.1:5000/api/orders
Code Backend
if ($this->order->isExistsByUserId($userId)) {
$order = $this->order->where('user_id', $userId)->get();
return $this->respHandler->send(200, "Successfuly Get Order", OrderResource::collection($order));
}
else {
$this->respHandler->notFound("Order");
}
API Response
Cancel Order
Rute ini berfungsi untuk melakukan pembatalan order yang telah dibuat.
Pastikan bahwa parameter status bernilai "Cancelled".
Methods | Parameter | Data Type |
---|---|---|
POST | status | String |
URL String
http://127.0.0.1:5000/api/orders/{order_id}
Code Backend
$order = $this->order->find($id);
$updateStatus = $order->update(['status' => $request->status]);
if ($updateStatus) {
return $this->respHandler->send(200, "Successfully Update Status Order");
}
else {
return $this->respHandler->internalError();
}
API Response
Check History Order
Rute ini berfungsi untuk melihat history order berdasarkan user.
URL String
http://127.0.0.1:5000/api/orders/{user_id}
Code Backend
if ($this->order->isExistsByUserId($userId)) {
$order = $this->order->where('user_id', $userId)->get();
return $this->respHandler->send(200, "Successfuly Get Order", OrderResource::collection($order));
}
else {
$this->respHandler->notFound("Order");
}
API Response