From a7dca57d232523bfeff22d8c9c93bb40c2036e03 Mon Sep 17 00:00:00 2001 From: gaoda <2772718884@qq.com> Date: Fri, 5 Dec 2025 10:03:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(split):=20=E6=96=B0=E5=A2=9E=E5=88=86?= =?UTF-8?q?=E8=B4=A6=E7=BB=93=E6=9E=9C=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 consts/url.go 中新增分账结果查询 URL 常量 - 实现 SplitLedgerService 的 SplitLedgerResultQuery 方法 - 新增 model/splitLedgerResult.go 文件定义相关请求和响应结构体 - 支持通过 separate_no 或 out_separate_no 查询分账结果 - 返回详细的分账状态、金额及明细信息 --- consts/url.go | 3 ++- lklsdk/split_ledger_more.go | 19 ++++++++++++++ model/splitLedgerResult.go | 49 +++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 model/splitLedgerResult.go diff --git a/consts/url.go b/consts/url.go index 1bf3921..af4cd4c 100644 --- a/consts/url.go +++ b/consts/url.go @@ -23,7 +23,8 @@ const ( // LKL_ACCOUNT_BALANCE_QUERY_URL 拉卡拉账户余额查询 LKL_ACCOUNT_BALANCE_QUERY_URL = "/v2/laep/industry/ewalletBalanceQuery" // 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" ) const ( diff --git a/lklsdk/split_ledger_more.go b/lklsdk/split_ledger_more.go index 8daac74..20504d6 100644 --- a/lklsdk/split_ledger_more.go +++ b/lklsdk/split_ledger_more.go @@ -137,3 +137,22 @@ func (s *SplitLedgerService[T]) OrderSplitLedgerTest(req *model.OrderSplitLedger } return respBody, nil } + +func (s *SplitLedgerService[T]) SplitLedgerResultQuery(req *model.SplitLedgerResultQueryReqData) (*T, error) { + // 构建请求参数 + url := consts.BASE_URL + consts.LKL_SPLIT_LEDGER_RESULT_QUERY_URL + + // 构建BaseModel请求 + baseReq := model.SplitLedgerResultQueryRequest{ + 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/splitLedgerResult.go b/model/splitLedgerResult.go new file mode 100644 index 0000000..37d70e0 --- /dev/null +++ b/model/splitLedgerResult.go @@ -0,0 +1,49 @@ +package model + +type SplitLedgerResultQueryRequest struct { + ReqData *SplitLedgerResultQueryReqData `json:"req_data"` // 请求业务数据 + Version string `json:"version"` // 接口版本号 + ReqTime string `json:"req_time"` // 请求时间,格式为yyyyMMddHHmmss +} + +type SplitLedgerResultQueryReqData struct { + MerchantNo string `json:"merchant_no"` // 商户号,必传,长度32 + SeparateNo string `json:"separate_no"` // 分账核心系统返回的分账流水号,入参中的separate_no,out_separate_no至少二选一,优先级: separate_no> out_separate_no + OutSeparateNo string `json:"out_separate_no"` // 商户分账指令流水号,入入参中的separate_no,out_separate_no至少二选一,优先级: separate_no> out_separate_no +} + +type SplitLedgerResultQueryResponse struct { + Msg string `json:"msg"` // 消息 + RespTime string `json:"resp_time"` // 响应时间 + Code string `json:"code"` // 响应码 SACS0000表示成功 + RespData struct { + SeparateNo string `json:"separate_no"` // 分账指令流水号 + OutSeparateNo string `json:"out_separate_no"` // 商户分账指令流水号 + CmdType string `json:"cmd_type"` // 指令类型 SEPARATE:分账 CANCEL:分账撤销 FALLBACK:分账回退 + LogNo string `json:"log_no"` // 拉卡拉对账单流水号 + LogDate string `json:"log_date"` // 交易日期 posp日期,yyyyMMdd,查清结算用 + CalType string `json:"cal_type"` // 分账计算类型 0 按照指定金额。1 按照指定比例,默认 0 (cmd_type为SEPARATE分账指令类型才有值) + SeparateDate string `json:"separate_date"` // 分账日期 + FinishDate string `json:"finish_date"` // 完成日期 + TotalAmt string `json:"total_amt"` // 发生总金额,单位为分 + Status string `json:"status"` // 分账状态,ACCEPTED:已受理, PROCESSING:处理中, FAIL:失败, SUCCESS:成功, (如果分账指令后有反向操作指令,则原分账指令会变更成以下的状态之一:) CANCELING:撤销中, CANCELED:撤销成功, CANCEL_FAIL:撤销失败, FALLBACKING:回退中, FALLBACK_END:回退结束 + FinalStatus string `json:"final_status"` // 处理状态 ACCEPTED:已受理, PROCESSING:处理中, FAIL:失败, SUCCESS:成功 + FrontRuleId string `json:"front_rule_id"` // 分账前置规则ID + ActualSeparateAmt string `json:"actual_separate_amt"` // 实分金额 + TotalFeeAmt string `json:"total_fee_amt"` // 手续费金额 + AccResultDesc string `json:"acc_result_desc"` // 账户处理错误描述 + DetailDatas []*SplitLedgerResultQueryRespDetailDatas `json:"detail_datas"` // 明细数据 + } +} + +type SplitLedgerResultQueryRespDetailDatas struct { + RecvMerchantNo string `json:"recv_merchant_no"` // 接收方商户号 + RecvNo string `json:"recv_no"` // 接收方编号 + Amt string `json:"amt"` // 分账金额 + ActualAmt string `json:"actual_amt"` // 实分金额 + FeeAmt string `json:"fee_amt"` // 手续费金额 +} + +func (s *SplitLedgerResultQueryResponse) SuccessOrFail() bool { + return s.Code == "SACS0000" +}