feat(lklsdk): 新增订单分账回退功能

- 在 consts/url.go 中添加分账回退接口地址常量 LKL_SPLIT_LEDGER_FALLBACK_URL
- 在 lklsdk/sdk.go 中新增 OrderSplitLedgerFallback 方法用于调用分账回退接口
- 在 lklsdk/split_ledger_more.go 中实现分账回退的具体请求逻辑
- 新建 model/orderSplitLedgerFallback.go 定义分账回退相关的请求与响应结构体
- 实现 OrderSplitLedgerFallbackResponse 的 SuccessOrFail 判断方法
main v1.0.27
gaoda 2025-12-08 10:38:58 +08:00
parent 9af7e32aff
commit 58068f06af
4 changed files with 65 additions and 0 deletions

View File

@ -25,6 +25,7 @@ const (
// LKL_ACCOUNT_WITHDRAW_URL 拉卡拉账户提现 // LKL_ACCOUNT_WITHDRAW_URL 拉卡拉账户提现
LKL_ACCOUNT_WITHDRAW_URL = "/v2/laep/industry/ewalletWithdrawD1" LKL_ACCOUNT_WITHDRAW_URL = "/v2/laep/industry/ewalletWithdrawD1"
LKL_SPLIT_LEDGER_RESULT_QUERY_URL = "/v3/sacs/query_plus" LKL_SPLIT_LEDGER_RESULT_QUERY_URL = "/v3/sacs/query_plus"
LKL_SPLIT_LEDGER_FALLBACK_URL = "/v3/sacs/fallback"
) )
const ( const (

View File

@ -158,6 +158,11 @@ func (s *SDK[T]) OrderSplitLedgerResultQuery(req *model.OrderSplitLedgerResultQu
return s.SplitLedger.OrderSplitLedgerResultQuery(req) return s.SplitLedger.OrderSplitLedgerResultQuery(req)
} }
// OrderSplitLedgerFallback 订单分账回退
func (s *SDK[T]) OrderSplitLedgerFallback(req *model.OrderSplitLedgerFallbackReqData) (*T, error) {
return s.SplitLedger.OrderSplitLedgerFallback(req)
}
// TradeQuery 交易查询 // TradeQuery 交易查询
func (s *SDK[T]) TradeQuery(req *model.TradeQueryReqData) (*T, error) { func (s *SDK[T]) TradeQuery(req *model.TradeQueryReqData) (*T, error) {
return s.Trade.TradeQuery(req) return s.Trade.TradeQuery(req)

View File

@ -156,3 +156,22 @@ func (s *SplitLedgerService[T]) OrderSplitLedgerResultQuery(req *model.OrderSpli
} }
return respBody, nil 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
}

View File

@ -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"
}