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
|
||||
|
||||
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 (
|
||||
|
|
@ -45,6 +46,16 @@ const (
|
|||
LKL_MER_VALIDATE = "/v2/mms/openApi/verifyContractInfo"
|
||||
// LKL_RECONF_SUBMIT 拉卡拉商户进件复议提交
|
||||
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地址
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ func NewEcApply(client *common.Client[ECApplyResponse]) *Apply {
|
|||
// 提供与拉卡拉进行电子签约的第四方进行电子合同申请
|
||||
// 电子合同签约成功后不需要将其下载出来作为附件上传,只需将电子合同编号(ecNo)
|
||||
// 在“新增商户入网”接口中在(contractNo)字段中传入即可
|
||||
// https://o.lakala.com/#/home/document/detail?id=289
|
||||
func (a *Apply) ECApply(req *ECApplyRequestData) (*ECApplyResponse, error) {
|
||||
// 构建请求
|
||||
baseReq := ECApplyRequest{
|
||||
|
|
@ -35,6 +36,7 @@ func (a *Apply) ECApply(req *ECApplyRequestData) (*ECApplyResponse, error) {
|
|||
// 提供与拉卡拉进行电子签约的第四方进行电子合同申请
|
||||
// 电子合同签约成功后不需要将其下载出来作为附件上传,只需将电子合同编号(ecNo)
|
||||
// 在“新增商户入网”接口中在(contractNo)字段中传入即可
|
||||
// https://o.lakala.com/#/home/document/detail?id=289
|
||||
func (a *Apply) ECApplyTest(req *ECApplyRequestData) (*ECApplyResponse, error) {
|
||||
// 构建请求
|
||||
baseReq := ECApplyRequest{
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ func NewApplyManual(client *common.Client[ECApplyManualResponse]) *ApplyManual {
|
|||
}
|
||||
|
||||
// ECApplyManual 电子合同人工复核申请(生产环境)
|
||||
// https://o.lakala.com/#/home/document/detail?id=981
|
||||
func (a *ApplyManual) ECApplyManual(req *ECApplyManualRequestData) (*ECApplyManualResponse, error) {
|
||||
// 创建请求对象
|
||||
request := ECApplyManualRequest{
|
||||
|
|
@ -30,6 +31,7 @@ func (a *ApplyManual) ECApplyManual(req *ECApplyManualRequestData) (*ECApplyManu
|
|||
}
|
||||
|
||||
// ECApplyManualTest 电子合同人工复核申请(测试环境)
|
||||
// https://o.lakala.com/#/home/document/detail?id=981
|
||||
func (a *ApplyManual) ECApplyManualTest(req *ECApplyManualRequestData) (*ECApplyManualResponse, error) {
|
||||
// 创建请求对象
|
||||
request := ECApplyManualRequest{
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
package applymanual
|
||||
|
||||
import (
|
||||
"github.com/black1552/lkl_sdk/consts"
|
||||
)
|
||||
|
||||
// ECApplyManualRequestData 电子合同人工复核申请请求数据结构体
|
||||
type ECApplyManualRequestData struct {
|
||||
Version string `json:"version"` // 版本号,默认1.0
|
||||
|
|
@ -13,7 +17,7 @@ type ECApplyManualRequestData struct {
|
|||
|
||||
// ECFileData 附件信息结构体
|
||||
type ECFileData struct {
|
||||
AttachType string `json:"attach_type"` // 附件类型,必填,枚举值见文档
|
||||
AttachType consts.AttType `json:"attach_type"` // 附件类型,必填,枚举值见文档
|
||||
AttachName string `json:"attach_name"` // 附件名称,必填,最大32字符
|
||||
AttachExtName string `json:"attach_ext_name"` // 附件格式,必填,jpg、pdf等
|
||||
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 电子合同下载
|
||||
// 提供已完成的签约电子合同下载
|
||||
// https://o.lakala.com/#/home/document/detail?id=294
|
||||
func (d *Download) ECDownload(req *ECDownloadRequestData) (*ECDownloadResponse, error) {
|
||||
// 构建请求
|
||||
baseReq := ECDownloadRequest{
|
||||
|
|
@ -33,6 +34,7 @@ func (d *Download) ECDownload(req *ECDownloadRequestData) (*ECDownloadResponse,
|
|||
|
||||
// ECDownloadTest 电子合同下载(测试环境)
|
||||
// 提供已完成的签约电子合同下载
|
||||
// https://o.lakala.com/#/home/document/detail?id=294
|
||||
func (d *Download) ECDownloadTest(req *ECDownloadRequestData) (*ECDownloadResponse, error) {
|
||||
// 构建请求
|
||||
baseReq := ECDownloadRequest{
|
||||
|
|
|
|||
|
|
@ -16,7 +16,8 @@ func NewQmaStatus(client *common.Client[ECQmaStatusResponse]) *QmaStatus {
|
|||
return &QmaStatus{Client: client}
|
||||
}
|
||||
|
||||
// ECQmaStatus 电子合同人工复核结果查询(生产环境)
|
||||
// ECQmaStatus
|
||||
// https://o.lakala.com/#/home/document/detail?id=982
|
||||
func (q *QmaStatus) ECQmaStatus(req *ECQmaStatusRequestData) (*ECQmaStatusResponse, error) {
|
||||
// 创建请求对象
|
||||
request := ECQmaStatusRequest{
|
||||
|
|
@ -28,6 +29,7 @@ func (q *QmaStatus) ECQmaStatus(req *ECQmaStatusRequestData) (*ECQmaStatusRespon
|
|||
}
|
||||
|
||||
// ECQmaStatusTest 电子合同人工复核结果查询(测试环境)
|
||||
// https://o.lakala.com/#/home/document/detail?id=982
|
||||
func (q *QmaStatus) ECQmaStatusTest(req *ECQmaStatusRequestData) (*ECQmaStatusResponse, error) {
|
||||
// 创建请求对象
|
||||
request := ECQmaStatusRequest{
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ func NewQStatus(client *common.Client[ECQueryStatusResponse]) *QStatus {
|
|||
|
||||
// QueryStatus 电子合同查询状态
|
||||
// 提供申请过与拉卡拉电子签约用户查询电子合同签署状态
|
||||
// https://o.lakala.com/#/home/document/detail?id=293
|
||||
func (q *QStatus) QueryStatus(req *ECQueryStatusRequestData) (*ECQueryStatusResponse, error) {
|
||||
// 构建请求
|
||||
baseReq := ECQueryStatusRequest{
|
||||
|
|
@ -33,6 +34,7 @@ func (q *QStatus) QueryStatus(req *ECQueryStatusRequestData) (*ECQueryStatusResp
|
|||
|
||||
// QueryStatusTest 电子合同查询状态(测试环境)
|
||||
// 提供申请过与拉卡拉电子签约用户查询电子合同签署状态
|
||||
// https://o.lakala.com/#/home/document/detail?id=293
|
||||
func (q *QStatus) QueryStatusTest(req *ECQueryStatusRequestData) (*ECQueryStatusResponse, error) {
|
||||
// 构建请求
|
||||
baseReq := ECQueryStatusRequest{
|
||||
|
|
|
|||
|
|
@ -4,31 +4,46 @@ import (
|
|||
"context"
|
||||
|
||||
"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"
|
||||
)
|
||||
|
||||
// SDK 拉卡拉SDK主入口
|
||||
type SDK[T any] struct {
|
||||
Client *common.Client[T]
|
||||
SplitLedger *SplitLedgerService[T]
|
||||
Trade *TradeService[T]
|
||||
Account *AccountService[T]
|
||||
UploadFile *UploadFileService[T]
|
||||
MergePre *MergePreService[T]
|
||||
Merchant *MerService[T]
|
||||
Client *common.Client[T]
|
||||
SplitLedger *SplitLedgerService[T]
|
||||
Trade *TradeService[T]
|
||||
Account *AccountService[T]
|
||||
UploadFile *UploadFileService[T]
|
||||
MergePre *MergePreService[T]
|
||||
Merchant *MerService[T]
|
||||
EC *ecApply.Apply
|
||||
ECQuery *ecQuery.QStatus
|
||||
ECFileDownload *ecDownload.Download
|
||||
ECPeApplyManual *ecApplyManual.ApplyManual
|
||||
ECPeQmaStatus *ecQmaStatus.QmaStatus
|
||||
}
|
||||
|
||||
// NewSDK 创建拉卡拉SDK实例
|
||||
func NewSDK[T any](ctx context.Context, cfgJson string) *SDK[T] {
|
||||
client := common.NewClient[T](ctx, cfgJson)
|
||||
return &SDK[T]{
|
||||
Client: client,
|
||||
SplitLedger: NewSplitLedgerService(client),
|
||||
Trade: NewTradeService(client),
|
||||
Account: NewAccountService(client),
|
||||
UploadFile: NewUploadFileService(client),
|
||||
MergePre: NewMergePreService(client),
|
||||
Merchant: NewMerService(client),
|
||||
Client: client,
|
||||
SplitLedger: NewSplitLedgerService(client),
|
||||
Trade: NewTradeService(client),
|
||||
Account: NewAccountService(client),
|
||||
UploadFile: NewUploadFileService(client),
|
||||
MergePre: NewMergePreService(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) {
|
||||
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 {
|
||||
AttFileId string `json:"attFileId"` // 文件编号/附件上传后返回的编号,必填
|
||||
AttType string `json:"attType"` // 附件类型,必填
|
||||
AttType consts.AcctTypeCode `json:"attType"` // 附件类型,必填
|
||||
}
|
||||
|
||||
// MerchantApplyResponse 商户进件响应结构体
|
||||
|
|
|
|||
Loading…
Reference in New Issue