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。
|
|
|
|
|
|
|
|
|
|
|
|
示例如下:
|
|
|
|
|
|
```go
|
|
|
|
|
|
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
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
```
|