在官方SDK的基础上,集成了自己整合的消息推送SDK,方便开发者更快速的对接。
当前项目依赖的官方SDK版本号:doudian-sdk-golang-1.1.0-20230221172709,后续官方SDK版本升级了,我们可直接下载官方最新SDK对本项目进行覆盖升级。
.
├── LICENSE
├── README.md
├── api # 纯官方SDK代码,可覆盖升级
├── core # 纯官方SDK代码,可覆盖升级
├── errors # 纯官方SDK代码,可覆盖升级
├── example.go # 纯官方SDK代码,可覆盖升级
├── example_test.go # 纯官方SDK代码,可覆盖升级
├── go.mod # 纯官方SDK代码,可覆盖升级
├── message # 自己整合的消息推送SDK,不可删除,缺失的消息可自行补上
├── spi # 纯官方SDK代码,可覆盖升级
└── utils # 纯官方SDK代码,可覆盖升级
本SDK不支持 go get 方式,仅支持本地导入的方式,安装步骤如下:
- 下载SDK源代码
git clone https://github.com/zsmhub/doudian-sdk.git
- 将源码文件夹拷贝到自己的项目工程中,路径任意,例如lib文件夹下:
- 打开自己项目工程的go.mod文件:
在required模块添加「doudian.com/open/sdk_golang v1.0.0」
在replace模块添加「doudian.com/open/sdk_golang => ./lib/doudian-sdk」
- 执行go build命令编译,没有报错说明导入sdk包成功
-
自用型应用获取Access Token
//设置appKey和appSecret,全局设置一次 doudian_sdk.GlobalConfig.AppKey = "xxxxxxxx" doudian_sdk.GlobalConfig.AppSecret = "xxxxxxxxxx" accessToken, err := doudian_sdk.BuildAccessToken(&doudian_sdk.BuildAccessTokenParam{ShopId: 4463798})
-
工具型应用获取Access Token
//设置appKey和appSecret,全局设置一次 doudian_sdk.GlobalConfig.AppKey = "xxxxxxxx" doudian_sdk.GlobalConfig.AppSecret = "xxxxxxxxxx" accessToken, err := doudian_sdk.BuildAccessToken(&doudian_sdk.BuildAccessTokenParam{Code: "xxxxxxxx"})
-
应用自己管理Access Token
//设置appKey和appSecret,全局设置一次 doudian_sdk.GlobalConfig.AppKey = "xxxxxxxx" doudian_sdk.GlobalConfig.AppSecret = "xxxxxxxxxx" accessToken, err := doudian_sdk.ParseAccessToken("xxxxxxxxxx")
//设置appKey和appSecret,全局设置一次
doudian_sdk.GlobalConfig.AppKey = "xxxxxxxx"
doudian_sdk.GlobalConfig.AppSecret = "xxxxxxxxxx"
//创建Access Token
accessToken, err := doudian_sdk.BuildAccessToken(&doudian_sdk.BuildAccessTokenParam{ShopId: 4463798})
if err != nil {
panic(err)
}
//构建Open Api请求参数
request := address_list_request.New()
param := request.GetParams()
param.PageNo = 1
param.PageSize = 10
param.ShopId = 123456
//调用Open Api
response, err := request.Execute(accessToken)
import (
doudian_message "doudian.com/open/sdk_golang/message"
"encoding/json"
"fmt"
)
func init() {
doudian_message.GlobalConfig.AppKey = "xxx"
doudian_message.GlobalConfig.AppSecret = "xxx"
RouterNoAuth.POST("/doudian/callback", HandleDoudianPostRequestController).Name = "接收抖店的回调事件"
}
func HandleDoudianPostRequestController(c echo.Context) error {
if err := HandleDoudianPostRequestRepo(c); err != nil {
return c.JSON(http.StatusOK, doudian_message.FailResponse)
}
return c.JSON(http.StatusOK, doudian_message.SuccessResponse)
}
func HandleDoudianPostRequestRepo(c echo.Context) error {
msgs, err := doudian_message.GetMessage(c.Request())
if err != nil {
return err
}
for _, msg := range msgs {
if msg.Error != nil {
fmt.Println(msg.Error)
continue
}
if msg.Message.Tag == new(doudian_message.TradeCreate).Tag() {
msgData, ok := msg.Message.DataStruct.(doudian_message.TradeCreate)
if !ok {
fmt.Println("消息结构体解析异常")
continue
}
fmt.Println("回调的父订单号:", msgData.PId)
}
}
}