Categorygithub.com/mryee2023/xhs-sdk
modulepackage
1.0.5
Repository: https://github.com/mryee2023/xhs-sdk.git
Documentation: pkg.go.dev

# README

小红书开放平台 GO SDK

Go语言实现小红书开放平台sdk,使用简单,扩展灵活

平台链接

安装命令

go get github.com/zsmhub/xhs-sdk

sdk调用示例

强烈建议去 ./demo 文件夹查看完整示例!

点击查看完整demo

推送消息调用示例

e := echo.New()

e.GET("/message/auth", func(c echo.Context) error {
    // 打印消息推送请求体,便于调试
    // requestBody, _ := ioutil.ReadAll(c.Request().Body)
    // fmt.Printf("xhs auth : uri=%s, req=%s\n", c.Request().RequestURI, string(requestBody))

    code := c.Param("code")
    state := c.Param("state")
    fmt.Printf("code=%s, state=%s\n", code, state)

    return c.JSON(http.StatusOK, message.MessageResp{
        Success:   true,
        ErrorCode: 0,
        ErrorMsg:  "",
    })
}).Name = "应用授权回调地址"

e.POST("/message/push", func(c echo.Context) error {
    // 打印消息推送请求体,便于调试
    // requestBody, _ := ioutil.ReadAll(c.Request().Body)
    // fmt.Printf("xhs push : uri=%s, req=%s\n", c.Request().RequestURI, string(requestBody))

    var req []message.Message
    _ = c.Bind(&req)
    for _, v := range req {
        vJson, _ := json.Marshal(v)
        fmt.Printf("msg=%s\n", vJson)

        // 消息data解析示例
        if v.MsgTag == (message.MsgFulfillmentStatusChange{}.MsgTag()) {
            // 方案一
            //var resp message.MsgFulfillmentStatusChange
            //if err := v.DecodeData(&resp); err != nil {
            //    fmt.Println(err)
            //    continue
            //} else {
            //    fmt.Printf("resp=%+v\n", resp)
            //}

            // 方案二
            resp, err := message.MsgFulfillmentStatusChange{}.DecodeData(v.Data)
            if err != nil {
                fmt.Println(err)
                continue
            } else {
                fmt.Printf("resp=%+v\n", resp)
            }
        }
    }

    return c.JSON(http.StatusOK, message.MessageResp{
        Success:   true,
        ErrorCode: 0,
        ErrorMsg:  "",
    })
}).Name = "应用推送回调地址"

api sdk 调用示例

func GetOAuthUrl(redirectUri, state string) {
	authUrl := xhs_sdk.NewXhsOAuthClient(AppKey, AppSecret).GetOAuthUrl(redirectUri, state)
	fmt.Printf("authUrl=%s\n", authUrl)
}

func GetAccessToken() {
	accessToken, err := xhs_sdk.NewXhsOAuthClient(AppKey, AppSecret).GetAccessToken(Code)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Printf("%+v\n", accessToken)
}

func GetExpressCompanyList() {
	var resp api.RespGetExpressCompanyList
	err := xhs_sdk.NewXhsClient(AppKey, AppSecret).SetAccessToken(AccessToken).Post(api.ReqGetExpressCompanyList{}, &resp)
	if err != nil {
		fmt.Println(err)
		return
	}
	ret, _ := json.Marshal(resp)
	fmt.Printf("%s\n", string(ret))
}

目录结构

.
├── api          调用API
├── message      推送消息
├── demo         sdk调用示例
├── constant.go  全局枚举值定义
└── sdk.go       入口文件

注意点

  1. 如果你发现了sdk中,没有某个推送消息或某个api,可自行加上,然后提交下pr
  2. 消息推送机制不健全:订单待支付状态时没有创建订单的消息推送,售后状态变更没有消息推送,需要自行用定时任务轮询小红书接口获取
  3. 由于授权码有效期为10分钟,为了避免店铺重新授权的情况,我们需要用定时任务定时刷新 access_token,保证不过期

推荐开源项目

# Packages

No description provided by the author
No description provided by the author
No description provided by the author

# Functions

业务接口调用客户端.
授权接口调用客户端,如获取AccessToken.

# Constants

换货.
未发货仅退款.
仅退款(new).
仅退款(old),理论上不会有3出现.
退货退款.
取消.
换货转退款.
关闭.
完成.
商家收货拒绝.
平台介入中.
拒绝.
包裹商家已发货,等待用户确认收货。不传默认全部.
待审核.
待用户寄回.
待收货.
包裹商家已确认收货,等待商家发货.
待审核.
快递已签收.
收货异常.
单个查看订单明文.
批量解密打单.
批量解密后面向三方的数据下发.
其他场景.
三方自主发货.
三方保税.
三方小包.
三方备货直邮(备货海外仓).
三方备货保税仓.
售后关闭.
售后完成(含取消).
售后处理中.
无售后.
平台介入中.
售后拒绝.
取消处理中.
未申请取消.
已取消.
清关中.
已关闭.
换货申请中.
已完成.
已支付处理中.
部分发货.
待收货.
待发货.
已下单待付款.
创建时间 限制 end-start<=24h.
更新时间 限制 end-start<=30min 倒序拉取 最后一页到第一页.
延迟发货.
换货补发.
全款预售.
普通.
定金预售.
商家已开工单.
仓库质检假货.
已退款,未收货.
仓库质检异常.
未收到货.
退货数量不符.
退货商品不符.
退货质检异常.
其他.
收货地异常.
寄回包裹物流超时.
仓库反向创建退货.
快递轨迹异常.
拒收退仓超时.
退款金额超限.
收货地不一致.