diff --git a/consts/url.go b/consts/url.go index af4cd4c..a917ef2 100644 --- a/consts/url.go +++ b/consts/url.go @@ -25,6 +25,7 @@ const ( // LKL_ACCOUNT_WITHDRAW_URL 拉卡拉账户提现 LKL_ACCOUNT_WITHDRAW_URL = "/v2/laep/industry/ewalletWithdrawD1" LKL_SPLIT_LEDGER_RESULT_QUERY_URL = "/v3/sacs/query_plus" + LKL_SPLIT_LEDGER_FALLBACK_URL = "/v3/sacs/fallback" ) const ( diff --git a/lklsdk/sdk.go b/lklsdk/sdk.go index 397ac29..8d4bb95 100644 --- a/lklsdk/sdk.go +++ b/lklsdk/sdk.go @@ -158,6 +158,11 @@ func (s *SDK[T]) OrderSplitLedgerResultQuery(req *model.OrderSplitLedgerResultQu return s.SplitLedger.OrderSplitLedgerResultQuery(req) } +// OrderSplitLedgerFallback 订单分账回退 +func (s *SDK[T]) OrderSplitLedgerFallback(req *model.OrderSplitLedgerFallbackReqData) (*T, error) { + return s.SplitLedger.OrderSplitLedgerFallback(req) +} + // TradeQuery 交易查询 func (s *SDK[T]) TradeQuery(req *model.TradeQueryReqData) (*T, error) { return s.Trade.TradeQuery(req) diff --git a/lklsdk/split_ledger_more.go b/lklsdk/split_ledger_more.go index 70ad5e2..b6889b8 100644 --- a/lklsdk/split_ledger_more.go +++ b/lklsdk/split_ledger_more.go @@ -156,3 +156,22 @@ func (s *SplitLedgerService[T]) OrderSplitLedgerResultQuery(req *model.OrderSpli } return respBody, nil } + +func (s *SplitLedgerService[T]) OrderSplitLedgerFallback(req *model.OrderSplitLedgerFallbackReqData) (*T, error) { + // 构建请求参数 + url := consts.BASE_URL + consts.LKL_SPLIT_LEDGER_FALLBACK_URL + + // 构建BaseModel请求 + baseReq := model.OrderSplitLedgerFallbackRequest{ + ReqTime: time.Now().Format("20060102150405"), + Version: "3.0", + ReqData: req, + } + + // 发送请求 + respBody, err := s.client.DoRequest(url, baseReq) + if err != nil { + return nil, err + } + return respBody, nil +} diff --git a/model/orderSplitLedgerFallback.go b/model/orderSplitLedgerFallback.go new file mode 100644 index 0000000..2072eeb --- /dev/null +++ b/model/orderSplitLedgerFallback.go @@ -0,0 +1,40 @@ +package model + +type OrderSplitLedgerFallbackRequest struct { + ReqData *OrderSplitLedgerFallbackReqData `json:"req_data"` // 请求业务数据 + Version string `json:"version"` // 接口版本号 + ReqTime string `json:"req_time"` // 请求时间,格式为yyyyMMddHHmmss +} + +type OrderSplitLedgerFallbackReqData struct { + MerchantNo string `json:"merchant_no"` // 商户号,必传,长度32 + OriginSeparateNo string `json:"origin_separate_no"` // 原分账单号,必传,长度32 + OutSeparateNo string `json:"out_separate_no"` // 外部分账单号,必传,长度32 + OriginOutSeparateNo string `json:"origin_out_separate_no"` // 原外部分账单号,必传,长度32 + FallbackReason string `json:"fallback_reason"` // 回退原因,必传,长度255 + TotalAmt string `json:"total_amt"` // 总金额,必传,长度15 + OriginRecvDatas []*OrderSplitLedgerOriginRecvDatas `json:"origin_recv_datas"` // 原分账接收数据,必传,数组长度1-100 +} + +type OrderSplitLedgerOriginRecvDatas struct { + RecvNo string `json:"recv_no"` // 原分账接收号,必传,长度32 + Amt string `json:"amt"` // 原分账接收金额,必传,长度15 +} + +type OrderSplitLedgerFallbackResponse struct { + Msg string `json:"msg"` // 消息 + RespTime string `json:"resp_time"` // 响应时间 + Code string `json:"code"` // 响应码 SACS0000表示成功 + RespData struct { + OutSeparateNo string `json:"out_separate_no"` // 外部分账单号,必传,长度32 + TotalAmt string `json:"total_amt"` // 总金额,必传,长度15 + OriginOutSeparateNo string `json:"origin_out_separate_no"` // 原外部分账单号,必传,长度32 + OriginSeparateNo string `json:"origin_separate_no"` // 原分账单号,必传,长度32 + Status string `json:"status"` // 状态,必传,长度1 + SeparateNo string `json:"separate_no"` // 分账单号,必传,长度32 + } +} + +func (s *OrderSplitLedgerFallbackResponse) SuccessOrFail() bool { + return s.Code == "SACS0000" +}