This commit is contained in:
aditya.siregar
2024-10-27 19:48:10 +07:00
parent 758df918ae
commit 081a1aa27b
13 changed files with 190 additions and 35 deletions
+19 -26
View File
@@ -1,6 +1,9 @@
package mdtrns
package linkqu
import (
"encoding/json"
"fmt"
"furtuna-be/internal/entity"
"furtuna-be/internal/handlers/request"
"furtuna-be/internal/handlers/response"
"furtuna-be/internal/services"
@@ -13,7 +16,7 @@ type Handler struct {
}
func (h *Handler) Route(group *gin.RouterGroup, jwt gin.HandlerFunc) {
route := group.Group("/midtrans")
route := group.Group("/linkqu")
route.POST("/callback", h.Callback)
}
@@ -25,35 +28,24 @@ func NewHandler(service services.Order) *Handler {
}
func (h *Handler) Callback(c *gin.Context) {
var callbackData request.MidtransCallbackRequest
var callbackData request.LinQuCallback
if err := c.ShouldBindJSON(&callbackData); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
validStatuses := []string{"settlement", "expire", "deny", "cancel", "capture", "failure"}
data, _ := json.Marshal(callbackData)
fmt.Println(string(data))
isValidStatus := false
for _, status := range validStatuses {
if callbackData.TransactionStatus == status {
isValidStatus = true
break
}
}
if !isValidStatus {
c.JSON(http.StatusOK, response.BaseResponse{
Success: true,
Status: http.StatusOK,
Message: "",
})
return
}
err := h.service.ProcessCallback(c, callbackData.ToEntity())
err := h.service.ProcessLinkQuCallback(c, &entity.LinkQuCallback{
PaymentReff: callbackData.PartnerReff2,
Status: callbackData.Status,
Signature: callbackData.Signature,
PartnerReff: callbackData.PartnerReff,
})
if err != nil {
c.JSON(http.StatusUnauthorized, response.BaseResponse{
c.JSON(http.StatusBadRequest, response.BaseResponse{
Success: false,
Status: http.StatusBadRequest,
Message: err.Error(),
@@ -63,9 +55,10 @@ func (h *Handler) Callback(c *gin.Context) {
}
c.JSON(http.StatusOK, response.BaseResponse{
Success: true,
Status: http.StatusOK,
Message: "order",
Success: true,
Status: http.StatusOK,
Message: "order",
Response: "00",
})
}