From 7880d87b51e2bb1615689b0e943d1133d2d32eae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 29 Jul 2025 17:17:42 +0800 Subject: [PATCH] 1 --- .../lakala/lakala_separate_accounts.go | 62 +++++++++++++++++++ .../lakala/lakala_separate_accounts_model.go | 2 +- .../lakala/lakala_separate_accounts_test.go | 19 ++++++ 3 files changed, 82 insertions(+), 1 deletion(-) diff --git a/platformapi/lakala/lakala_separate_accounts.go b/platformapi/lakala/lakala_separate_accounts.go index b9230129..e0d520b1 100644 --- a/platformapi/lakala/lakala_separate_accounts.go +++ b/platformapi/lakala/lakala_separate_accounts.go @@ -581,3 +581,65 @@ func (a *API) AccountStatusQuery(tradeMode, subMerchantId, merchantNo string) (m return result["respData"].(map[string]interface{}), nil } + +// SubMerchantInfoQuery 报备查询 +// https://o.lakala.com/#/home/document/detail?id=326 +func (a *API) SubMerchantInfoQuery(param *SubMerchantInfoQueryReq) ([]*SubMerchantInfoQueryResp, error) { + reqParameter := map[string]interface{}{ + "reqData": utils.Struct2Map(param, "", false), + } + result, err := a.AccessAPISign(SeparateAccountProdUrl, SubMerchantQuery, http.MethodPost, "", reqParameter) + if err != nil { + return nil, err + } + + if result["retCode"].(string) != Success { + return nil, errors.New(result["retMsg"].(string)) + } + + if result["respData"] != nil && result["respData"].(map[string]interface{}) != nil { + list := make([]*SubMerchantInfoQueryResp, 0, 0) + data, err := json.Marshal(result["respData"].(map[string]interface{})["list"]) + if err != nil { + return nil, err + } + if err = json.Unmarshal(data, &list); err != nil { + return nil, err + } + + return list, nil + } + + return nil, errors.New("返回值为空") +} + +// SubMerchantInfoQueryReq 报备查询 +type SubMerchantInfoQueryReq struct { + Version string `json:"version"` // 必传 String 8 接口版本号 1.0 + OrderNo string `json:"orderNo"` // 必传 String 32 订单编号,保证唯一(便于后续跟踪排查问题及核对报文) 14位年月日时(24小时制)分秒+8位的随机数(不重复)如:2021020112000012345678 + OrgCode string `json:"orgCode"` // 必传 String 32 机构代码 (合作方在拉卡拉的标识,请联系业务员) 1 + MerInnerNo string `json:"merInnerNo"` // 可传 String 32 拉卡拉内部商户号和银联商户号必须传一个,都送以内部商户号为准。 5002022050550024285 + MerCupNo string `json:"merCupNo"` // 可传 String 32 拉卡拉内部商户号和银联商户号必须传一个,都送以内部商户号为准。 8222900581207ET + RegisterChannel string `json:"registerChannel"` // 可选 String 8 报备渠道 UNIONPAY + RegisterType string `json:"registerType"` // 可选 String 64 报备类型 WXZF + RegisterStatus string `json:"registerStatus"` // 可选 String 64 报备状态 SUCCESS:成功;FAIL:失败 SUCCESS + SubMchId string `json:"subMchId"` // 可选 String 64 子商户号 +} + +// SubMerchantInfoQueryResp 报备查询返回值 +type SubMerchantInfoQueryResp struct { + MerInnerNo string `json:"merInnerNo"` // 内部商户号 + SubMchId string `json:"subMchId"` // 子商户号 + SubMchIdBank string `json:"subMchIdBank"` // 交易子商户号 + DcWalletId string `json:"dcWalletId"` // 数币钱包ID + RegisterType string `json:"registerType"` // 报备类型 + RegisterTypeText string `json:"registerTypeText"` + RegisterChannel string `json:"registerChannel"` // 报备渠道 + RegisterChannelText string `json:"registerChannelText"` + ChannelId string `json:"channelId"` // 渠道号 + ReceOrgNo string `json:"receOrgNo"` // 从业机构号 + RegisterTm string `json:"registerTm"` // 报备时间 + RegisterStatus string `json:"registerStatus"` // 报备状态 + ResultCode string `json:"resultCode"` // 结果返回码 + ResultMessage string `json:"resultMessage"` // 结果描述 +} diff --git a/platformapi/lakala/lakala_separate_accounts_model.go b/platformapi/lakala/lakala_separate_accounts_model.go index 3051979f..3ba50d24 100644 --- a/platformapi/lakala/lakala_separate_accounts_model.go +++ b/platformapi/lakala/lakala_separate_accounts_model.go @@ -39,7 +39,7 @@ const ( AlibabaQueryAuthentication = "alipayRealNameQuery" // 阿里修改实名认证 WeChatAccountStatusQuery = "alipayRealNameQuery" // 微信开户状态差取暖 AlibabaAccountStatusQuery = "alipayRealNameQuery" // 阿里开户状态查询 - + SubMerchantQuery = "querySubMerInfo" // 报备查询 ) // 分账 diff --git a/platformapi/lakala/lakala_separate_accounts_test.go b/platformapi/lakala/lakala_separate_accounts_test.go index b26eb6bd..64639c0e 100644 --- a/platformapi/lakala/lakala_separate_accounts_test.go +++ b/platformapi/lakala/lakala_separate_accounts_test.go @@ -1,6 +1,8 @@ package lakala import ( + "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/globals" "testing" ) @@ -41,3 +43,20 @@ func TestGetSeparate(t *testing.T) { func TestQuerySeparateRecipient(t *testing.T) { api.QuerySeparateRecipient("SR20240010115366", "SR2024000115366") } + +func TestSubMerchantInfoQuery(t *testing.T) { + param := &SubMerchantInfoQueryReq{ + Version: "1.0", + OrderNo: "SR2024001011536611", + OrgCode: OrgCode, + MerInnerNo: "", + MerCupNo: "822651059990E2S", + RegisterChannel: "", + RegisterType: "", + RegisterStatus: "", + SubMchId: "", + } + data, err := api.SubMerchantInfoQuery(param) + globals.SugarLogger.Debugf("data := %s", utils.Format4Output(data, false)) + globals.SugarLogger.Debugf("data := %v", err) +}