Files
soft_usite/rest/controllers/api/rapyd_controller.go
T
2025-05-30 19:40:26 -05:00

84 lines
3.1 KiB
Go

package controllers
import (
"encoding/json"
"fmt"
"github.com/gofiber/fiber/v2"
"github.com/sujit-baniya/fiber-boilerplate/pkg/services"
)
// Estructuras definidas por el cliente (ya están bien)
type Address struct {
Name string `json:"name"`
Line1 string `json:"line_1"`
Line2 string `json:"line_2"`
Line3 string `json:"line_3"`
City string `json:"city"`
State string `json:"state"`
Country string `json:"country"`
Zip string `json:"zip"`
PhoneNumber string `json:"phone_number"`
Metadata map[string]interface{} `json:"metadata"`
Canton string `json:"canton"`
District string `json:"district"`
}
type Contact struct {
PhoneNumber string `json:"phone_number"`
Email string `json:"email"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
MothersName string `json:"mothers_name"`
ContactType string `json:"contact_type"`
Address Address `json:"address"`
IdentificationType string `json:"identification_type"`
IdentificationNumber string `json:"identification_number"`
DateOfBirth string `json:"date_of_birth"`
Country string `json:"country"`
Nationality string `json:"nationality"`
Metadata map[string]interface{} `json:"metadata"`
}
type WalletRequest struct {
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
EwalletReferenceID string `json:"ewallet_reference_id"`
Metadata map[string]interface{} `json:"metadata"`
Type string `json:"type"`
Contact Contact `json:"contact"`
}
func MakeWallet(c *fiber.Ctx) error {
var body WalletRequest
// 1. Parsear el cuerpo de la solicitud
if err := c.BodyParser(&body); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
"error": "Error al parsear el cuerpo de la solicitud: " + err.Error(),
})
}
// 2. Imprimir cuerpo recibido para debug
bodyBytes, _ := json.MarshalIndent(body, "", " ")
fmt.Println("Cuerpo recibido:\n", string(bodyBytes))
// 3. Enviar solicitud a Rapyd
response, err := services.MakeRequest("post", "/v1/ewallets", body)
if err != nil {
fmt.Println("Error al hacer la solicitud a Rapyd:", err)
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": "Error al comunicarse con Rapyd",
"details": err.Error(),
})
}
// 4. Formatear y devolver la respuesta de Rapyd
prettyJSON, _ := json.MarshalIndent(response, "", " ")
fmt.Println("Respuesta de Rapyd:\n", string(prettyJSON))
return c.Status(fiber.StatusOK).JSON(response)
}