Go to file
2024-05-04 23:55:35 +08:00
client 添加eleme平台的api对接 2024-05-04 16:57:40 +08:00
platform eleme union添加推广订单明细报表api 2024-05-04 23:55:35 +08:00
sdk/topsdk 删除topsdk中的go.mod 2024-05-04 22:05:47 +08:00
util 添加eleme平台的api对接 2024-05-04 16:57:40 +08:00
.gitignore meituan-union平台api对接完成 2024-04-30 17:57:27 +08:00
go.mod meituan-union平台api对接完成 2024-05-01 14:05:18 +08:00
index.go 添加eleme平台的api对接 2024-05-04 16:57:40 +08:00
README.md 添加eleme平台的api对接 2024-05-04 16:57:40 +08:00

第三方平台SDK

本sdk主要对接各个第三方平台的api如美团、饿了么。。。, 内部的其他项目服务可以直接通过本sdk调用相应的第三方平台的api而不用关心第三方平台的api调用细节。 本sdk只是对第三方api调用的封装不涉及业务逻辑具体的业务逻辑需要在调用方实现。

注意: 相同的业务接口如获取订单信息不同第三方平台的api返回的数据结构会有所不同需要在业务服务中做不同平台数据的映射本sdk不做数据映射。

1. 项目结构

third-party-sdk
├── README.md
├── client
│     └── http_client.go // http请求的client
├── platform // 第三方平台
│     ├── eleme-union // 饿了么联盟
│     ├── meituan-csr // 美团分销联盟
│     ├── meituan-union // 美团联盟
│             ├── api.go // 美团联盟api
│             ├── client.go // 美团联盟client
│             ├── consts.go // 常量
│             └── types.go // 结构体定义
├── sdk // 第三方平台的sdk包                            
├── util // 工具包


2. 使用

对接的不同第三方平台在platform目录下不同的文件目录对应不同的平台使用时只需要调用index.go文件中不同平台api的New...()方法传入不同的AuthConf参数即可调用相应的api。

示例如下:

package main
import (
    "context"
	"github.com/zeromicro/go-zero/core/logx"
    sdk "gitee.com/chengdu-lenntc/third-platform-sdk"
	meituanapi "gitee.com/chengdu-lenntc/third-platform-sdk/platform/meituan-union"
)

type PromotionConf struct {
	AppKey    string
	AppSecret string
	Ext1      string
	Ext2      string
	Ext3      string
	Ext4      string
}

// 美团联盟
func meituanUnion(ctx context.Context, c *PromotionConf) error {
	// meituan union 的api client
	client := sdk.NewMeituanUnionApi(logx.WithContext(ctx), meituanapi.AuthConfig{
		SignKey: c.Ext1,
		NotifyKey: c.Ext2,
	})
	params := meituanapi.GenerateLinkRequest{
		// ...
	}
	url, err := client.GetLink(params)
	if err != nil {
        logx.Errorf("get meituan union link failed: %v", err)
        return nil
    }
	logx.Infof("get meituan union link success: %v", url)
	return nil
}