Files
lndhub.go/controllers/checkpayment.ctrl.go
2022-06-17 15:38:44 +02:00

40 lines
1.1 KiB
Go

package controllers
import (
"net/http"
"github.com/getAlby/lndhub.go/lib/responses"
"github.com/getAlby/lndhub.go/lib/service"
"github.com/labstack/echo/v4"
)
// CheckPaymentController : CheckPaymentController struct
type CheckPaymentController struct {
svc *service.LndhubService
}
type CheckPaymentResponseBody struct {
IsPaid bool `json:"paid"`
}
func NewCheckPaymentController(svc *service.LndhubService) *CheckPaymentController {
return &CheckPaymentController{svc: svc}
}
func (controller *CheckPaymentController) CheckPayment(c echo.Context) error {
userID := c.Get("UserID").(int64)
rHash := c.Param("payment_hash")
invoice, err := controller.svc.FindInvoiceByPaymentHash(c.Request().Context(), userID, rHash)
// Probably we did not find the invoice
if err != nil {
c.Logger().Errorf("Invalid checkpayment request user_id:%v payment_hash:%s", userID, rHash)
return c.JSON(http.StatusBadRequest, responses.BadArgumentsError)
}
responseBody := &CheckPaymentResponseBody{}
responseBody.IsPaid = !invoice.SettledAt.IsZero()
return c.JSON(http.StatusOK, &responseBody)
}