package handlers import ( "github.com/gin-gonic/gin" "net/http" ) type TestHandler struct { } func NewTestHandler() *TestHandler { return &TestHandler{} } func (h *TestHandler) TestEndpoint(c *gin.Context) { var req Endpoint if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "error": "请求参数错误", "details": err.Error(), }) return } c.JSON(200, gin.H{ "message": "Test endpoint is working", }) } type Endpoint struct { BODY struct { BASEACCTNO string `json:"BASE_ACCT_NO"` TRANTYPE string `json:"TRAN_TYPE"` TRANCCY string `json:"TRAN_CCY"` TRANAMT string `json:"TRAN_AMT"` SETTLEMENTDATE string `json:"SETTLEMENT_DATE"` SERVDETAIL struct { FEETYPE string `json:"FEE_TYPE"` FEEAMT string `json:"FEE_AMT"` ORIGFEEAMT string `json:"ORIG_FEE_AMT"` DISCFEEAMT string `json:"DISC_FEE_AMT"` DISCTYPE string `json:"DISC_TYPE"` DISCRATE struct { PHONENO2 struct { LINKMANTYPE string `json:"LINKMAN_TYPE"` LINKMANNAME string `json:"LINKMAN_NAME"` DOCUMENTTYPE []struct { LINKMANTYPE string `json:"LINKMAN_TYPE"` LINKMANNAME string `json:"LINKMAN_NAME"` DOCUMENTTYPE string `json:"DOCUMENT_TYPE"` DOCUMENTID struct { LINKMANTYPE string `json:"LINKMAN_TYPE"` PHONENO2 string `json:"PHONE_NO2"` } `json:"DOCUMENT_ID"` } `json:"DOCUMENT_TYPE"` } `json:"PHONE_NO2"` CHARGEMODE string `json:"CHARGE_MODE"` } `json:"DISC_RATE"` CHARGEMODE string `json:"CHARGE_MODE"` } `json:"SERV_DETAIL"` HANGSEQNO []string `json:"HANG_SEQ_NO"` CARDNO []struct { LINKMANTYPE string `json:"LINKMAN_TYPE"` LINKMANNAME string `json:"LINKMAN_NAME"` DOCUMENTTYPE string `json:"DOCUMENT_TYPE"` DOCUMENTID string `json:"DOCUMENT_ID"` PHONENO1 string `json:"PHONE_NO1"` PHONENO2 string `json:"PHONE_NO2"` } `json:"CARD_NO"` } `json:"BODY"` PUBDOMAIN struct { AUTHFLAG string `json:"AUTH_FLAG"` AUTHINFONUM string `json:"AUTH_INFO_NUM"` AUTHSTATUS string `json:"AUTH_STATUS"` AUTHTELLER string `json:"AUTH_TELLER"` BRANCHID string `json:"BRANCH_ID"` CHANNELCODE string `json:"CHANNEL_CODE"` CONFIRMFLAG string `json:"CONFIRM_FLAG"` CONFIRMSTATUS string `json:"CONFIRM_STATUS"` CONSUMTRANDATE string `json:"CONSUM_TRAN_DATE"` CONSUMTRANTIME string `json:"CONSUM_TRAN_TIME"` CURRPAGENUM string `json:"CURR_PAGE_NUM"` LEGALCODE string `json:"LEGAL_CODE"` PAGEUPDOWN string `json:"PAGE_UP_DOWN"` PERPAGENUM string `json:"PER_PAGE_NUM"` PROVIDTRANDATE string `json:"PROVID_TRAN_DATE"` PUBEXTEND string `json:"PUB_EXTEND"` TRANTELLER string `json:"TRAN_TELLER"` } `json:"PUB_DOMAIN"` SYSHEAD struct { CHARACTERSET string `json:"CHARACTER_SET"` COMMTYPE string `json:"COMM_TYPE"` CONSUMREQDATE string `json:"CONSUM_REQ_DATE"` CONSUMREQTIME string `json:"CONSUM_REQ_TIME"` CONSUMSYSCODE string `json:"CONSUM_SYS_CODE"` FILEFLAG string `json:"FILE_FLAG"` GLOBALSEQ string `json:"GLOBAL_SEQ"` LOCALLANG string `json:"LOCAL_LANG"` PROVIDSYSCODE string `json:"PROVID_SYS_CODE"` SCENESCODE string `json:"SCENES_CODE"` SCENESVERSION string `json:"SCENES_VERSION"` SERVICENAME string `json:"SERVICE_NAME"` SERVICEREQSEQ string `json:"SERVICE_REQ_SEQ"` SERVICEVERSION string `json:"SERVICE_VERSION"` SRCENCNODE string `json:"SRC_ENC_NODE"` } `json:"SYS_HEAD"` }