wallet/pkg/rest/tron_v1_transaction.go

66 lines
1.3 KiB
Go
Raw Normal View History

2024-08-31 14:46:20 +00:00
package rest
import (
"net/http"
trc "git.pspay.io/crypto-stories/custodial/pkg/tron"
gin "github.com/gin-gonic/gin"
)
type TronTransactionInfoRequest struct {
TxID string `json:"tx_id"`
}
type TronTransactionInfoResponse struct {
Id string `json:"id"`
Status string `json:"status"`
}
// @BasePath /api/v1
//
// AddressBalance godoc
//
// @Summary Get transaction info
// @Schemes
// @Description Get transaction info
// @Tags Tron
// @Accept json
// @Produce json
// @Security ApiKeyAuth
// @Param message body TronTransactionInfoRequest true "Tx Info"
// @Success 200 {object} TronTransactionInfoResponse
// @Failure 400 {object} ErrorResponse
// @Router /tron/tx-info [post]
func TronTransactionInfoV1(c *gin.Context) {
var req TronTransactionInfoRequest
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
tx, err := trc.GetTransactionByHash(req.TxID)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
status := "pending"
ret := 9999
if tx != nil {
ret = int(tx.Ret[0].ContractRet.Number())
}
if ret != 1 && ret != 9999 {
status = "failed"
} else {
status = "success"
}
res := TronTransactionInfoResponse{
Id: req.TxID,
Status: status,
}
c.JSON(http.StatusOK, res)
}