Update
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"furtuna-be/internal/handlers/request"
|
||||
"furtuna-be/internal/handlers/response"
|
||||
"furtuna-be/internal/services"
|
||||
"furtuna-be/internal/utils"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
@@ -56,7 +57,7 @@ func (h *Handler) Inquiry(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, response.BaseResponse{
|
||||
Success: true,
|
||||
Status: http.StatusOK,
|
||||
Data: MapOrderToCreateOrderResponse(order),
|
||||
Data: MapOrderToCreateOrderResponse(order, req),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -88,7 +89,7 @@ func (h *Handler) Execute(c *gin.Context) {
|
||||
})
|
||||
}
|
||||
|
||||
func MapOrderToCreateOrderResponse(orderResponse *entity.OrderResponse) response.CreateOrderResponse {
|
||||
func MapOrderToCreateOrderResponse(orderResponse *entity.OrderResponse, req request.CustomerOrder) response.CreateOrderResponse {
|
||||
order := orderResponse.Order
|
||||
orderItems := make([]response.CreateOrderItemResponse, len(order.OrderItems))
|
||||
for i, item := range order.OrderItems {
|
||||
@@ -115,6 +116,8 @@ func MapOrderToCreateOrderResponse(orderResponse *entity.OrderResponse) response
|
||||
Total: order.Total,
|
||||
VisitDate: order.VisitDate.Format("2006-01-02"),
|
||||
SiteName: order.Site.Name,
|
||||
BankCode: req.BankCode,
|
||||
BankName: utils.BankName(req.BankCode),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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",
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
@@ -37,3 +37,22 @@ func (m *MidtransCallbackRequest) ToEntity() *entity.CallbackRequest {
|
||||
TransactionStatus: m.TransactionStatus,
|
||||
}
|
||||
}
|
||||
|
||||
type LinQuCallback struct {
|
||||
Amount int `json:"amount"`
|
||||
SerialNumber string `json:"serialnumber"`
|
||||
Type string `json:"type"`
|
||||
PaymentReff int64 `json:"payment_reff"`
|
||||
VaCode string `json:"va_code"`
|
||||
PartnerReff string `json:"partner_reff"`
|
||||
PartnerReff2 string `json:"partner_reff2"`
|
||||
AdditionalFee int `json:"additionalfee"`
|
||||
Balance int `json:"balance"`
|
||||
CreditBalance int `json:"credit_balance"`
|
||||
TransactionTime string `json:"transaction_time"`
|
||||
VaNumber string `json:"va_number"`
|
||||
CustomerName string `json:"customer_name"`
|
||||
Username string `json:"username"`
|
||||
Status string `json:"status"`
|
||||
Signature string `json:"signature"`
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ type BaseResponse struct {
|
||||
ErrorDetail interface{} `json:"error_detail,omitempty"`
|
||||
Data interface{} `json:"data,omitempty"`
|
||||
PagingMeta *PagingMeta `json:"meta,omitempty"`
|
||||
Response string `json:"response,omitempty"`
|
||||
}
|
||||
|
||||
@@ -96,6 +96,8 @@ type CreateOrderResponse struct {
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
OrderItems []CreateOrderItemResponse `json:"order_items"`
|
||||
Token string `json:"token"`
|
||||
BankCode string `json:"bank_code"`
|
||||
BankName string `json:"bank_name"`
|
||||
}
|
||||
|
||||
type PrintDetailResponse struct {
|
||||
|
||||
Reference in New Issue
Block a user