Agrega API de pagos externos: tokens por servicio, atados a pasarela e IP
Permite emitir credenciales (token hasheado + IP/CIDR opcional) desde
/app/pagos-externos para que aplicaciones de terceros pidan cobros a
través de Bold/dLocal/PayPal sin acceso a nada más del sistema:
- POST /api/v1/pagos-externos/solicitar genera el link de cobro real
usando solo las pasarelas habilitadas para ese servicio.
- Los webhooks existentes de Bold/dLocal/PayPal (firma obligatoria,
idempotentes) ahora también resuelven referencias "extpay-…" sin
tocar el flujo de contratos ("contrato-{id}").
- Al confirmarse el pago se notifica por webhook firmado (HMAC) y/o
Telegram, configurable por servicio.
- CRUD de servicios protegido con SoloAdmin; token y callback_secret
solo se muestran una vez, en DB se guardan hasheados.
This commit is contained in:
@@ -3,6 +3,7 @@ package routes
|
||||
import (
|
||||
"github.com/gofiber/fiber/v2"
|
||||
apiControllers "github.com/sujit-baniya/fiber-boilerplate/rest/controllers/api"
|
||||
"github.com/sujit-baniya/fiber-boilerplate/rest/middlewares"
|
||||
)
|
||||
|
||||
func ApiRoutes(api fiber.Router) {
|
||||
@@ -24,6 +25,14 @@ func v1AuthRoutes(api fiber.Router) {
|
||||
api.Post("/rapyd/wallet/create", apiControllers.MakeWallet)
|
||||
api.Post("/generate-url-qr", apiControllers.CreateUrlQr)
|
||||
api.Post("/ia/ollama-generate", apiControllers.GeneraTextoStream)
|
||||
|
||||
// ─── Pagos externos: API pública para apps de terceros ────────────────────
|
||||
// Autenticación propia (token Bearer + IP), independiente de la sesión/JWT
|
||||
// interna — por eso está excluida en AuthApi() (rest/middlewares/auth.go).
|
||||
pagosExt := api.Group("/pagos-externos", middlewares.AuthServicioPago)
|
||||
pagosExt.Get("/pasarelas", apiControllers.PasarelasDisponiblesHandler)
|
||||
pagosExt.Post("/solicitar", apiControllers.SolicitarPagoExternoHandler)
|
||||
pagosExt.Get("/:referencia/estado", apiControllers.EstadoPagoExternoHandler)
|
||||
}
|
||||
|
||||
func v1Routes(api fiber.Router) {
|
||||
|
||||
@@ -262,6 +262,14 @@ func AdminApiRoutes(api fiber.Router) {
|
||||
h.Delete("/ai-config/:id", controllers.DeleteAiConfigHandler)
|
||||
h.Get("/ai-config/:id/test", controllers.TestAiConfigHandler)
|
||||
|
||||
// ─── Pagos externos (API para que apps de terceros pidan cobros) ───────────
|
||||
h.Get("/pagos-externos/servicios", controllers.GetServiciosPagoExterno)
|
||||
h.Post("/pagos-externos/servicios", controllers.CreateServicioPagoExternoHandler)
|
||||
h.Put("/pagos-externos/servicios/:id", controllers.UpdateServicioPagoExternoHandler)
|
||||
h.Delete("/pagos-externos/servicios/:id", controllers.DeleteServicioPagoExternoHandler)
|
||||
h.Post("/pagos-externos/servicios/:id/regenerar-token", controllers.RegenerarTokenServicioPagoHandler)
|
||||
h.Get("/pagos-externos/solicitudes", controllers.GetSolicitudesPagoExternoHandler)
|
||||
|
||||
// ─── OSS API (almacenamiento) ────────────────────────────────────────────
|
||||
h.Get("/oss-api", controllers.GetOssApiConfigs)
|
||||
h.Get("/oss-api/active", controllers.GetActiveOssApiList)
|
||||
|
||||
@@ -329,6 +329,17 @@ func UserRoutes(app fiber.Router) {
|
||||
protected.Delete("/ai-config/:id", controllers.DeleteAiConfigHandler)
|
||||
protected.Get("/ai-config/:id/test", controllers.TestAiConfigHandler)
|
||||
|
||||
// ─── Pagos externos (API para que apps de terceros pidan cobros) ───────────
|
||||
// Sensible: emitir/regenerar un token da acceso a crear cobros reales por
|
||||
// Bold/dLocal/PayPal, así que solo un administrador puede administrarlo.
|
||||
protected.Get("/pagos-externos", middlewares.MenuMiddleware, controllers.PagosExternosIndex)
|
||||
protected.Get("/pagos-externos/servicios", controllers.GetServiciosPagoExterno)
|
||||
protected.Post("/pagos-externos/servicios", middlewares.SoloAdmin, controllers.CreateServicioPagoExternoHandler)
|
||||
protected.Put("/pagos-externos/servicios/:id", middlewares.SoloAdmin, controllers.UpdateServicioPagoExternoHandler)
|
||||
protected.Delete("/pagos-externos/servicios/:id", middlewares.SoloAdmin, controllers.DeleteServicioPagoExternoHandler)
|
||||
protected.Post("/pagos-externos/servicios/:id/regenerar-token", middlewares.SoloAdmin, controllers.RegenerarTokenServicioPagoHandler)
|
||||
protected.Get("/pagos-externos/solicitudes", controllers.GetSolicitudesPagoExternoHandler)
|
||||
|
||||
// ─── OSS API (Alibaba Cloud + S3/MinIO) ────────────────────────────────────
|
||||
protected.Get("/oss-api", middlewares.MenuMiddleware, controllers.OssApiIndex)
|
||||
protected.Get("/loadossapi", controllers.GetOssApiConfigs)
|
||||
|
||||
Reference in New Issue
Block a user