Best laravel framework open-source packages.

Fudamiku Service API

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.
Updated 6 months ago

Fudamiku API

Fork  Star  Watches 

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.

alt text

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

  1. Pastikan kalian telah menginstall composer
  2. Lakukan clone projek ini
    https://github.com/abuazis/Fudamiku-Service-API.git
    
  3. Install vendor laravel
    composer install
    
  4. Buat database baru di MySQL/PostgreSQL dengan nama "fudamiku"
  5. Duplikat file .env.example menjadi .env
  6. 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>
  7. Lakukan migrasi database kalian
    php artisan migrate
    
  8. Lakukan generate passport key data
    php artisan passport:install
    
  9. 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 email 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

alt text

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 email 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

alt text

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

alt text

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

alt text

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

alt text

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

alt text

Tags rest data