feat(电子合同): 添加电子合同相关功能及文档链接
- 在model/merchant.go中将AttType字段类型改为consts.AcctTypeCode - 为所有电子合同相关接口添加文档链接注释 - 在consts/url.go中添加测试环境URL和电子合同相关API路径 - 在lklsdk/merchant/in_net/ec/applymanual/request.go中将AttachType字段类型改为consts.AttType - 在lklsdk/sdk.go中添加电子合同相关服务初始化及接口封装main
parent
e985b790d4
commit
ee259e7c9a
|
|
@ -1,7 +1,8 @@
|
||||||
package consts
|
package consts
|
||||||
|
|
||||||
const (
|
const (
|
||||||
BASE_URL = "https://s2.lakala.com/api"
|
BASE_URL = "https://s2.lakala.com/api"
|
||||||
|
BASE_TEST_URL = "https://test.wsmsd.cn/sit/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -45,6 +46,16 @@ const (
|
||||||
LKL_MER_VALIDATE = "/v2/mms/openApi/verifyContractInfo"
|
LKL_MER_VALIDATE = "/v2/mms/openApi/verifyContractInfo"
|
||||||
// LKL_RECONF_SUBMIT 拉卡拉商户进件复议提交
|
// LKL_RECONF_SUBMIT 拉卡拉商户进件复议提交
|
||||||
LKL_RECONF_SUBMIT = "/v2/mms/openApi/reconsiderSubmit"
|
LKL_RECONF_SUBMIT = "/v2/mms/openApi/reconsiderSubmit"
|
||||||
|
// LKL_EC_APPLY 拉卡拉商户电子合同
|
||||||
|
LKL_EC_APPLY = "/v3/mms/open_api/ec/apply"
|
||||||
|
// LKL_EC_QUERY_STATUS 拉卡拉商户电子合同查询状态
|
||||||
|
LKL_EC_QUERY_STATUS = "/v3/mms/open_api/ec/q_status"
|
||||||
|
// LKL_EC_DOWNLOAD 拉卡拉商户电子合同下载
|
||||||
|
LKL_EC_DOWNLOAD = "/v3/mms/open_api/ec/download"
|
||||||
|
// LKL_EC_APPLY_MANUAL 拉卡拉商户电子合同人工复核申请
|
||||||
|
LKL_EC_APPLY_MANUAL = "/v3/mms/open_api/ec/apply_manual"
|
||||||
|
// LKL_EC_QMA_STATUS 拉卡拉商户电子合同人工复核结果查询
|
||||||
|
LKL_EC_QMA_STATUS = "/v3/mms/open_api/ec/qma_status"
|
||||||
)
|
)
|
||||||
|
|
||||||
// unifiedReturn 统一退货API地址
|
// unifiedReturn 统一退货API地址
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ func NewEcApply(client *common.Client[ECApplyResponse]) *Apply {
|
||||||
// 提供与拉卡拉进行电子签约的第四方进行电子合同申请
|
// 提供与拉卡拉进行电子签约的第四方进行电子合同申请
|
||||||
// 电子合同签约成功后不需要将其下载出来作为附件上传,只需将电子合同编号(ecNo)
|
// 电子合同签约成功后不需要将其下载出来作为附件上传,只需将电子合同编号(ecNo)
|
||||||
// 在“新增商户入网”接口中在(contractNo)字段中传入即可
|
// 在“新增商户入网”接口中在(contractNo)字段中传入即可
|
||||||
|
// https://o.lakala.com/#/home/document/detail?id=289
|
||||||
func (a *Apply) ECApply(req *ECApplyRequestData) (*ECApplyResponse, error) {
|
func (a *Apply) ECApply(req *ECApplyRequestData) (*ECApplyResponse, error) {
|
||||||
// 构建请求
|
// 构建请求
|
||||||
baseReq := ECApplyRequest{
|
baseReq := ECApplyRequest{
|
||||||
|
|
@ -35,6 +36,7 @@ func (a *Apply) ECApply(req *ECApplyRequestData) (*ECApplyResponse, error) {
|
||||||
// 提供与拉卡拉进行电子签约的第四方进行电子合同申请
|
// 提供与拉卡拉进行电子签约的第四方进行电子合同申请
|
||||||
// 电子合同签约成功后不需要将其下载出来作为附件上传,只需将电子合同编号(ecNo)
|
// 电子合同签约成功后不需要将其下载出来作为附件上传,只需将电子合同编号(ecNo)
|
||||||
// 在“新增商户入网”接口中在(contractNo)字段中传入即可
|
// 在“新增商户入网”接口中在(contractNo)字段中传入即可
|
||||||
|
// https://o.lakala.com/#/home/document/detail?id=289
|
||||||
func (a *Apply) ECApplyTest(req *ECApplyRequestData) (*ECApplyResponse, error) {
|
func (a *Apply) ECApplyTest(req *ECApplyRequestData) (*ECApplyResponse, error) {
|
||||||
// 构建请求
|
// 构建请求
|
||||||
baseReq := ECApplyRequest{
|
baseReq := ECApplyRequest{
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ func NewApplyManual(client *common.Client[ECApplyManualResponse]) *ApplyManual {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ECApplyManual 电子合同人工复核申请(生产环境)
|
// ECApplyManual 电子合同人工复核申请(生产环境)
|
||||||
|
// https://o.lakala.com/#/home/document/detail?id=981
|
||||||
func (a *ApplyManual) ECApplyManual(req *ECApplyManualRequestData) (*ECApplyManualResponse, error) {
|
func (a *ApplyManual) ECApplyManual(req *ECApplyManualRequestData) (*ECApplyManualResponse, error) {
|
||||||
// 创建请求对象
|
// 创建请求对象
|
||||||
request := ECApplyManualRequest{
|
request := ECApplyManualRequest{
|
||||||
|
|
@ -30,6 +31,7 @@ func (a *ApplyManual) ECApplyManual(req *ECApplyManualRequestData) (*ECApplyManu
|
||||||
}
|
}
|
||||||
|
|
||||||
// ECApplyManualTest 电子合同人工复核申请(测试环境)
|
// ECApplyManualTest 电子合同人工复核申请(测试环境)
|
||||||
|
// https://o.lakala.com/#/home/document/detail?id=981
|
||||||
func (a *ApplyManual) ECApplyManualTest(req *ECApplyManualRequestData) (*ECApplyManualResponse, error) {
|
func (a *ApplyManual) ECApplyManualTest(req *ECApplyManualRequestData) (*ECApplyManualResponse, error) {
|
||||||
// 创建请求对象
|
// 创建请求对象
|
||||||
request := ECApplyManualRequest{
|
request := ECApplyManualRequest{
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
package applymanual
|
package applymanual
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/black1552/lkl_sdk/consts"
|
||||||
|
)
|
||||||
|
|
||||||
// ECApplyManualRequestData 电子合同人工复核申请请求数据结构体
|
// ECApplyManualRequestData 电子合同人工复核申请请求数据结构体
|
||||||
type ECApplyManualRequestData struct {
|
type ECApplyManualRequestData struct {
|
||||||
Version string `json:"version"` // 版本号,默认1.0
|
Version string `json:"version"` // 版本号,默认1.0
|
||||||
|
|
@ -13,7 +17,7 @@ type ECApplyManualRequestData struct {
|
||||||
|
|
||||||
// ECFileData 附件信息结构体
|
// ECFileData 附件信息结构体
|
||||||
type ECFileData struct {
|
type ECFileData struct {
|
||||||
AttachType string `json:"attach_type"` // 附件类型,必填,枚举值见文档
|
AttachType consts.AttType `json:"attach_type"` // 附件类型,必填,枚举值见文档
|
||||||
AttachName string `json:"attach_name"` // 附件名称,必填,最大32字符
|
AttachName string `json:"attach_name"` // 附件名称,必填,最大32字符
|
||||||
AttachExtName string `json:"attach_ext_name"` // 附件格式,必填,jpg、pdf等
|
AttachExtName string `json:"attach_ext_name"` // 附件格式,必填,jpg、pdf等
|
||||||
AttachStorePath string `json:"attach_store_path"` // 附件坐标URL,必填,如G1/M00/00/61/CrFdEl3IyceAVVd8AAA0ADuZsA0911.jpg
|
AttachStorePath string `json:"attach_store_path"` // 附件坐标URL,必填,如G1/M00/00/61/CrFdEl3IyceAVVd8AAA0ADuZsA0911.jpg
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ func NewDownload(client *common.Client[ECDownloadResponse]) *Download {
|
||||||
|
|
||||||
// ECDownload 电子合同下载
|
// ECDownload 电子合同下载
|
||||||
// 提供已完成的签约电子合同下载
|
// 提供已完成的签约电子合同下载
|
||||||
|
// https://o.lakala.com/#/home/document/detail?id=294
|
||||||
func (d *Download) ECDownload(req *ECDownloadRequestData) (*ECDownloadResponse, error) {
|
func (d *Download) ECDownload(req *ECDownloadRequestData) (*ECDownloadResponse, error) {
|
||||||
// 构建请求
|
// 构建请求
|
||||||
baseReq := ECDownloadRequest{
|
baseReq := ECDownloadRequest{
|
||||||
|
|
@ -33,6 +34,7 @@ func (d *Download) ECDownload(req *ECDownloadRequestData) (*ECDownloadResponse,
|
||||||
|
|
||||||
// ECDownloadTest 电子合同下载(测试环境)
|
// ECDownloadTest 电子合同下载(测试环境)
|
||||||
// 提供已完成的签约电子合同下载
|
// 提供已完成的签约电子合同下载
|
||||||
|
// https://o.lakala.com/#/home/document/detail?id=294
|
||||||
func (d *Download) ECDownloadTest(req *ECDownloadRequestData) (*ECDownloadResponse, error) {
|
func (d *Download) ECDownloadTest(req *ECDownloadRequestData) (*ECDownloadResponse, error) {
|
||||||
// 构建请求
|
// 构建请求
|
||||||
baseReq := ECDownloadRequest{
|
baseReq := ECDownloadRequest{
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,8 @@ func NewQmaStatus(client *common.Client[ECQmaStatusResponse]) *QmaStatus {
|
||||||
return &QmaStatus{Client: client}
|
return &QmaStatus{Client: client}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ECQmaStatus 电子合同人工复核结果查询(生产环境)
|
// ECQmaStatus
|
||||||
|
// https://o.lakala.com/#/home/document/detail?id=982
|
||||||
func (q *QmaStatus) ECQmaStatus(req *ECQmaStatusRequestData) (*ECQmaStatusResponse, error) {
|
func (q *QmaStatus) ECQmaStatus(req *ECQmaStatusRequestData) (*ECQmaStatusResponse, error) {
|
||||||
// 创建请求对象
|
// 创建请求对象
|
||||||
request := ECQmaStatusRequest{
|
request := ECQmaStatusRequest{
|
||||||
|
|
@ -28,6 +29,7 @@ func (q *QmaStatus) ECQmaStatus(req *ECQmaStatusRequestData) (*ECQmaStatusRespon
|
||||||
}
|
}
|
||||||
|
|
||||||
// ECQmaStatusTest 电子合同人工复核结果查询(测试环境)
|
// ECQmaStatusTest 电子合同人工复核结果查询(测试环境)
|
||||||
|
// https://o.lakala.com/#/home/document/detail?id=982
|
||||||
func (q *QmaStatus) ECQmaStatusTest(req *ECQmaStatusRequestData) (*ECQmaStatusResponse, error) {
|
func (q *QmaStatus) ECQmaStatusTest(req *ECQmaStatusRequestData) (*ECQmaStatusResponse, error) {
|
||||||
// 创建请求对象
|
// 创建请求对象
|
||||||
request := ECQmaStatusRequest{
|
request := ECQmaStatusRequest{
|
||||||
|
|
@ -36,4 +38,4 @@ func (q *QmaStatus) ECQmaStatusTest(req *ECQmaStatusRequestData) (*ECQmaStatusRe
|
||||||
Version: "1.0",
|
Version: "1.0",
|
||||||
}
|
}
|
||||||
return q.Client.DoRequest(consts.BASE_TEST_URL+consts.LKL_EC_QMA_STATUS, request)
|
return q.Client.DoRequest(consts.BASE_TEST_URL+consts.LKL_EC_QMA_STATUS, request)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ func NewQStatus(client *common.Client[ECQueryStatusResponse]) *QStatus {
|
||||||
|
|
||||||
// QueryStatus 电子合同查询状态
|
// QueryStatus 电子合同查询状态
|
||||||
// 提供申请过与拉卡拉电子签约用户查询电子合同签署状态
|
// 提供申请过与拉卡拉电子签约用户查询电子合同签署状态
|
||||||
|
// https://o.lakala.com/#/home/document/detail?id=293
|
||||||
func (q *QStatus) QueryStatus(req *ECQueryStatusRequestData) (*ECQueryStatusResponse, error) {
|
func (q *QStatus) QueryStatus(req *ECQueryStatusRequestData) (*ECQueryStatusResponse, error) {
|
||||||
// 构建请求
|
// 构建请求
|
||||||
baseReq := ECQueryStatusRequest{
|
baseReq := ECQueryStatusRequest{
|
||||||
|
|
@ -33,6 +34,7 @@ func (q *QStatus) QueryStatus(req *ECQueryStatusRequestData) (*ECQueryStatusResp
|
||||||
|
|
||||||
// QueryStatusTest 电子合同查询状态(测试环境)
|
// QueryStatusTest 电子合同查询状态(测试环境)
|
||||||
// 提供申请过与拉卡拉电子签约用户查询电子合同签署状态
|
// 提供申请过与拉卡拉电子签约用户查询电子合同签署状态
|
||||||
|
// https://o.lakala.com/#/home/document/detail?id=293
|
||||||
func (q *QStatus) QueryStatusTest(req *ECQueryStatusRequestData) (*ECQueryStatusResponse, error) {
|
func (q *QStatus) QueryStatusTest(req *ECQueryStatusRequestData) (*ECQueryStatusResponse, error) {
|
||||||
// 构建请求
|
// 构建请求
|
||||||
baseReq := ECQueryStatusRequest{
|
baseReq := ECQueryStatusRequest{
|
||||||
|
|
|
||||||
|
|
@ -4,31 +4,46 @@ import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"github.com/black1552/lkl_sdk/lklsdk/common"
|
"github.com/black1552/lkl_sdk/lklsdk/common"
|
||||||
|
ecApply "github.com/black1552/lkl_sdk/lklsdk/merchant/in_net/ec/apply"
|
||||||
|
ecApplyManual "github.com/black1552/lkl_sdk/lklsdk/merchant/in_net/ec/applymanual"
|
||||||
|
ecDownload "github.com/black1552/lkl_sdk/lklsdk/merchant/in_net/ec/download"
|
||||||
|
ecQmaStatus "github.com/black1552/lkl_sdk/lklsdk/merchant/in_net/ec/qmastatus"
|
||||||
|
ecQuery "github.com/black1552/lkl_sdk/lklsdk/merchant/in_net/ec/querystatus"
|
||||||
"github.com/black1552/lkl_sdk/model"
|
"github.com/black1552/lkl_sdk/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SDK 拉卡拉SDK主入口
|
// SDK 拉卡拉SDK主入口
|
||||||
type SDK[T any] struct {
|
type SDK[T any] struct {
|
||||||
Client *common.Client[T]
|
Client *common.Client[T]
|
||||||
SplitLedger *SplitLedgerService[T]
|
SplitLedger *SplitLedgerService[T]
|
||||||
Trade *TradeService[T]
|
Trade *TradeService[T]
|
||||||
Account *AccountService[T]
|
Account *AccountService[T]
|
||||||
UploadFile *UploadFileService[T]
|
UploadFile *UploadFileService[T]
|
||||||
MergePre *MergePreService[T]
|
MergePre *MergePreService[T]
|
||||||
Merchant *MerService[T]
|
Merchant *MerService[T]
|
||||||
|
EC *ecApply.Apply
|
||||||
|
ECQuery *ecQuery.QStatus
|
||||||
|
ECFileDownload *ecDownload.Download
|
||||||
|
ECPeApplyManual *ecApplyManual.ApplyManual
|
||||||
|
ECPeQmaStatus *ecQmaStatus.QmaStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewSDK 创建拉卡拉SDK实例
|
// NewSDK 创建拉卡拉SDK实例
|
||||||
func NewSDK[T any](ctx context.Context, cfgJson string) *SDK[T] {
|
func NewSDK[T any](ctx context.Context, cfgJson string) *SDK[T] {
|
||||||
client := common.NewClient[T](ctx, cfgJson)
|
client := common.NewClient[T](ctx, cfgJson)
|
||||||
return &SDK[T]{
|
return &SDK[T]{
|
||||||
Client: client,
|
Client: client,
|
||||||
SplitLedger: NewSplitLedgerService(client),
|
SplitLedger: NewSplitLedgerService(client),
|
||||||
Trade: NewTradeService(client),
|
Trade: NewTradeService(client),
|
||||||
Account: NewAccountService(client),
|
Account: NewAccountService(client),
|
||||||
UploadFile: NewUploadFileService(client),
|
UploadFile: NewUploadFileService(client),
|
||||||
MergePre: NewMergePreService(client),
|
MergePre: NewMergePreService(client),
|
||||||
Merchant: NewMerService(client),
|
Merchant: NewMerService(client),
|
||||||
|
EC: ecApply.NewEcApply(common.NewClient[ecApply.ECApplyResponse](ctx, cfgJson)),
|
||||||
|
ECQuery: ecQuery.NewQStatus(common.NewClient[ecQuery.ECQueryStatusResponse](ctx, cfgJson)),
|
||||||
|
ECFileDownload: ecDownload.NewDownload(common.NewClient[ecDownload.ECDownloadResponse](ctx, cfgJson)),
|
||||||
|
ECPeApplyManual: ecApplyManual.NewApplyManual(common.NewClient[ecApplyManual.ECApplyManualResponse](ctx, cfgJson)),
|
||||||
|
ECPeQmaStatus: ecQmaStatus.NewQmaStatus(common.NewClient[ecQmaStatus.ECQmaStatusResponse](ctx, cfgJson)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -117,3 +132,53 @@ func (s *SDK[T]) UploadFileQuery(req *model.UploadFileReqData) (*T, error) {
|
||||||
func (s *SDK[T]) Withdraw(req *model.WithdrawReqData) (*T, error) {
|
func (s *SDK[T]) Withdraw(req *model.WithdrawReqData) (*T, error) {
|
||||||
return s.Account.Withdraw(req)
|
return s.Account.Withdraw(req)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ECApply 电子合同申请
|
||||||
|
func (s *SDK[T]) ECApply(req *ecApply.ECApplyRequestData) (*ecApply.ECApplyResponse, error) {
|
||||||
|
return s.EC.ECApply(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ECApplyTest 电子合同申请(测试环境)
|
||||||
|
func (s *SDK[T]) ECApplyTest(req *ecApply.ECApplyRequestData) (*ecApply.ECApplyResponse, error) {
|
||||||
|
return s.EC.ECApplyTest(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ECQueryStatus 电子合同查询状态
|
||||||
|
func (s *SDK[T]) ECQueryStatus(req *ecQuery.ECQueryStatusRequestData) (*ecQuery.ECQueryStatusResponse, error) {
|
||||||
|
return s.ECQuery.QueryStatus(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ECQueryStatusTest 电子合同查询状态(测试环境)
|
||||||
|
func (s *SDK[T]) ECQueryStatusTest(req *ecQuery.ECQueryStatusRequestData) (*ecQuery.ECQueryStatusResponse, error) {
|
||||||
|
return s.ECQuery.QueryStatusTest(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ECDownload 电子合同下载
|
||||||
|
func (s *SDK[T]) ECDownload(req *ecDownload.ECDownloadRequestData) (*ecDownload.ECDownloadResponse, error) {
|
||||||
|
return s.ECFileDownload.ECDownload(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ECDownloadTest 电子合同下载(测试环境)
|
||||||
|
func (s *SDK[T]) ECDownloadTest(req *ecDownload.ECDownloadRequestData) (*ecDownload.ECDownloadResponse, error) {
|
||||||
|
return s.ECFileDownload.ECDownloadTest(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ECApplyManual 电子合同人工复核申请
|
||||||
|
func (s *SDK[T]) ECApplyManual(req *ecApplyManual.ECApplyManualRequestData) (*ecApplyManual.ECApplyManualResponse, error) {
|
||||||
|
return s.ECPeApplyManual.ECApplyManual(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ECApplyManualTest 电子合同人工复核申请(测试环境)
|
||||||
|
func (s *SDK[T]) ECApplyManualTest(req *ecApplyManual.ECApplyManualRequestData) (*ecApplyManual.ECApplyManualResponse, error) {
|
||||||
|
return s.ECPeApplyManual.ECApplyManualTest(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ECQmaStatus 电子合同人工复核结果查询
|
||||||
|
func (s *SDK[T]) ECQmaStatus(req *ecQmaStatus.ECQmaStatusRequestData) (*ecQmaStatus.ECQmaStatusResponse, error) {
|
||||||
|
return s.ECPeQmaStatus.ECQmaStatus(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ECQmaStatusTest 电子合同人工复核结果查询(测试环境)
|
||||||
|
func (s *SDK[T]) ECQmaStatusTest(req *ecQmaStatus.ECQmaStatusRequestData) (*ecQmaStatus.ECQmaStatusResponse, error) {
|
||||||
|
return s.ECPeQmaStatus.ECQmaStatusTest(req)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ type FeeData struct {
|
||||||
|
|
||||||
type FileData struct {
|
type FileData struct {
|
||||||
AttFileId string `json:"attFileId"` // 文件编号/附件上传后返回的编号,必填
|
AttFileId string `json:"attFileId"` // 文件编号/附件上传后返回的编号,必填
|
||||||
AttType string `json:"attType"` // 附件类型,必填
|
AttType consts.AcctTypeCode `json:"attType"` // 附件类型,必填
|
||||||
}
|
}
|
||||||
|
|
||||||
// MerchantApplyResponse 商户进件响应结构体
|
// MerchantApplyResponse 商户进件响应结构体
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue