p
This commit is contained in:
+25
-2
@@ -22,8 +22,11 @@ type Contrato struct {
|
||||
// Enlace de pago Bold: único por ciclo de pago.
|
||||
// Se reutiliza en múltiples notificaciones del mismo ciclo.
|
||||
// Se anula (vacía) cuando SALE_APPROVED llega y se registra el pago.
|
||||
EnlacePago string `json:"enlace_pago" gorm:"column:enlace_pago;type:text"`
|
||||
EnlacePagoLinkID string `json:"enlace_pago_link_id" gorm:"column:enlace_pago_link_id;type:varchar(64)"`
|
||||
EnlacePago string `json:"enlace_pago" gorm:"column:enlace_pago;type:text"`
|
||||
EnlacePagoLinkID string `json:"enlace_pago_link_id" gorm:"column:enlace_pago_link_id;type:varchar(64)"`
|
||||
// Confirmación de pago
|
||||
PagoConfirmado bool `json:"pago_confirmado" gorm:"column:pago_confirmado;default:false"`
|
||||
FechaPago *time.Time `json:"fecha_pago" gorm:"column:fecha_pago"`
|
||||
}
|
||||
|
||||
func (Contrato) TableName() string { return "contratos" }
|
||||
@@ -156,3 +159,23 @@ func LimpiarEnlacePago(contratoID uint) error {
|
||||
"enlace_pago_link_id": "",
|
||||
}).Error
|
||||
}
|
||||
|
||||
// MarcarContratoPagado marca el contrato como pagado al recibir confirmación de la pasarela.
|
||||
func MarcarContratoPagado(contratoID uint) error {
|
||||
now := time.Now()
|
||||
return app.Http.Database.DB.Model(&Contrato{}).Where("id = ?", contratoID).Updates(map[string]interface{}{
|
||||
"pago_confirmado": true,
|
||||
"fecha_pago": now,
|
||||
"enlace_pago": "",
|
||||
"enlace_pago_link_id": "",
|
||||
}).Error
|
||||
}
|
||||
|
||||
// GetEstadoPago devuelve si el contrato tiene pago confirmado (para polling desde el frontend).
|
||||
func GetEstadoPago(contratoID uint) (bool, *time.Time, error) {
|
||||
var c Contrato
|
||||
if err := app.Http.Database.DB.Select("pago_confirmado", "fecha_pago").First(&c, contratoID).Error; err != nil {
|
||||
return false, nil, err
|
||||
}
|
||||
return c.PagoConfirmado, c.FechaPago, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user