Compare commits

...
5 Commits
Author SHA1 Message Date
maguodong 6f685ea087 Merge remote-tracking branch 'github.com/black1552/main' 2025-11-12 10:08:55 +08:00
maguodong b038c64873 refactor(common): 替换JSON处理库为gjson
- 使用gjson替代标准库encoding/json- 更新Unmarshal调用为gjson.Unmarshal
- 更新Marshal调用为gjson.Marshal- 移除未使用的json导入声明
2025-11-12 10:08:36 +08:00
gaoda 8eeee5cbe1 fix(merchant): 更新电子合同查询状态请求字段
- 将 OrgID 字段重命名为 OrgCode以匹配拉卡拉机构号定义- 保持 EcApplyID 字段定义不变
- 调整结构体字段注释格式以提高可读性
2025-11-10 09:52:15 +08:00
maguodong aa5b400ee8 feat(lklsdk): 新增商户进件复议提交功能
- 在MerService中实现ReconsiderSubmit方法,支持构建并发送复议提交请求
- 在SDK中暴露ReconsiderSubmitTest方法,用于测试环境的复议提交
- 同步新增QueryMerchantTest、MerValidateTest和AddMerTest等测试方法
- 所有新接口均遵循现有请求封装逻辑,确保一致性和可维护性
2025-11-08 09:00:05 +08:00
maguodong c11e75f910 feat(merchant): 添加商户进件及查询测试接口
- 新增 AddMerTest 方法用于商户进件测试
- 新增 QueryMerTest 方法用于商户查询测试
- 新增 MerValidateTest 方法用于商户验证测试
- 修改 ReconsiderSubmit 方法名为 ReconsiderSubmitTest 并调整 URL 为测试环境
- 所有测试方法均使用 BASE_TEST_URL 作为基础地址
- 统一测试方法中 ReqId生成逻辑和请求结构体构建方式
2025-11-08 08:56:09 +08:00
4 changed files with 118 additions and 6 deletions
+4 -3
View File
@@ -1,8 +1,9 @@
package common package common
import ( import (
"encoding/json"
"reflect" "reflect"
"github.com/gogf/gf/v2/encoding/gjson"
) )
// CleanJSON 清理JSON字符串中的空值和0值字段 // CleanJSON 清理JSON字符串中的空值和0值字段
@@ -10,7 +11,7 @@ func CleanJSON(jsonStr string) ([]byte, error) {
var data interface{} var data interface{}
// 解析JSON字符串 // 解析JSON字符串
if err := json.Unmarshal([]byte(jsonStr), &data); err != nil { if err := gjson.Unmarshal([]byte(jsonStr), &data); err != nil {
return nil, err return nil, err
} }
@@ -18,7 +19,7 @@ func CleanJSON(jsonStr string) ([]byte, error) {
cleaned := cleanData(data) cleaned := cleanData(data)
// 转换回JSON字符串 // 转换回JSON字符串
result, err := json.Marshal(cleaned) result, err := gjson.Marshal(cleaned)
if err != nil { if err != nil {
return nil, err return nil, err
} }
+91
View File
@@ -47,6 +47,30 @@ func (t *MerService[T]) AddMer(req *model.MerchantApplyReqData) (*T, error) {
return respBody, nil return respBody, nil
} }
// AddMerTest 商户进件(测试)
func (t *MerService[T]) AddMerTest(req *model.MerchantApplyReqData) (*T, error) {
// 构建请求参数
url := consts.BASE_TEST_URL + consts.LKL_ADD_MER
md5, err := gmd5.Encrypt(gconv.String(time.Now().Unix()))
if err != nil {
return nil, fmt.Errorf("创建ReqId失败")
}
// 构建BaseModel请求
baseReq := model.MerchantApplyRequest{
ReqData: req,
ReqId: md5,
Timestamp: time.Now().Unix(),
Ver: "1.0.0",
}
// 发送请求
respBody, err := t.client.DoRequest(url, baseReq)
if err != nil {
return nil, err
}
return respBody, nil
}
func (t *MerService[T]) QueryMer(req *model.QueryMerRequestData) (*T, error) { func (t *MerService[T]) QueryMer(req *model.QueryMerRequestData) (*T, error) {
// 构建请求参数 // 构建请求参数
url := consts.BASE_URL + consts.LKL_QUERY_MER url := consts.BASE_URL + consts.LKL_QUERY_MER
@@ -69,6 +93,28 @@ func (t *MerService[T]) QueryMer(req *model.QueryMerRequestData) (*T, error) {
} }
return respBody, nil return respBody, nil
} }
func (t *MerService[T]) QueryMerTest(req *model.QueryMerRequestData) (*T, error) {
// 构建请求参数
url := consts.BASE_TEST_URL + consts.LKL_QUERY_MER
md5, err := gmd5.Encrypt(gconv.String(time.Now().Unix()))
if err != nil {
return nil, fmt.Errorf("创建ReqId失败")
}
// 构建BaseModel请求
baseReq := model.QueryMerRequest{
ReqData: req,
ReqId: md5,
Timestamp: time.Now().Unix(),
Ver: "1.0.0",
}
// 发送请求
respBody, err := t.client.DoRequest(url, baseReq)
if err != nil {
return nil, err
}
return respBody, nil
}
func (t *MerService[T]) MerValidate(req *model.MerValidateRequestData) (*T, error) { func (t *MerService[T]) MerValidate(req *model.MerValidateRequestData) (*T, error) {
// 构建请求参数 // 构建请求参数
url := consts.BASE_URL + consts.LKL_MER_VALIDATE url := consts.BASE_URL + consts.LKL_MER_VALIDATE
@@ -91,6 +137,28 @@ func (t *MerService[T]) MerValidate(req *model.MerValidateRequestData) (*T, erro
} }
return respBody, nil return respBody, nil
} }
func (t *MerService[T]) MerValidateTest(req *model.MerValidateRequestData) (*T, error) {
// 构建请求参数
url := consts.BASE_TEST_URL + consts.LKL_MER_VALIDATE
md5, err := gmd5.Encrypt(gconv.String(time.Now().Unix()))
if err != nil {
return nil, fmt.Errorf("创建ReqId失败")
}
// 构建BaseModel请求
baseReq := model.MerValidateRequest{
ReqData: req,
ReqId: md5,
Timestamp: time.Now().Unix(),
Ver: "1.0.0",
}
// 发送请求
respBody, err := t.client.DoRequest(url, baseReq)
if err != nil {
return nil, err
}
return respBody, nil
}
func (t *MerService[T]) ReconsiderSubmit(req *model.ReConfSubmitRequestData) (*T, error) { func (t *MerService[T]) ReconsiderSubmit(req *model.ReConfSubmitRequestData) (*T, error) {
// 构建请求参数 // 构建请求参数
@@ -114,3 +182,26 @@ func (t *MerService[T]) ReconsiderSubmit(req *model.ReConfSubmitRequestData) (*T
} }
return respBody, nil return respBody, nil
} }
func (t *MerService[T]) ReconsiderSubmitTest(req *model.ReConfSubmitRequestData) (*T, error) {
// 构建请求参数
url := consts.BASE_TEST_URL + consts.LKL_RECONF_SUBMIT
md5, err := gmd5.Encrypt(gconv.String(time.Now().Unix()))
if err != nil {
return nil, fmt.Errorf("创建ReqId失败")
}
// 构建BaseModel请求
baseReq := model.ReConfSubmitRequest{
ReqData: req,
ReqId: md5,
Timestamp: time.Now().Unix(),
Ver: "1.0",
}
// 发送请求
respBody, err := t.client.DoRequest(url, baseReq)
if err != nil {
return nil, err
}
return respBody, nil
}
@@ -7,8 +7,8 @@ package querystatus
// 生产环境:https://s2.lakala.com/api/v3/mms/open_api/ec/q_status // 生产环境:https://s2.lakala.com/api/v3/mms/open_api/ec/q_status
type ECQueryStatusRequestData struct { type ECQueryStatusRequestData struct {
OrderNo string `json:"order_no" dc:"四方机构自定义订单编号 必选,建议:平台编号+14位年月日时(24小时制)分秒+8位的随机数(同一接入机构不重复)"` // 必选,建议:平台编号+14位年月日时(24小时制)分秒+8位的随机数(同一接入机构不重复) OrderNo string `json:"order_no" dc:"四方机构自定义订单编号 必选,建议:平台编号+14位年月日时(24小时制)分秒+8位的随机数(同一接入机构不重复)"` // 必选,建议:平台编号+14位年月日时(24小时制)分秒+8位的随机数(同一接入机构不重复)
OrgID int `json:"org_id" dc:"机构号 必选,签约方所属拉卡拉机构"` // 必选,签约方所属拉卡拉机构 OrgCode int `json:"org_code" dc:"机构号 必选,签约方所属拉卡拉机构"` // 必选,签约方所属拉卡拉机构
EcApplyID int64 `json:"ec_apply_id" dc:"电子合同申请受理号 必选,申请接口反馈编号"` // 必选,申请接口反馈编号 EcApplyID int64 `json:"ec_apply_id" dc:"电子合同申请受理号 必选,申请接口反馈编号"` // 必选,申请接口反馈编号
} }
// ECQueryStatusRequest 电子合同查询状态请求 // ECQueryStatusRequest 电子合同查询状态请求
+20
View File
@@ -54,21 +54,41 @@ func (s *SDK[T]) ReconsiderSubmit(req *model.ReConfSubmitRequestData) (*T, error
return s.Merchant.ReconsiderSubmit(req) return s.Merchant.ReconsiderSubmit(req)
} }
// ReconsiderSubmitTest 商户进件复议提交
func (s *SDK[T]) ReconsiderSubmitTest(req *model.ReConfSubmitRequestData) (*T, error) {
return s.Merchant.ReconsiderSubmitTest(req)
}
// QueryMerchant 商户进件信息查询 // QueryMerchant 商户进件信息查询
func (s *SDK[T]) QueryMerchant(req *model.QueryMerRequestData) (*T, error) { func (s *SDK[T]) QueryMerchant(req *model.QueryMerRequestData) (*T, error) {
return s.Merchant.QueryMer(req) return s.Merchant.QueryMer(req)
} }
// QueryMerchantTest 商户进件信息查询
func (s *SDK[T]) QueryMerchantTest(req *model.QueryMerRequestData) (*T, error) {
return s.Merchant.QueryMerTest(req)
}
// MerValidate 商户进件信息校验 // MerValidate 商户进件信息校验
func (s *SDK[T]) MerValidate(req *model.MerValidateRequestData) (*T, error) { func (s *SDK[T]) MerValidate(req *model.MerValidateRequestData) (*T, error) {
return s.Merchant.MerValidate(req) return s.Merchant.MerValidate(req)
} }
// MerValidateTest 商户进件信息校验
func (s *SDK[T]) MerValidateTest(req *model.MerValidateRequestData) (*T, error) {
return s.Merchant.MerValidateTest(req)
}
// AddMer 商户进件 // AddMer 商户进件
func (s *SDK[T]) AddMer(req *model.MerchantApplyReqData) (*T, error) { func (s *SDK[T]) AddMer(req *model.MerchantApplyReqData) (*T, error) {
return s.Merchant.AddMer(req) return s.Merchant.AddMer(req)
} }
// AddMerTest 商户进件
func (s *SDK[T]) AddMerTest(req *model.MerchantApplyReqData) (*T, error) {
return s.Merchant.AddMerTest(req)
}
// MergePreOrder 主扫合单交易 // MergePreOrder 主扫合单交易
func (s *SDK[T]) MergePreOrder(req *model.MergePreorderReqData) (*T, error) { func (s *SDK[T]) MergePreOrder(req *model.MergePreorderReqData) (*T, error) {
return s.MergePre.PreOrder(req) return s.MergePre.PreOrder(req)