# 第三方平台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。 示例如下: ```go package main import ( "context" "github.com/zeromicro/go-zero/core/logx" sdk "repository.lenntc.com/lenntc/third-platform-sdk" meituanapi "repository.lenntc.com/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 } ```