File: /var/www/matriculas_api_dev/app/Http/Controllers/Toku/TransactionController.php
<?php
namespace App\Http\Controllers\Toku;
use App\Http\Controllers\Controller;
use App\Services\ApiTokuService;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
class TransactionController extends Controller
{
private $apiTokuService;
public function __construct(ApiTokuService $apiTokuService)
{
$this->apiTokuService = $apiTokuService;
}
/**
* @OA\Get(
* path="/toku/transactions",
* summary="Listar Transactions",
* tags={"Toku/Transactions"},
* @OA\Parameter(
* name="page", in="query", required=true,
* description="Número de página (default 1)",
* @OA\Schema(type="integer", example=1)
* ),
* @OA\Parameter(
* name="page_size", in="query", required=false,
* description="Tamaño de página (máx. 10)",
* @OA\Schema(type="integer", example=5)
* ),
* @OA\Parameter(
* name="start_date", in="query",
* description="Fecha inicio (YYYY-MM-DD)",
* @OA\Schema(type="string", example="2025-01-01")
* ),
* @OA\Parameter(
* name="end_date", in="query",
* description="Fecha fin (YYYY-MM-DD)",
* @OA\Schema(type="string", example="2025-01-31")
* ),
* @OA\Parameter(
* name="id_customer", in="query",
* description="Filtrar por ID de Customer",
* @OA\Schema(type="string", example="cus_LDrzHO79tg5hvJSGgax6TkWfxYPL5AEh")
* ),
* @OA\Response(response=200, description="Listado de Transactions"),
* @OA\Response(response=400, description="Error en parámetros")
* )
*/
public function index(Request $request)
{
try {
$data = $this->apiTokuService->getTransactions($request->all());
return genericResponse(['data' => $data, 'message' => 'ok', 'code' => 200], 200);
} catch (Exception $e) {
$errorCode = $e->getCode();
return genericResponse(['error' => $e->getMessage()], $errorCode ? $errorCode : 500);
}
}
/**
* @OA\Get(
* path="/toku/transactions/{id}",
* summary="Obtener detalle de Transaction",
* tags={"Toku/Transactions"},
* @OA\Parameter(
* name="id", in="path", required=true,
* description="ID de la Transaction",
* @OA\Schema(type="string", example="trs_jwZpTbVb0RwcnaB2xTf19nBYH-s1z_NT")
* ),
* @OA\Response(response=200, description="Detalle de la Transaction"),
* @OA\Response(response=404, description="No encontrada")
* )
*/
public function show($id)
{
try {
$data = $this->apiTokuService->getTransaction($id);
return genericResponse(['data' => $data, 'message' => 'ok', 'code' => 200], 200);
} catch (Exception $e) {
$errorCode = $e->getCode();
return genericResponse(['error' => $e->getMessage()], $errorCode ? $errorCode : 500);
}
}
/**
* @OA\Get(
* path="/toku/transactions/{id}/fees",
* summary="Obtener Fees de una Transaction",
* tags={"Toku/Transactions"},
* @OA\Parameter(
* name="id", in="path", required=true,
* description="ID de la Transaction",
* @OA\Schema(type="string", example="trs_jwZpTbVb0RwcnaB2xTf19nBYH-s1z_NT")
* ),
* @OA\Response(response=200, description="Detalle de Fees de la Transaction"),
* @OA\Response(response=404, description="Transaction no encontrada")
* )
*/
public function fees($id)
{
try {
$data = $this->apiTokuService->getTransactionFees($id);
return genericResponse(['data' => $data, 'message' => 'ok', 'code' => 200], 200);
} catch (Exception $e) {
$errorCode = $e->getCode();
return genericResponse(['error' => $e->getMessage()], $errorCode ? $errorCode : 500);
}
}
}