185 lines
6.6 KiB
Go
185 lines
6.6 KiB
Go
package lklsdk
|
||
|
||
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]
|
||
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),
|
||
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)),
|
||
}
|
||
}
|
||
|
||
// 以下为便捷方法,直接通过SDK调用各服务的主要功能
|
||
|
||
// ReconsiderSubmit 商户进件复议提交
|
||
func (s *SDK[T]) ReconsiderSubmit(req *model.ReConfSubmitRequestData) (*T, error) {
|
||
return s.Merchant.ReconsiderSubmit(req)
|
||
}
|
||
|
||
// QueryMerchant 商户进件信息查询
|
||
func (s *SDK[T]) QueryMerchant(req *model.QueryMerRequestData) (*T, error) {
|
||
return s.Merchant.QueryMer(req)
|
||
}
|
||
|
||
// MerValidate 商户进件信息校验
|
||
func (s *SDK[T]) MerValidate(req *model.MerValidateRequestData) (*T, error) {
|
||
return s.Merchant.MerValidate(req)
|
||
}
|
||
|
||
// AddMer 商户进件
|
||
func (s *SDK[T]) AddMer(req *model.MerchantApplyReqData) (*T, error) {
|
||
return s.Merchant.AddMer(req)
|
||
}
|
||
|
||
// MergePreOrder 主扫合单交易
|
||
func (s *SDK[T]) MergePreOrder(req *model.MergePreorderReqData) (*T, error) {
|
||
return s.MergePre.PreOrder(req)
|
||
}
|
||
|
||
// Refound 退款
|
||
func (s *SDK[T]) Refound(req *model.RefundReqData) (*T, error) {
|
||
return s.Trade.Refound(req)
|
||
}
|
||
|
||
// ApplyLedgerMer 商户分账业务开通申请
|
||
func (s *SDK[T]) ApplyLedgerMer(req *model.ApplyLedgerMerReqData) (*T, error) {
|
||
return s.SplitLedger.ApplyLedgerMer(req)
|
||
}
|
||
|
||
// QueryLedgerMer 商户分账信息查询
|
||
func (s *SDK[T]) QueryLedgerMer(req *model.QueryLedgerMerReqData) (*T, error) {
|
||
return s.SplitLedger.QueryLedgerMer(req)
|
||
}
|
||
|
||
// ApplyLedgerReceiver 分账接收方创建申请
|
||
func (s *SDK[T]) ApplyLedgerReceiver(req *model.ApplyLedgerReceiverReqData) (*T, error) {
|
||
return s.SplitLedger.ApplyLedgerReceiver(req)
|
||
}
|
||
|
||
// ApplyBind 分账关系绑定申请
|
||
func (s *SDK[T]) ApplyBind(req *model.ApplyBindReqData) (*T, error) {
|
||
return s.SplitLedger.ApplyBind(req)
|
||
}
|
||
|
||
// QuerySplitBalance 可分账金额查询
|
||
func (s *SDK[T]) QuerySplitBalance(req *model.SplitBalanceReqData) (*T, error) {
|
||
return s.SplitLedger.QuerySplitBalance(req)
|
||
}
|
||
|
||
// OrderSplitLedger 订单分账
|
||
func (s *SDK[T]) OrderSplitLedger(req *model.OrderSplitLedgerReqData) (*T, error) {
|
||
return s.SplitLedger.OrderSplitLedger(req)
|
||
}
|
||
|
||
// TradeQuery 交易查询
|
||
func (s *SDK[T]) TradeQuery(req *model.TradeQueryReqData) (*T, error) {
|
||
return s.Trade.TradeQuery(req)
|
||
}
|
||
|
||
// PreOrder 聚合预下单
|
||
func (s *SDK[T]) PreOrder(req *model.PreorderReqData) (*T, error) {
|
||
return s.Trade.PreOrder(req)
|
||
}
|
||
|
||
// BalanceQuery 账户余额查询
|
||
func (s *SDK[T]) BalanceQuery(req *model.BalanceQueryReqData) (*T, error) {
|
||
return s.Account.BalanceQuery(req)
|
||
}
|
||
|
||
func (s *SDK[T]) UploadFileQuery(req *model.UploadFileReqData) (*T, error) {
|
||
return s.UploadFile.UploadFileQuery(req)
|
||
}
|
||
|
||
// Withdraw 账户提现
|
||
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)
|
||
}
|