84 lines
3.1 KiB
Go
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)
|
|
}
|