diff --git a/consts/url.go b/consts/url.go index a2bc21f..1bf3921 100644 --- a/consts/url.go +++ b/consts/url.go @@ -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地址 diff --git a/lklsdk/merchant/in_net/ec/apply/api.go b/lklsdk/merchant/in_net/ec/apply/api.go index 0727099..9e437ec 100644 --- a/lklsdk/merchant/in_net/ec/apply/api.go +++ b/lklsdk/merchant/in_net/ec/apply/api.go @@ -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{ diff --git a/lklsdk/merchant/in_net/ec/applymanual/api.go b/lklsdk/merchant/in_net/ec/applymanual/api.go index 7b3cd38..ecde059 100644 --- a/lklsdk/merchant/in_net/ec/applymanual/api.go +++ b/lklsdk/merchant/in_net/ec/applymanual/api.go @@ -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{ diff --git a/lklsdk/merchant/in_net/ec/applymanual/request.go b/lklsdk/merchant/in_net/ec/applymanual/request.go index 04c91be..3410fd0 100644 --- a/lklsdk/merchant/in_net/ec/applymanual/request.go +++ b/lklsdk/merchant/in_net/ec/applymanual/request.go @@ -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 diff --git a/lklsdk/merchant/in_net/ec/download/api.go b/lklsdk/merchant/in_net/ec/download/api.go index f5cb831..720f557 100644 --- a/lklsdk/merchant/in_net/ec/download/api.go +++ b/lklsdk/merchant/in_net/ec/download/api.go @@ -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{ diff --git a/lklsdk/merchant/in_net/ec/qmastatus/api.go b/lklsdk/merchant/in_net/ec/qmastatus/api.go index 5a8b9ef..49745e3 100644 --- a/lklsdk/merchant/in_net/ec/qmastatus/api.go +++ b/lklsdk/merchant/in_net/ec/qmastatus/api.go @@ -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{ @@ -36,4 +38,4 @@ func (q *QmaStatus) ECQmaStatusTest(req *ECQmaStatusRequestData) (*ECQmaStatusRe Version: "1.0", } return q.Client.DoRequest(consts.BASE_TEST_URL+consts.LKL_EC_QMA_STATUS, request) -} \ No newline at end of file +} diff --git a/lklsdk/merchant/in_net/ec/querystatus/api.go b/lklsdk/merchant/in_net/ec/querystatus/api.go index 93bbd0e..42fd684 100644 --- a/lklsdk/merchant/in_net/ec/querystatus/api.go +++ b/lklsdk/merchant/in_net/ec/querystatus/api.go @@ -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{ diff --git a/lklsdk/sdk.go b/lklsdk/sdk.go index c1ce5be..bac3de4 100644 --- a/lklsdk/sdk.go +++ b/lklsdk/sdk.go @@ -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) +} diff --git a/model/merchant.go b/model/merchant.go index 7a1ed35..7d44c05 100644 --- a/model/merchant.go +++ b/model/merchant.go @@ -82,7 +82,7 @@ type FeeData struct { type FileData struct { AttFileId string `json:"attFileId"` // 文件编号/附件上传后返回的编号,必填 - AttType string `json:"attType"` // 附件类型,必填 + AttType consts.AcctTypeCode `json:"attType"` // 附件类型,必填 } // MerchantApplyResponse 商户进件响应结构体