From a60d4cd2d3df5eae9f67f60792d98159909954d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 11 Oct 2022 10:34:01 +0800 Subject: [PATCH 1/9] 1 --- .../request/product_editV2_request.go | 7 + .../request/product_editV2_request.go | 239 ++++++++++++++++++ .../response/product_editV2_response.go | 10 + platformapi/tiktok_shop/tiktok_api/sku.go | 16 ++ .../tiktok_shop/tiktok_api/sku_test.go | 19 ++ 5 files changed, 291 insertions(+) create mode 100644 platformapi/tiktok_shop/sdk-golang/api/product_editV2_commit/request/product_editV2_request.go create mode 100644 platformapi/tiktok_shop/sdk-golang/api/product_editV2_commit/response/product_editV2_response.go diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_editV2/request/product_editV2_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_editV2/request/product_editV2_request.go index 0f7b70c7..c765bef8 100644 --- a/platformapi/tiktok_shop/sdk-golang/api/product_editV2/request/product_editV2_request.go +++ b/platformapi/tiktok_shop/sdk-golang/api/product_editV2/request/product_editV2_request.go @@ -96,6 +96,7 @@ type DelayRule struct { // 特殊日期延迟发货时间下单结束时间,时间戳,单位秒 EndTime int64 `json:"end_time"` } + type ProductEditV2Param struct { // 商品ID ProductId int64 `json:"product_id"` @@ -228,3 +229,9 @@ type ProductEditV2Param struct { // 限售模板ID SaleLimitId int64 `json:"sale_limit_id"` } + +type ProductEditV2Param2 struct { + // 商品ID + ProductId int64 `json:"product_id"` + Commit bool `json:"commit"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_editV2_commit/request/product_editV2_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_editV2_commit/request/product_editV2_request.go new file mode 100644 index 00000000..fcbe35b1 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_editV2_commit/request/product_editV2_request.go @@ -0,0 +1,239 @@ +package product_editV2_commit_request + +import ( + "encoding/json" + product_editV2_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_editV2/response" + doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" +) + +type ProductEditV2Request struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductEditV2Param2 +} + +func (c *ProductEditV2Request) GetUrlPath() string { + return "/product/editV2" +} + +func New() *ProductEditV2Request { + request := &ProductEditV2Request{ + Param: &ProductEditV2Param2{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductEditV2Request) Execute(accessToken *doudian_sdk.AccessToken) (*product_editV2_response.ProductEditV2Response, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_editV2_response.ProductEditV2Response{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductEditV2Request) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductEditV2Request) GetParams() *ProductEditV2Param2 { + return c.Param +} + +type ProductEditV2Param2 struct { + // 商品ID + ProductId int64 `json:"product_id"` + Commit bool `json:"commit"` +} + +// +// +//type QualityAttachmentsItem struct { +// // 1-图片,2-pdf +// MediaType int64 `json:"media_type"` +// // 凭证url +// Url string `json:"url"` +//} +//type QualityListItem struct { +// // 资质key +// QualityKey string `json:"quality_key"` +// // 资质名称 +// QualityName string `json:"quality_name"` +// // 资质 +// QualityAttachments []QualityAttachmentsItem `json:"quality_attachments"` +//} +//type PoiResource struct { +// // 有效时间段,从领取日开始计算,优先级高于ValidStart-ValidEnd +// ValidDays int64 `json:"valid_days"` +// // 卡券有效开始时间,秒单位时间戳 +// ValidStart int64 `json:"valid_start"` +// // 卡券有效截止时间,秒单位时间戳 +// ValidEnd int64 `json:"valid_end"` +// // 客服电话 +// ServiceNum string `json:"service_num"` +// // 领取须知 +// Notification string `json:"notification"` +// // 平台产生券码: 1 ; 合作方api实时传入的券码: 4 +// CodeType int64 `json:"code_type"` +// // 券码总量,0/-1表示不限制,平台券时须\u003e0 +// Count int64 `json:"count"` +// // 0-不支持二次兑换,1-支持二次兑换 +// CouponSecondExchange int64 `json:"couponSecondExchange"` +// // 可核销总次数 +// TotalCanUseCount int32 `json:"total_can_use_count"` +// // 兑换链接 +// Link string `json:"link"` +// // 券码使用条件 +// Condition string `json:"condition"` +// // 数组当前只支持一个元素且只可为 1或2,其中 1 表示随时退+过期自动退,2 表示不支持退 +// CouponReturnMethods []int64 `json:"coupon_return_methods"` +//} +//type DelayRule struct { +// // 是否开启特殊日期延迟发货 +// Enable bool `json:"enable"` +// // 1 时间点;2 时间范围 +// ConfigType int32 `json:"config_type"` +// // 特殊日期延迟发货时间最晚发货时间,时间戳,单位秒:当config_type=1时,传时间戳,代表最晚x发货;当config_type=2时,传天数,代表延迟x天发货 +// ConfigValue int64 `json:"config_value"` +// // 特殊日期延迟发货时间下单开始时间,时间戳,单位秒 +// StartTime int64 `json:"start_time"` +// // 特殊日期延迟发货时间下单结束时间,时间戳,单位秒 +// EndTime int64 `json:"end_time"` +//} +// +//type ProductEditV2Param struct { +// // 商品ID +// ProductId int64 `json:"product_id"` +// // 0-普通,3-虚拟,6玉石闪购,7云闪购 +// ProductType int64 `json:"product_type"` +// // 叶子类目ID通过/shop/getShopCategory接口获取 +// CategoryLeafId int64 `json:"category_leaf_id"` +// // 属性名称|属性值 之间用|分隔, 多组之间用^分开 +// ProductFormat string `json:"product_format"` +// // 商品名称,最多60个字符(30个汉字),不能含emoj表情 +// Name string `json:"name"` +// // 商家推荐语,不能含emoj表情 +// RecommendRemark string `json:"recommend_remark"` +// // 商品轮播图,多张图片用 \"|\" 分开,第一张图为主图,最多5张,至少600x600,大小不超过1M 注:\"pic\"、\"description\"、\"spec_pic\"这三个字段里的传入的图片数量总和,不得超过50张。 +// Pic string `json:"pic"` +// // 商品轮播图,多张图片用 \"|\" 分开,第一张图为主图,最多5张,至少600x600,大小不超过1M 注:\"pic\"、\"description\"、\"spec_pic\"这三个字段里的传入的图片数量总和,不得超过50张。 +// Description string `json:"description"` +// // 已废弃,支付方式,0货到付款 1在线支付,2,货到付款+在线支付 +// PayType int64 `json:"pay_type"` +// // 海南免税生效。 0:离岛免税、1:邮寄、2:离岛自提+邮寄 +// DeliveryMethod int32 `json:"delivery_method"` +// // 海南免税:海关限购分类编码 +// CdfCategory string `json:"cdf_category"` +// // 1 减库存类型:1-拍下减库存 2-付款减库存 +// ReduceType int64 `json:"reduce_type"` +// // 同店商品推荐:为空表示使用系统推荐;多个product_id使用“|”分开 +// AssocIds string `json:"assoc_ids"` +// // 运费模板id,传0表示包邮,通过/freightTemplate/list接口获取 +// FreightId int64 `json:"freight_id"` +// // 重量 +// Weight float64 `json:"weight"` +// // 重量单位,0-kg, 1-g +// WeightUnit int64 `json:"weight_unit"` +// // delivery_delay_day: 承诺发货时间,单位是天,不传则默认为2天。现货发货(presell_type=0)和阶梯发货模式(presell_type=2)时必填,支持传入9999 、1、 2 (分别表示当日发、次日发、48小时发),具体支持传入的参数范围/product/getProductUpdateRule +// DeliveryDelayDay int64 `json:"delivery_delay_day"` +// // 发货模式,0-现货发货,1-预售发货,2-阶梯发货,默认0 +// PresellType int64 `json:"presell_type"` +// // 全款预售模式时的发货时间/阶梯模式下阶梯发货时间,具体支持传入的参数范围/product/getProductUpdateRule +// PresellDelay int64 `json:"presell_delay"` +// // 预售结束时间,格式2020-02-21 18:54:27,最多支持设置距离当前30天 +// PresellEndTime string `json:"presell_end_time"` +// // 是否支持7天无理由,0不支持,1支持,2支持(拆封后不支持) +// Supply7dayReturn int64 `json:"supply_7day_return"` +// // 客服电话号码 +// Mobile string `json:"mobile"` +// // false仅保存,true保存+提审 +// Commit bool `json:"commit"` +// // 品牌id (请求店铺授权品牌接口获取) (效果即为商品详情页面中的品牌字段) +// BrandId int64 `json:"brand_id"` +// // 商家可见备注 +// Remark string `json:"remark"` +// // 外部product_id +// OutProductId int64 `json:"out_product_id"` +// // 资质信息,可通过/product/qualificationConfig获取 +// QualityList []QualityListItem `json:"quality_list"` +// // 如果不填,则规格名为各级规格名用 \"-\" 自动生成 +// SpecName string `json:"spec_name"` +// // 店铺通用规格,能被同类商品通用。多规格用^分隔,规格与规格值用|分隔,多个规格值用,分隔。如果创建或编辑现货+预售商品或新预售商品时,须包含发货时效,如:颜色|黑色,白色,黄色^尺码|S,M,L^发货时效|5天内发货,15天内发货 +// Specs string `json:"specs"` +// // sku详情,数量应该等于规格1规格2规格3,sku数量和规格组合数必须一致 sku不可售时,库存可设置为0。 delivery_infos为SKU物流信息,info_value为字符串类型(示例:"12"),info_type填weight,info_unit支持mg,g,kg +// SpecPrices string `json:"spec_prices"` +// // 如颜色-尺寸, 颜色就是主规格, 颜色如黑,白,黄,它们图片url以逗号分隔 注:\"pic\"、\"description\"、\"spec_pic\"这三个字段里的传入的图片数量总和,不得超过50张。 +// SpecPic string `json:"spec_pic"` +// // 每个用户每次下单限购件数 +// MaximumPerOrder int64 `json:"maximum_per_order"` +// // 每个用户累计限购件数 +// LimitPerBuyer int64 `json:"limit_per_buyer"` +// // 每个用户每次下单至少购买的件数 +// MinimumPerOrder int64 `json:"minimum_per_order"` +// // 通过/product/getCatePropertyV2获取 格式:{"property_id":[{"value":value,"name":"property_name","diy_type":0}]}, name的类型是string,value和diy_type的类型是number +// ProductFormatNew string `json:"product_format_new"` +// // spu id +// SpuId int64 `json:"spu_id"` +// // 可预约发货天数 +// AppointDeliveryDay int64 `json:"appoint_delivery_day"` +// // third_url +// ThirdUrl string `json:"third_url"` +// // extra +// Extra string `json:"extra"` +// // src +// Src string `json:"src"` +// // 外部product id +// OuterProductId string `json:"outer_product_id"` +// // standard_brand_id,通过/brand/list获取,无品牌id则传596120136 +// StandardBrandId int64 `json:"standard_brand_id"` +// // 卡券类型需要传true +// NeedCheckOut bool `json:"need_check_out"` +// // 卡券信息 +// PoiResource *PoiResource `json:"poi_resource"` +// // 使用qualityList覆盖当前商品资质,qualityList传空代表清空 +// ForceUseQualityList bool `json:"force_use_quality_list"` +// // 汽车Vin码 +// CarVinCode string `json:"car_vin_code"` +// // 0:全款预售,1:sku预售,2:现货+预售 ,3:新预售 +// PresellConfigLevel int64 `json:"presell_config_level"` +// // 充值模式 +// NeedRechargeMode bool `json:"need_recharge_mode"` +// // 多账号模板 +// AccountTemplateId string `json:"account_template_id"` +// // 全款预售和sku预售时传递,其他不传: 0 预售结束后发货 1支付完成后发货 +// PresellDeliveryType int64 `json:"presell_delivery_type"` +// // 白底图url(仅素材中心url有效) +// WhiteBackGroundPicUrl string `json:"white_back_ground_pic_url"` +// // 3:4长图url(仅素材中心url有效) +// LongPicUrl string `json:"long_pic_url"` +// // 售后服务参数,key:value格式 supply_day_return_selector(7天无理由选项):N天-政策代号,N只支持7和15 supply_red_ass_return(红屁屁无忧):0不支持,1支持 supply_allergy_return(过敏无忧,仅跨境可选):0不支持,1支持 damaged_order_return(坏损包退):0不支持,1支持 support_allergy_returnV2(过敏包退,境内可选):0不支持,1支持 +// AfterSaleService map[string]string `json:"after_sale_service"` +// // 售卖方式;0:全渠道手售卖,1:仅指定直播间售卖 +// SellChannel []int64 `json:"sell_channel"` +// // 审核通过后上架售卖时间配置:0-立即上架售卖 1-放入仓库 +// StartSaleType int64 `json:"start_sale_type"` +// // 特殊日期延迟发货规则 +// DelayRule *DelayRule `json:"delay_rule"` +// // 主图视频ID,可以先通过https://op.jinritemai.com/docs/api-docs/69/1617接口上传视频,获取审核通过的视频素材ID进行传入 +// MaterialVideoId string `json:"material_video_id"` +// // 提取方式新字段,推荐使用。"0": 普通商品-使用物流发货, "1": 虚拟商品-无需物流与电子交易凭证, "2": 虚拟商品-使用电子交易凭证, "3": 虚拟商品-充值直连 +// PickupMethod string `json:"pickup_method"` +// // 尺码模板ID +// SizeInfoTemplateId int64 `json:"size_info_template_id"` +// // 外部商品url +// SubstituteGoodsUrl string `json:"substitute_goods_url"` +// // 销售渠道类型,可选onlineOnly(纯电商,仅在线上售卖)或sameAsOffline(专柜同款,线上线下都有售卖),云零售商家(https://fxg.jinritemai.com/ffa/merchant-growth/cloud-retail)可以设置 +// SaleChannelType string `json:"sale_channel_type"` +// // 通过/product/getRecommendName接口推荐的商品标题前缀(注意系统根据类目属性生成前缀字符串时,末尾有一个空格) +// NamePrefix string `json:"name_prefix"` +// // 门店ID +// StoreId int64 `json:"store_id"` +// // 主商品ID +// MainProductId int64 `json:"main_product_id"` +// // 限售模板ID +// SaleLimitId int64 `json:"sale_limit_id"` +//} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_editV2_commit/response/product_editV2_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_editV2_commit/response/product_editV2_response.go new file mode 100644 index 00000000..49e2d976 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_editV2_commit/response/product_editV2_response.go @@ -0,0 +1,10 @@ +package product_editV2_commit_request + +import doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" + +type ProductEditV2Response struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductEditV2Data `json:"data"` +} +type ProductEditV2Data struct { +} diff --git a/platformapi/tiktok_shop/tiktok_api/sku.go b/platformapi/tiktok_shop/tiktok_api/sku.go index 2ee2f180..f8b254ed 100644 --- a/platformapi/tiktok_shop/tiktok_api/sku.go +++ b/platformapi/tiktok_shop/tiktok_api/sku.go @@ -9,6 +9,7 @@ import ( product_detail_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_detail/request" product_detail_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_detail/response" product_editV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_editV2/request" + product_editV2_commit_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_editV2_commit/request" product_getCatePropertyV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_getCatePropertyV2/request" product_getCatePropertyV2_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_getCatePropertyV2/response" product_listV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_listV2/request" @@ -147,6 +148,21 @@ func (a *API) EditStoreCommodity(sku *product_editV2_request.ProductEditV2Param) return nil } +// EditStoreCommodityCommit 上架商品 +func (a *API) EditStoreCommodityCommit(sku *product_editV2_commit_request.ProductEditV2Param2) error { + request := product_editV2_commit_request.New() + request.Param = sku + + result, err := request.Execute(a.accessTokenObj) + if err != nil { + return err + } + if result.Code != RequestSuccessCode { + return errors.New(result.SubMsg) + } + return nil +} + // DeleteStoreCommodity 删除商品 func (a *API) DeleteStoreCommodity(productId int64) error { request := product_del_request.New() diff --git a/platformapi/tiktok_shop/tiktok_api/sku_test.go b/platformapi/tiktok_shop/tiktok_api/sku_test.go index b9323fda..7430fc19 100644 --- a/platformapi/tiktok_shop/tiktok_api/sku_test.go +++ b/platformapi/tiktok_shop/tiktok_api/sku_test.go @@ -6,6 +6,7 @@ import ( "git.rosy.net.cn/baseapi" product_addV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_addV2/request" product_editV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_editV2/request" + product_editV2_commit_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_editV2_commit/request" sku_editPrice_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/sku_editPrice/request" sku_syncStock_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/sku_syncStock/request" "git.rosy.net.cn/baseapi/utils" @@ -257,6 +258,7 @@ func TestEiduPrice(t *testing.T) { fmt.Println(err) } +// s上架1 func TestEditStoreCommodity(t *testing.T) { token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) @@ -265,3 +267,20 @@ func TestEditStoreCommodity(t *testing.T) { Commit: true, }) } + +// 上架2 +func TestEditStoreCommodity2(t *testing.T) { + token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` + a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) + a.EditStoreCommodityCommit(&product_editV2_commit_request.ProductEditV2Param2{ + ProductId: 3576377564144516403, + Commit: true, + }) +} + +// 下架 +func TestProductSetOffline(t *testing.T) { + token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` + a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) + a.ProductSetOffline(3576377564144516403) +} From 663aed9ab67543c118ec6511b66dd5622ee7739c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 11 Oct 2022 16:31:59 +0800 Subject: [PATCH 2/9] 1 --- .../request/product_detail_request.go | 54 +++ .../response/product_detail_response.go | 320 ++++++++++++++++++ platformapi/tiktok_shop/tiktok_api/order.go | 53 ++- .../tiktok_shop/tiktok_api/order_utils.go | 4 +- platformapi/tiktok_shop/tiktok_api/sku.go | 22 +- .../tiktok_shop/tiktok_api/sku_test.go | 11 + 6 files changed, 432 insertions(+), 32 deletions(-) create mode 100644 platformapi/tiktok_shop/sdk-golang/api/product_detail_out_productId/request/product_detail_request.go create mode 100644 platformapi/tiktok_shop/sdk-golang/api/product_detail_out_productId/response/product_detail_response.go diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_detail_out_productId/request/product_detail_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_detail_out_productId/request/product_detail_request.go new file mode 100644 index 00000000..1ffeb00f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_detail_out_productId/request/product_detail_request.go @@ -0,0 +1,54 @@ +package product_detail_request_out + +import ( + "encoding/json" + product_detail_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_detail/response" + doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" +) + +type ProductDetailOutRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductDetailParamOutProductId +} + +func (c *ProductDetailOutRequest) GetUrlPath() string { + return "/product/detail" +} + +func New() *ProductDetailOutRequest { + request := &ProductDetailOutRequest{ + Param: &ProductDetailParamOutProductId{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductDetailOutRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_detail_response.ProductDetailResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_detail_response.ProductDetailResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductDetailOutRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductDetailOutRequest) GetParams() *ProductDetailParamOutProductId { + return c.Param +} + +type ProductDetailParamOutProductId struct { + // 商品ID,抖店系统生成,店铺下唯一;长度19位。 + //ProductId string `json:"product_id"` + // 外部商家编码,商家自定义字段 + OutProductId string `json:"out_product_id"` + //// true:读取草稿数据;false:读取线上数据;不传默认为false + //ShowDraft string `json:"show_draft"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_detail_out_productId/response/product_detail_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_detail_out_productId/response/product_detail_response.go new file mode 100644 index 00000000..d2c65a05 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_detail_out_productId/response/product_detail_response.go @@ -0,0 +1,320 @@ +package product_detail_response_out + +import doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" + +type ProductDetailResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductDetailData `json:"data"` +} +type TaxExemptionSkuInfo struct { + // 是否套装(0 否 1 是) + IsSuit int32 `json:"is_suit"` + // 套装数量 + SuitNum int64 `json:"suit_num"` + // 净含量 + Volume int64 `json:"volume"` +} +type SpecPricesItem struct { + // 规格id;抖店系统生成,商品id下唯一。 + SkuId int64 `json:"sku_id"` + // 外部商家skui_id编码,商家自定义字段;推荐使用outer_sku_id字段 + OutSkuId int64 `json:"out_sku_id"` + // 外部商家skui_id编码,商家自定义字段 + OuterSkuId string `json:"outer_sku_id"` + // 规格id列表,多规格以”,“分隔; + SpecDetailIds []int64 `json:"spec_detail_ids"` + // 可售库存;当前现货可售库存; + StockNum int64 `json:"stock_num"` + // 商品价格;单位:分 + Price int64 `json:"price"` + // 编码 + Code string `json:"code"` + // 阶梯库存,规则详见名称解释:https://op.jinritemai.com/docs/guide-docs/202/170 + StepStockNum int64 `json:"step_stock_num"` + // 活动库存,,规则详见名称解释:https://op.jinritemai.com/docs/guide-docs/202/170 + PromStockNum int64 `json:"prom_stock_num"` + // 活动阶梯库存,,规则详见名称解释:https://op.jinritemai.com/docs/guide-docs/202/170 + PromStepStockNum int64 `json:"prom_step_stock_num"` + // 【已废弃,无需使用】规格ID + SpecDetailId1 int64 `json:"spec_detail_id1"` + // 【已废弃,无需使用】规格ID + SpecDetailId2 int64 `json:"spec_detail_id2"` + // 【已废弃,无需使用】规格ID + SpecDetailId3 int64 `json:"spec_detail_id3"` + // sku类型;0-普通库存 1-区域库存 10-阶梯库存 + SkuType int64 `json:"sku_type"` + // 供应商编码 + SupplierId string `json:"supplier_id"` + // 活动现货库存 + PromotionStockNum int64 `json:"promotion_stock_num"` + // 活动阶梯库存 + PromotionStepStockNum int64 `json:"promotion_step_stock_num"` + // 海关申报要素(仅海淘商品返回信息) + CustomsReportInfo *CustomsReportInfo `json:"customs_report_info"` + // 现货订单锁定库存 + LockStockNum int64 `json:"lock_stock_num"` + // 阶梯订单锁定库存 + LockStepStockNum int64 `json:"lock_step_stock_num"` + // 仓ID->库存映射 + StockNumMap map[string]int64 `json:"stock_num_map"` + // 海南免税sku信息(仅海淘商品返回信息) + TaxExemptionSkuInfo *TaxExemptionSkuInfo `json:"tax_exemption_sku_info"` + // 发货时间(全款预售模式时的发货时间/阶梯模式下阶梯发货时间),9999是当日发、1次日发、2 是48小时发、5、15、45天等。发货时间规则可使用【product/getProductUpdateRule】获取 + PresellDelay int64 `json:"presell_delay"` + // SKU物流信息 + DeliveryInfos []DeliveryInfosItem `json:"delivery_infos"` +} +type ValuesItem struct { + // 销售属性值ID + Id int64 `json:"id"` + // 规格ID + SpecId int64 `json:"spec_id"` + // 销售属性值 + Name string `json:"name"` + // 销售属性ID + Pid int64 `json:"pid"` + // 是否是销售属性值 + IsLeaf int16 `json:"is_leaf"` + // 在线状态,-2彻底删除、0在线、1下线、2删除 + Status int16 `json:"status"` +} +type SpecsItem struct { + // 【无需使用】销售属性id + Id int64 `json:"id"` + // 【无需使用】规格id + SpecId int64 `json:"spec_id"` + // 销售属性 + Name string `json:"name"` + // 【无需使用】销售属性id + Pid int64 `json:"pid"` + // 是否是销售属性值 + IsLeaf int16 `json:"is_leaf"` + // 销售属性值 + Values []ValuesItem `json:"values"` +} +type QualityListItem struct { + // 资质key + QualityKey string `json:"quality_key"` + // 资质名称 + QualityName string `json:"quality_name"` + // 资质链接 + QualityAttachments []QualityAttachmentsItem `json:"quality_attachments"` +} +type CustomsReportInfo struct { + // 海关代码 + HsCode string `json:"hs_code"` + // 法定第一计量数量 + FirstMeasureQty float64 `json:"first_measure_qty"` + // 法定第二计量数量 + SecondMeasureQty float64 `json:"second_measure_qty"` + // 法定第一计量单位 + FirstMeasureUnit string `json:"first_measure_unit"` + // 法定第二计量单位 + SecondMeasureUnit string `json:"second_measure_unit"` + // 售卖单位 + Unit string `json:"unit"` + // 品名 + ReportName string `json:"report_name"` + // 品牌 + ReportBrandName string `json:"report_brand_name"` + // 用途 + Usage string `json:"usage"` + // 规格型号 + GModel string `json:"g_model"` + // 条形码 + BarCode string `json:"bar_code"` +} +type DeliveryInfosItem struct { + // 信息类型 + InfoType string `json:"info_type"` + // 信息值 + InfoValue string `json:"info_value"` + // 信息计量单位 + InfoUnit string `json:"info_unit"` +} +type CategoryDetail struct { + // 一级类目id + FirstCid int64 `json:"first_cid"` + // 二级类目id + SecondCid int64 `json:"second_cid"` + // 三级类目id + ThirdCid int64 `json:"third_cid"` + // 四级类目id + FourthCid int64 `json:"fourth_cid"` + // 一级类目名 + FirstCname string `json:"first_cname"` + // 二级类目名 + SecondCname string `json:"second_cname"` + // 三级类目名 + ThirdCname string `json:"third_cname"` + // 四级类目名 + FourthCname string `json:"fourth_cname"` +} +type LogisticsInfo struct { + // 通关模式,1BBC 2BC 3邮关 + CustomsClearType int64 `json:"customs_clear_type"` + // 原产国id + OriginCountryId int64 `json:"origin_country_id"` + // 货源国id + SourceCountryId int64 `json:"source_country_id"` + // 品牌所在地id + BrandCountryId int64 `json:"brand_country_id"` + // 税金承担方,0商家承担,1用户承担 + TaxPayer int64 `json:"tax_payer"` + // 商品净重 + NetWeightQty float64 `json:"net_weight_qty"` +} +type SpecPicsItem struct { + // id + SpecDetailId int64 `json:"spec_detail_id"` + // 规格图片uri + Pic string `json:"pic"` +} +type QualityAttachmentsItem struct { + // 1-图片,2-pdf + MediaType int64 `json:"media_type"` + // 资质url + Url string `json:"url"` +} +type PoiResource struct { + // 1 随时退+过期自动退,2 不支持退 + CouponReturnMethods []int64 `json:"coupon_return_methods"` +} +type DelayRule struct { + // 是否开启特殊日期延迟发货 + Enable bool `json:"enable"` + // 1 时间点;2 时间范围 + ConfigType int32 `json:"config_type"` + // 特殊日期延迟发货时间最晚发货时间,时间戳,单位秒 + ConfigValue int64 `json:"config_value"` + // 特殊日期延迟发货时间下单开始时间,时间戳,单位秒 + StartTime int64 `json:"start_time"` + // 特殊日期延迟发货时间下单结束时间,时间戳,单位秒 + EndTime int64 `json:"end_time"` +} +type ProductDetailData struct { + // 商品ID,抖店系统生成,店铺下唯一;长度19位。 + ProductId int64 `json:"product_id"` + // 商品ID(字符串类型),抖店系统生成,店铺下唯一;长度19位。 + ProductIdStr string `json:"product_id_str"` + // 【即将废弃】外部商家编码,商家自定义字段。推荐使用,outer_product_id字段 + OutProductId int64 `json:"out_product_id"` + // 外部商家编码,商家自定义字段,支持最多 255个字符 + OuterProductId string `json:"outer_product_id"` + // 【已废弃】open应用id + OpenUserId int64 `json:"open_user_id"` + // 商品标题,规则:至少输入8个字(16个字符)以上~输入30个字(60个字符)以内。;标题不规范会引起商品下架,影响您的正常销售,详见商品发布规范:https://school.jinritemai.com/doudian/web/article/101800?from=shop_article + Name string `json:"name"` + // 商品详情,最大支持50张图片,单张详情图宽高比不超2000*2000px,大小5M内,仅支持jpg/jpeg/png格式,返回HTML格式;注意:商品详情不规范,会引起商品下架,影响您的正常销售:https://school.jinritemai.com/doudian/web/article/101800?from=shop_article + Description string `json:"description"` + // 承诺发货时间,单位是天; 不传则默认为2天,当presell_type为0或2均只支持传入2;当presell_type为1时支持可选值为: 2、3、5、7、10、15; + DeliveryMethod int32 `json:"delivery_method"` + // 海南免税,海关限购分类编码,仅海淘商品有值返回。 + CdfCategory string `json:"cdf_category"` + // 商品在店铺中状态: 0-在线;1-下线;2-删除;详见商品状态机:https://op.jinritemai.com/docs/question-docs/92/2070 + Status int64 `json:"status"` + // 商品规格,新增商品是全局唯一,注意:有部分历史存量商品可能存在规格复用 + SpecId int64 `json:"spec_id"` + // 商品审核状态: 1-未提交;2-待审核;3-审核通过;4-审核未通过;5-封禁;7-审核通过待上架;详见商品状态机:https://op.jinritemai.com/docs/question-docs/92/2070 + CheckStatus int64 `json:"check_status"` + // 【已废弃】手机号 + Mobile string `json:"mobile"` + // 【已废弃】品牌id,推荐使用standard_brand_id字段,通过【/brand/list】获取,无品牌id商品返回默认值:596120136; + BrandId int64 `json:"brand_id"` + // 是否是组合商品的子商品;true-是,false-不是; + IsSubProduct bool `json:"is_sub_product"` + // 草稿状态;0-无草稿,1-未提审,2-待审核,3-审核通过,4-审核未通过。详见:https://op.jinritemai.com/docs/question-docs/92/2070 + DraftStatus int64 `json:"draft_status"` + // 类目详情;商品类目id可使用【/shop/getShopCategory】查询 + CategoryDetail *CategoryDetail `json:"category_detail"` + // 【已废弃】支持的支付方式:0货到付款 1在线支付 2两者都支持 + PayType int64 `json:"pay_type"` + // 【已废弃】商家推荐语 + RecommendRemark string `json:"recommend_remark"` + // 额外信息,如资质 + Extra string `json:"extra"` + // 【已废弃】无业务意义 + IsCreate int64 `json:"is_create"` + // 商品创建时间,时间格式:yyyy-mm-dd hh:mm:ss + CreateTime string `json:"create_time"` + // 商品更新时间,时间格式:yyyy-mm-dd hh:mm:ss + UpdateTime string `json:"update_time"` + // 商品主图;最多支持5张图片;仅支持png,jpg,jpeg格式,宽高比例为1:1(至少600*600px),大小5M内 + Pic []string `json:"pic"` + // 【即将废弃】推荐使用product_format_new;属性名称|属性值 之间用|分隔, 多组之间用^分开 + ProductFormat string `json:"product_format"` + // 规格图片 + SpecPics []SpecPicsItem `json:"spec_pics"` + // 商品sku详情 + SpecPrices []SpecPricesItem `json:"spec_prices"` + // 销售属性 + Specs []SpecsItem `json:"specs"` + // 头图,主图第一张 + Img string `json:"img"` + // 预售类型,1-全款预售,0-非预售,2-阶梯库存 + PresellType int64 `json:"presell_type"` + // 单用户下单限购件数 + MaximumPerOrder int64 `json:"maximum_per_order"` + // 单用户累计限购件数 + LimitPerBuyer int64 `json:"limit_per_buyer"` + // 用户每次下单至少购买的件数 + MinimumPerOrder int64 `json:"minimum_per_order"` + // 资质信息 + QualityList []QualityListItem `json:"quality_list"` + // 跨境物流信息(仅海淘商品返回) + LogisticsInfo *LogisticsInfo `json:"logistics_info"` + // 售后服务 + AfterSaleService string `json:"after_sale_service"` + // 商品价格是否含税 + PriceHasTax int64 `json:"price_has_tax"` + // 可预约发货天数 + AppointDeliveryDay int64 `json:"appoint_delivery_day"` + // 类目属性 + ProductFormatNew string `json:"product_format_new"` + // 品牌库brand id,原brand_id代表商标关系id + StandardBrandId int64 `json:"standard_brand_id"` + // 划线价 单位分 + MarketPrice int64 `json:"market_price"` + // 售卖价 单位分 + DiscountPrice int64 `json:"discount_price"` + // 汽车vin码 + CarVinCode string `json:"car_vin_code"` + // 生活娱乐充值模式 + NeedRechargeMode bool `json:"need_recharge_mode"` + // 多账号充值账号模板 + AccountTemplateId string `json:"account_template_id"` + // 发货模式:presell_type = 0 现货;presell_type = 2 阶梯;presell_type = 1 && presell_config_level = 0 全款预售;presell_type = 1 && presell_config_level = 1 sku预售;presell_type = 1 && presell_config_level = 2 现货+预售;presell_type = 1 && presell_config_level = 3 新预售 + PresellConfigLevel int64 `json:"presell_config_level"` + // 现货模式的发货天数;阶梯模式现货部分的发货天数,9999=当日发、1=次日发 + DeliveryDelayDay int64 `json:"delivery_delay_day"` + // 阶梯模式阶梯部分的发货天数;商品全款预售模式,预售天数 + PresellDelay int64 `json:"presell_delay"` + // 卡券信息 + PoiResource *PoiResource `json:"poi_resource"` + // 特殊日期延迟发货规则 + DelayRule *DelayRule `json:"delay_rule"` + // 3:4长图url(仅素材中心url有效) + LongPicUrl string `json:"long_pic_url"` + // 售卖方式;0:全渠道手售卖,1:仅指定直播间售卖 + SellChannel []int64 `json:"sell_channel"` + // 运费模版ID + FreightId int64 `json:"freight_id"` + // 主图视频ID + MaterialVideoId string `json:"material_video_id"` + // 提取方式新字段,推荐使用。"0": 普通商品-使用物流发货, "1": 虚拟商品-无需物流与电子交易凭证, "2": 虚拟商品-使用电子交易凭证, "3": 虚拟商品-充值直连 + PickupMethod string `json:"pickup_method"` + // 尺码模板ID + SizeInfoTemplateId int64 `json:"size_info_template_id"` + // 白底图url(仅素材中心url有效) + WhiteBackGroundPicUrl string `json:"white_back_ground_pic_url"` + // 销售渠道类型,包括纯电商(onlineOnly)、专柜同款(sameAsOffline),云零售商家(https://fxg.jinritemai.com/ffa/merchant-growth/cloud-retail)可以设置 + SaleChannelType string `json:"sale_channel_type"` + // 门店ID + StoreId int64 `json:"store_id"` + // 主商品ID + MainProductId int64 `json:"main_product_id"` + // 限售模板ID + SaleLimitId int64 `json:"sale_limit_id"` + // 系统推荐的标题前缀 + NamePrefix string `json:"name_prefix"` +} diff --git a/platformapi/tiktok_shop/tiktok_api/order.go b/platformapi/tiktok_shop/tiktok_api/order.go index ed0936ff..2383daa9 100644 --- a/platformapi/tiktok_shop/tiktok_api/order.go +++ b/platformapi/tiktok_shop/tiktok_api/order.go @@ -18,9 +18,8 @@ import ( order_orderDetail_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/order_orderDetail/response" order_searchList_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/order_searchList/request" "git.rosy.net.cn/baseapi/utils" - "io/ioutil" + "git.rosy.net.cn/jx-callback/globals" "math" - "net/http" "time" ) @@ -36,7 +35,7 @@ func (a *API) GetTiktokOrderDetail(orderId string) (*order_orderDetail_response. return nil, err } if orderDetail.Code != RequestSuccessCode { - return nil, errors.New(orderDetail.Msg) + return nil, errors.New(orderDetail.SubMsg) } return orderDetail.Data.ShopOrderDetail, nil @@ -322,13 +321,9 @@ func (a *API) LogisticsAdd(orderId string, companyCode string, isRefundReject bo return nil } -/***********************************************/ // CreateOrderCallback 订单创建,抖店创建订单后,回调消息通知本服务器 -func (a *API) CreateOrderCallback(request *http.Request) (map[string][]interface{}, *CallbackResponse) { - orderStatus, err := ioutil.ReadAll(request.Body) - if err != nil { - return nil, &CallbackResponse{Code: CallbackFailCode, Msg: CallbackFail} - } +func (a *API) CreateOrderCallback(orderStatus []byte) (map[string][]interface{}, *CallbackResponse) { + globals.SugarLogger.Debugf("88888888888888=%s", utils.Format4Output(string(orderStatus), false)) var resp []*OrderCallback if err := json.Unmarshal(orderStatus, &resp); err != nil { @@ -551,122 +546,122 @@ func (a *API) GetCallbackOrderId(msgId string, data interface{}) (string, *Callb switch msgId { case CallbackCreatedOrderMsgTagId: // 创建订单 create := CreateOrderData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", Err2CallbackResponse(err, "") } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackPayOrderMsgTagId: // 支付订单 create := PayOrderData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackWaitOrderMsgTagId: // 支付订单待处理(风控审核) create := WaitOrderData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackPartGoodsMsgTagId: // 卖家部分发货 create := SomeSendOrderData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackPartAllGoodsMsgTagId: // 卖家发货 create := BusinessDeliveryData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackCancelOrderMsgTagId: // 取消订单 create := CancelOrderData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackSuccessOrderMsgTagId: // 卖家确认收货时,会自动完成 create := SuccessOrderData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackWayBillChangeOrderMsgTagId: // 发货物流消息便跟 create := WayBillChangeData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackReceivingChangeOrderMsgTagId: // 收货地址消息变更(商家审核通过触发) create := ReceivingAddressChangeData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackChangeMoneyMsgTagId: // 卖家修改订单/运单金额回调 create := UpdateAmountChangeData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackBusinessRemarkMsgTagId: // 买家收货消息变更(手机,地址,姓名),用户C端修改触发(需要上面审核接口) create := BuyerUpdateWayBillData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackApplyUpdateAddressMsgTagId: // 商家修改交易备注回调 create := BusinessUpdateRemakeData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackSendOrderTimeChangeMsgTagId: // 订单发货时消息变更回调 create := AppointmentChangeData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return create.PId, Err2CallbackResponse(nil, "") /*********下面属于订单退货消息************/ case CallbackRefundOrderMsgTagId: // 买家发起售后申请消息 create := BuyerRefundCreatedData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackUpdateRefundOrderMsgTagId: // 买家修改售后申请消息 create := BuyerRefundModifiedData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackRefundOrderSuccessMsgTagId: // 退款成功消息 create := BusinessRefundSuccessData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackRefundOrderRefuseMsgTagId: // 拒绝退款消息 create := BusinessNotRefundRefusedData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackRefundShopMsgTagId: // 拒绝退货申请消息 create := BusinessNotReturnApplyRefusedData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackReturnApplyAgreedMsgTagId: // 卖家同意时,推送此消息 create := BusinessReturnApplyAgreedData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return utils.Int64ToStr(create.PId), Err2CallbackResponse(nil, "") case CallbackReturnRefundAgreedMsgTagId: // 同意退款消息 create := AppointmentChangeData{} - if err := json.Unmarshal([]byte(utils.Interface2String(data)), create); err != nil { + if err := utils.Map2StructByJson(data, &create, false); err != nil { return "", CallbackResponseErr(false) } return create.PId, Err2CallbackResponse(nil, "") diff --git a/platformapi/tiktok_shop/tiktok_api/order_utils.go b/platformapi/tiktok_shop/tiktok_api/order_utils.go index 258e9cee..f8b96e67 100644 --- a/platformapi/tiktok_shop/tiktok_api/order_utils.go +++ b/platformapi/tiktok_shop/tiktok_api/order_utils.go @@ -15,11 +15,11 @@ func GetCmd(request *http.Request) (cmd string) { } // EventSignChange 回调消息防伪标签校验 -func (a *API) EventSignChange(c *http.Request) *CallbackResponse { +func (a *API) EventSignChange(c *http.Request) (*CallbackResponse, []byte) { body, _ := ioutil.ReadAll(c.Body) signParam := a.appKey + string(body) + a.appSecret sign := fmt.Sprintf("%X", md5.Sum([]byte(signParam))) - return CallbackResponseErr(sign != c.Header.Get("event-sign")) + return CallbackResponseErr(sign != c.Header.Get("event-sign")), body } func (a *API) unmarshalData(data []byte, msg interface{}) (callbackResponse *CallbackResponse) { diff --git a/platformapi/tiktok_shop/tiktok_api/sku.go b/platformapi/tiktok_shop/tiktok_api/sku.go index f8b254ed..7d6aea29 100644 --- a/platformapi/tiktok_shop/tiktok_api/sku.go +++ b/platformapi/tiktok_shop/tiktok_api/sku.go @@ -8,6 +8,7 @@ import ( product_del_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_del/request" product_detail_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_detail/request" product_detail_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_detail/response" + product_detail_request_out "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_detail_out_productId/request" product_editV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_editV2/request" product_editV2_commit_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_editV2_commit/request" product_getCatePropertyV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_getCatePropertyV2/request" @@ -197,7 +198,7 @@ func (a *API) ProductSetOffline(productId int64) error { return nil } -// GetSkuDetail 查询单个商品详情 美团商品id(19位),本地商品id +// GetSkuDetail 查询单个商品详情(这个只有抖店平台商品id有效) func (a *API) GetSkuDetail(productId, outProductId string) (*product_detail_response.ProductDetailData, error) { request := product_detail_request.New() param := request.GetParams() @@ -218,6 +219,25 @@ func (a *API) GetSkuDetail(productId, outProductId string) (*product_detail_resp return result.Data, nil } +// GetSkuDetailLocalID 查询单个商品详情(这个只有京西平台商品id有效) +func (a *API) GetSkuDetailLocalID(productId, outProductId string) (*product_detail_response.ProductDetailData, error) { + request := product_detail_request_out.New() + param := request.GetParams() + + if outProductId != "" { + param.OutProductId = outProductId + } + + result, err := request.Execute(a.accessTokenObj) + if err != nil { + return nil, err + } + if result.Code != RequestSuccessCode { + return nil, errors.New(result.SubMsg) + } + return result.Data, nil +} + // GetSkuDetailList 批量获取商品列表 func (a *API) GetSkuDetailList(param *product_listV2_request.ProductListV2Param) (*product_listV2_response.ProductListV2Data, error) { request := product_listV2_request.New() diff --git a/platformapi/tiktok_shop/tiktok_api/sku_test.go b/platformapi/tiktok_shop/tiktok_api/sku_test.go index 7430fc19..d1072790 100644 --- a/platformapi/tiktok_shop/tiktok_api/sku_test.go +++ b/platformapi/tiktok_shop/tiktok_api/sku_test.go @@ -220,6 +220,7 @@ func TestInt16(t *testing.T) { fmt.Println(utils.Str2Int16(strings.ReplaceAll("08:00", ":", ""))) } +// 查询商品详情(抖音平台id) func TestGetSkuDetail(t *testing.T) { token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` @@ -229,6 +230,16 @@ func TestGetSkuDetail(t *testing.T) { globals.SugarLogger.Debugf("====%s", utils.Format4Output(data, false)) } +// 查询商品详情本地商品id +func TestGetSkuDetailLocalId(t *testing.T) { + token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` + + a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) + data, err := a.GetSkuDetail("", "") + fmt.Println(err) + globals.SugarLogger.Debugf("====%s", utils.Format4Output(data, false)) +} + func TestUpdateSkuStore(t *testing.T) { token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) From d30cb2a2b7599d295b1d36ef680273ed48028e32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 12 Oct 2022 17:28:14 +0800 Subject: [PATCH 3/9] 1 --- .../request/order_batchDecrypt_request.go | 2 + .../response/order_batchDecrypt_response.go | 2 + .../response/order_batchSensitive_response.go | 2 + .../tiktok_shop/tiktok_api/api_test.go | 14 + platformapi/tiktok_shop/tiktok_api/order.go | 278 ++++++++---------- .../tiktok_shop/tiktok_api/order_type.go | 2 +- platformapi/tiktok_shop/tiktok_api/sku.go | 58 ++++ .../tiktok_shop/tiktok_api/sku_test.go | 21 +- .../tiktok_shop/tiktok_api/store_test.go | 4 + 9 files changed, 221 insertions(+), 162 deletions(-) diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/request/order_batchDecrypt_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/request/order_batchDecrypt_request.go index c08dcbbb..77702f96 100644 --- a/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/request/order_batchDecrypt_request.go +++ b/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/request/order_batchDecrypt_request.go @@ -2,6 +2,8 @@ package order_batchDecrypt_request import ( "encoding/json" + order_batchDecrypt_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/response" + doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" ) type OrderBatchDecryptRequest struct { diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/response/order_batchDecrypt_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/response/order_batchDecrypt_response.go index ca978dd0..39eb65ea 100644 --- a/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/response/order_batchDecrypt_response.go +++ b/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/response/order_batchDecrypt_response.go @@ -1,5 +1,7 @@ package order_batchDecrypt_response +import doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" + type OrderBatchDecryptResponse struct { doudian_sdk.BaseDoudianOpApiResponse Data *OrderBatchDecryptData `json:"data"` diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_batchSensitive/response/order_batchSensitive_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_batchSensitive/response/order_batchSensitive_response.go index dd7939d0..54c6b8c9 100644 --- a/platformapi/tiktok_shop/sdk-golang/api/order_batchSensitive/response/order_batchSensitive_response.go +++ b/platformapi/tiktok_shop/sdk-golang/api/order_batchSensitive/response/order_batchSensitive_response.go @@ -1,5 +1,7 @@ package order_batchSensitive_response +import doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" + type OrderBatchSensitiveResponse struct { doudian_sdk.BaseDoudianOpApiResponse Data *OrderBatchSensitiveData `json:"data"` diff --git a/platformapi/tiktok_shop/tiktok_api/api_test.go b/platformapi/tiktok_shop/tiktok_api/api_test.go index b73980e3..67b57526 100644 --- a/platformapi/tiktok_shop/tiktok_api/api_test.go +++ b/platformapi/tiktok_shop/tiktok_api/api_test.go @@ -16,3 +16,17 @@ func TestApi(t *testing.T) { globals.SugarLogger.Debugf("%v", utils.Format4Output(a.appKey, false)) globals.SugarLogger.Debugf("%v", utils.Format4Output(a.appSecret, false)) } + +func TestQueryOrderDetail(t *testing.T) { + token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` + a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) + data, err := a.GetTiktokOrderDetail("4988354190732430566") + globals.SugarLogger.Debugf("=====%s", utils.Format4Output(data, false)) + globals.SugarLogger.Debugf("=====%s", err) +} + +func TestRefaseToken(t *testing.T) { + a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", "") + a.CreateToken("41155cd5-d30f-4075-9c44-b75ffa1a84ee") + //{"access_token":"37f41ac7-49ac-4848-a0ee-ea86bb0dfd9f","expires_in":519389,"scope":"SCOPE","shop_id":"","shop_name":"抖店开放平台测试专用店","refresh_token":"3dd8f638-fdf1-46e7-b974-88df382f03c6","authority_id" :""} +} diff --git a/platformapi/tiktok_shop/tiktok_api/order.go b/platformapi/tiktok_shop/tiktok_api/order.go index 2383daa9..e03c4697 100644 --- a/platformapi/tiktok_shop/tiktok_api/order.go +++ b/platformapi/tiktok_shop/tiktok_api/order.go @@ -335,204 +335,166 @@ func (a *API) CreateOrderCallback(orderStatus []byte) (map[string][]interface{}, for _, data := range resp { switch data.Tag { case CallbackCreatedOrderMsgTagId: // 创建订单 - if utils.IsNil(data.Data) { - continue + create := []CreateOrderCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackCreatedOrderMsgTagId] = append(callbackResult[CallbackCreatedOrderMsgTagId], v.Data) } - //create := CreateOrderData{} - //if err := json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackCreatedOrderMsgTagId] = append(callbackResult[CallbackCreatedOrderMsgTagId], create) - callbackResult[CallbackCreatedOrderMsgTagId] = append(callbackResult[CallbackCreatedOrderMsgTagId], data.Data) case CallbackPayOrderMsgTagId: // 支付订单 - if utils.IsNil(data.Data) { - continue + create := []PayOrderCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackPayOrderMsgTagId] = append(callbackResult[CallbackPayOrderMsgTagId], v.Data) } - //create := PayOrderData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackPayOrderMsgTagId] = append(callbackResult[CallbackPayOrderMsgTagId], create) - callbackResult[CallbackPayOrderMsgTagId] = append(callbackResult[CallbackPayOrderMsgTagId], data.Data) case CallbackWaitOrderMsgTagId: // 支付订单待处理(风控审核) - if utils.IsNil(data.Data) { - continue + create := []WaitOrderCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackWaitOrderMsgTagId] = append(callbackResult[CallbackWaitOrderMsgTagId], v.Data) } - //create := WaitOrderData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackWaitOrderMsgTagId] = append(callbackResult[CallbackWaitOrderMsgTagId], create) - callbackResult[CallbackWaitOrderMsgTagId] = append(callbackResult[CallbackWaitOrderMsgTagId], data.Data) case CallbackPartGoodsMsgTagId: // 卖家部分发货 - if utils.IsNil(data.Data) { - continue + create := []SomeSendOrderCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackPartGoodsMsgTagId] = append(callbackResult[CallbackPartGoodsMsgTagId], v.Data) } - //create := SomeSendOrderData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackPartGoodsMsgTagId] = append(callbackResult[CallbackPartGoodsMsgTagId], create) - callbackResult[CallbackPartGoodsMsgTagId] = append(callbackResult[CallbackPartGoodsMsgTagId], data.Data) case CallbackPartAllGoodsMsgTagId: // 卖家发货 - if utils.IsNil(data.Data) { - continue + create := []BusinessDeliveryCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackPartAllGoodsMsgTagId] = append(callbackResult[CallbackPartAllGoodsMsgTagId], v.data) } - //create := BusinessDeliveryData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackPartAllGoodsMsgTagId] = append(callbackResult[CallbackPartAllGoodsMsgTagId], create) - callbackResult[CallbackPartAllGoodsMsgTagId] = append(callbackResult[CallbackPartAllGoodsMsgTagId], data.Data) case CallbackCancelOrderMsgTagId: // 取消订单 - if utils.IsNil(data.Data) { - continue + create := []CancelOrderCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackCancelOrderMsgTagId] = append(callbackResult[CallbackCancelOrderMsgTagId], v.Data) } - //create := CancelOrderData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackCancelOrderMsgTagId] = append(callbackResult[CallbackCancelOrderMsgTagId], create) - callbackResult[CallbackCancelOrderMsgTagId] = append(callbackResult[CallbackCancelOrderMsgTagId], data.Data) case CallbackSuccessOrderMsgTagId: // 卖家确认收货时,会自动完成 - if utils.IsNil(data.Data) { - continue + create := []SuccessOrderCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackSuccessOrderMsgTagId] = append(callbackResult[CallbackSuccessOrderMsgTagId], v.Data) } - //create := SuccessOrderData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackSuccessOrderMsgTagId] = append(callbackResult[CallbackSuccessOrderMsgTagId], create) - callbackResult[CallbackSuccessOrderMsgTagId] = append(callbackResult[CallbackSuccessOrderMsgTagId], data.Data) case CallbackWayBillChangeOrderMsgTagId: // 发货物流消息便跟 - if utils.IsNil(data.Data) { - continue + create := []WayBillChangeCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackWayBillChangeOrderMsgTagId] = append(callbackResult[CallbackWayBillChangeOrderMsgTagId], v.Data) } - //create := WayBillChangeData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackWayBillChangeOrderMsgTagId] = append(callbackResult[CallbackWayBillChangeOrderMsgTagId], create) - callbackResult[CallbackWayBillChangeOrderMsgTagId] = append(callbackResult[CallbackWayBillChangeOrderMsgTagId], data.Data) case CallbackReceivingChangeOrderMsgTagId: // 收货地址消息变更(商家审核通过触发) - if utils.IsNil(data.Data) { - continue + create := []ReceivingAddressChangeCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackReceivingChangeOrderMsgTagId] = append(callbackResult[CallbackReceivingChangeOrderMsgTagId], v.Data) } - //create := ReceivingAddressChangeData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackReceivingChangeOrderMsgTagId] = append(callbackResult[CallbackReceivingChangeOrderMsgTagId], create) - callbackResult[CallbackReceivingChangeOrderMsgTagId] = append(callbackResult[CallbackReceivingChangeOrderMsgTagId], data.Data) case CallbackChangeMoneyMsgTagId: // 卖家修改订单/运单金额回调 - if utils.IsNil(data.Data) { - continue + create := []UpdateAmountChangeCallback{} + if err := json.Unmarshal([]byte(orderStatus), &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackChangeMoneyMsgTagId] = append(callbackResult[CallbackChangeMoneyMsgTagId], v.Data) } - //create := UpdateAmountChangeData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackChangeMoneyMsgTagId] = append(callbackResult[CallbackChangeMoneyMsgTagId], create) - callbackResult[CallbackChangeMoneyMsgTagId] = append(callbackResult[CallbackChangeMoneyMsgTagId], data.Data) case CallbackBusinessRemarkMsgTagId: // 买家收货消息变更(手机,地址,姓名),用户C端修改触发(需要上面审核接口) - if utils.IsNil(data.Data) { - continue + create := []BuyerUpdateWayBillCallback{} + if err := json.Unmarshal(orderStatus, create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackBusinessRemarkMsgTagId] = append(callbackResult[CallbackBusinessRemarkMsgTagId], v.Data) } - //create := BuyerUpdateWayBillData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackBusinessRemarkMsgTagId] = append(callbackResult[CallbackBusinessRemarkMsgTagId], create) - callbackResult[CallbackBusinessRemarkMsgTagId] = append(callbackResult[CallbackBusinessRemarkMsgTagId], data.Data) case CallbackApplyUpdateAddressMsgTagId: // 商家修改交易备注回调 - if utils.IsNil(data.Data) { - continue + create := []BusinessUpdateRemakeCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackApplyUpdateAddressMsgTagId] = append(callbackResult[CallbackApplyUpdateAddressMsgTagId], v.Data) } - //create := BusinessUpdateRemakeData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackApplyUpdateAddressMsgTagId] = append(callbackResult[CallbackApplyUpdateAddressMsgTagId], create) - callbackResult[CallbackApplyUpdateAddressMsgTagId] = append(callbackResult[CallbackApplyUpdateAddressMsgTagId], data.Data) case CallbackSendOrderTimeChangeMsgTagId: // 订单发货时消息变更回调 - if utils.IsNil(data.Data) { - continue + create := []AppointmentChangeCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackSendOrderTimeChangeMsgTagId] = append(callbackResult[CallbackSendOrderTimeChangeMsgTagId], v.Data) } - //create := AppointmentChangeData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - callbackResult[CallbackSendOrderTimeChangeMsgTagId] = append(callbackResult[CallbackSendOrderTimeChangeMsgTagId], data.Data) /*********下面属于订单退货消息************/ case CallbackRefundOrderMsgTagId: // 买家发起售后申请消息 - if utils.IsNil(data.Data) { - continue + create := []BuyerRefundCreatedCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackRefundOrderMsgTagId] = append(callbackResult[CallbackRefundOrderMsgTagId], v.Data) } - //create := BuyerRefundCreatedData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackRefundOrderMsgTagId] = append(callbackResult[CallbackRefundOrderMsgTagId], create) - callbackResult[CallbackRefundOrderMsgTagId] = append(callbackResult[CallbackRefundOrderMsgTagId], data.Data) case CallbackUpdateRefundOrderMsgTagId: // 买家修改售后申请消息 - if utils.IsNil(data.Data) { - continue + create := []BuyerRefundModifiedCallBack{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackUpdateRefundOrderMsgTagId] = append(callbackResult[CallbackUpdateRefundOrderMsgTagId], v.Data) } - //create := BuyerRefundModifiedData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackUpdateRefundOrderMsgTagId] = append(callbackResult[CallbackUpdateRefundOrderMsgTagId], create) - callbackResult[CallbackUpdateRefundOrderMsgTagId] = append(callbackResult[CallbackUpdateRefundOrderMsgTagId], data.Data) case CallbackRefundOrderSuccessMsgTagId: // 退款成功消息 - if utils.IsNil(data.Data) { - continue + create := []BusinessRefundSuccessCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackRefundOrderSuccessMsgTagId] = append(callbackResult[CallbackRefundOrderSuccessMsgTagId], v.Data) } - //create := BusinessRefundSuccessData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackRefundOrderSuccessMsgTagId] = append(callbackResult[CallbackRefundOrderSuccessMsgTagId], create) - callbackResult[CallbackRefundOrderSuccessMsgTagId] = append(callbackResult[CallbackRefundOrderSuccessMsgTagId], data.Data) case CallbackRefundOrderRefuseMsgTagId: // 拒绝退款消息 - if utils.IsNil(data.Data) { - continue + create := []BusinessNotRefundRefusedCallBack{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackRefundOrderRefuseMsgTagId] = append(callbackResult[CallbackRefundOrderRefuseMsgTagId], v.Data) } - //create := BusinessNotRefundRefusedData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackRefundOrderRefuseMsgTagId] = append(callbackResult[CallbackRefundOrderRefuseMsgTagId], create) - callbackResult[CallbackRefundOrderRefuseMsgTagId] = append(callbackResult[CallbackRefundOrderRefuseMsgTagId], data.Data) case CallbackRefundShopMsgTagId: // 拒绝退货申请消息 - if utils.IsNil(data.Data) { - continue + create := []BusinessNotReturnApplyRefusedCallBack{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackRefundShopMsgTagId] = append(callbackResult[CallbackRefundShopMsgTagId], v.Data) } - //create := BusinessNotReturnApplyRefusedData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackRefundShopMsgTagId] = append(callbackResult[CallbackRefundShopMsgTagId], create) - callbackResult[CallbackRefundShopMsgTagId] = append(callbackResult[CallbackRefundShopMsgTagId], data.Data) case CallbackReturnApplyAgreedMsgTagId: // 卖家同意时,推送此消息 - if utils.IsNil(data.Data) { - continue + create := []BusinessReturnApplyAgreedCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackReturnApplyAgreedMsgTagId] = append(callbackResult[CallbackReturnApplyAgreedMsgTagId], v.Data) } - //create := BusinessReturnApplyAgreedData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - callbackResult[CallbackReturnApplyAgreedMsgTagId] = append(callbackResult[CallbackReturnApplyAgreedMsgTagId], data.Data) case CallbackReturnRefundAgreedMsgTagId: // 同意退款消息 - if utils.IsNil(data.Data) { - continue + create := []BusinessRefundAgreedCallback{} + if err := json.Unmarshal(orderStatus, &create); err != nil { + return nil, CallbackResponseErr(false) + } + for _, v := range create { + callbackResult[CallbackReturnRefundAgreedMsgTagId] = append(callbackResult[CallbackReturnRefundAgreedMsgTagId], v.Data) } - //create := AppointmentChangeData{} - //if err = json.Unmarshal([]byte(utils.Interface2String(data.Data)), create); err != nil { - // return nil, CallbackResponseErr(false) - //} - //callbackResult[CallbackReturnRefundAgreedMsgTagId] = append(callbackResult[CallbackReturnRefundAgreedMsgTagId], create) - callbackResult[CallbackReturnRefundAgreedMsgTagId] = append(callbackResult[CallbackReturnRefundAgreedMsgTagId], data.Data) default: return nil, CallbackResponseErr(false) } diff --git a/platformapi/tiktok_shop/tiktok_api/order_type.go b/platformapi/tiktok_shop/tiktok_api/order_type.go index 5d16f9e4..c849266f 100644 --- a/platformapi/tiktok_shop/tiktok_api/order_type.go +++ b/platformapi/tiktok_shop/tiktok_api/order_type.go @@ -475,7 +475,7 @@ type BusinessReturnApplyAgreedData struct { type BusinessRefundAgreedCallback struct { PublicOrderCallback - Data *AppointmentChangeData `json:"data"` + Data *BusinessRefundAgreedData `json:"data"` } type BusinessRefundAgreedData struct { diff --git a/platformapi/tiktok_shop/tiktok_api/sku.go b/platformapi/tiktok_shop/tiktok_api/sku.go index 7d6aea29..16788979 100644 --- a/platformapi/tiktok_shop/tiktok_api/sku.go +++ b/platformapi/tiktok_shop/tiktok_api/sku.go @@ -2,7 +2,10 @@ package tiktok_api import ( "errors" + "fmt" brand_list_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/brand_list/request" + order_batchDecrypt_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/request" + order_batchSensitive_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/order_batchSensitive/request" product_addV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_addV2/request" product_addV2_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_addV2/response" product_del_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_del/request" @@ -287,3 +290,58 @@ func (a *API) GetSkuBrand(categoryId int64) (int64, error) { return result.Data.AuthBrandList[0].BrandId, nil } + +// OrderUserInfoDecrypt 用户信息解密 +func (a *API) OrderUserInfoDecrypt(orderId string) { + request := order_batchDecrypt_request.New() + + cipherInfos := make([]order_batchDecrypt_request.CipherInfosItem, 0, 0) + for i := 0; i < 3; i++ { + cipher := order_batchDecrypt_request.CipherInfosItem{} + cipher.AuthId = orderId + switch i { + case 1: // 姓名 + cipher.CipherText = `#4/6R5x2e#yNZ5R4x+4YGk4yVVUVj5wDFNcIO8SPEjbXC7v55AV0oJKDafFKn9onnavg==&CgwIARDmDhjXESAEKAESPgo8UJvXDogRQo6o/CTNf5vPfN8ncAvwDTZrf4nw4v5BDusLnWFb0kH6vvl6qtlZ6MwEph9vT9DIHobUFoQxGgA=#1##` + cipherInfos = append(cipherInfos, cipher) + case 2: // 手机号 + cipher.CipherText = `$L2ixwE3gFa/PhQeeN1Hxc0+TIImkbdVAcjdvVK1+BKE=$CT/fyQwDSEZskk3rWaxj5Je4w871eh1YBvge+aAv1chQ8pZsVBvJsQhRj+Rs&CgwIARDmDhjXESAEKAESPgo8Hs17yiBRdtnvUSwCjYO5fFyy/b8/ihLznxEgZeFaSO0LpVZrlIqHcNmBMrh3g0WNi3fLMAwFfi0v8qpoGgA=$1$$` + cipherInfos = append(cipherInfos, cipher) + case 3: // 地址 + cipher.CipherText = `#UK1DDyGyV7AafNwBv0jMYdu1SxWkQlvD8/jN1W36QM/2y1hzIUVLCYMDhJWgAbEWCYMDUnbMaB6m0Rx7#ztuYzQyi68RWDzQGHNQwgNW4/aC19tCAyTJKZFTA5vd5YdBbzllK6lXCA58ulHB9FyvxzpUDAtWUVgywqCPsaDYsaDTjCo0g4RbUyyuRGoYz/BY=&CgwIARDmDhjXESAEKAESPgo8lmOxB5Al56WzV1wV3mupjuiJEnavXuyPyFoMJ0WexY9pCI56tSyZN78zvqrnqSSLrdt3V4Q0OugOv8seGgA=#1##` + cipherInfos = append(cipherInfos, cipher) + } + } + request.Param.CipherInfos = cipherInfos + + result, err := request.Execute(a.accessTokenObj) + fmt.Println(result) + fmt.Println(err) +} + +// OrderUserInfoSensitive 用户信息脱敏 +func (a *API) OrderUserInfoSensitive(orderId string) { + request := order_batchSensitive_request.New() + + paramItems := make([]order_batchSensitive_request.CipherInfosItem, 0, 0) + for i := 0; i < 3; i++ { + cipher := order_batchSensitive_request.CipherInfosItem{} + cipher.AuthId = orderId + switch i { + case 1: // 姓名 + cipher.CipherText = `#4/6R5x2e#yNZ5R4x+4YGk4yVVUVj5wDFNcIO8SPEjbXC7v55AV0oJKDafFKn9onnavg==&CgwIARDmDhjXESAEKAESPgo8UJvXDogRQo6o/CTNf5vPfN8ncAvwDTZrf4nw4v5BDusLnWFb0kH6vvl6qtlZ6MwEph9vT9DIHobUFoQxGgA=#1##` + paramItems = append(paramItems, cipher) + case 2: // 手机号 + cipher.CipherText = `$L2ixwE3gFa/PhQeeN1Hxc0+TIImkbdVAcjdvVK1+BKE=$CT/fyQwDSEZskk3rWaxj5Je4w871eh1YBvge+aAv1chQ8pZsVBvJsQhRj+Rs&CgwIARDmDhjXESAEKAESPgo8Hs17yiBRdtnvUSwCjYO5fFyy/b8/ihLznxEgZeFaSO0LpVZrlIqHcNmBMrh3g0WNi3fLMAwFfi0v8qpoGgA=$1$$` + paramItems = append(paramItems, cipher) + case 3: // 地址 + cipher.CipherText = `#UK1DDyGyV7AafNwBv0jMYdu1SxWkQlvD8/jN1W36QM/2y1hzIUVLCYMDhJWgAbEWCYMDUnbMaB6m0Rx7#ztuYzQyi68RWDzQGHNQwgNW4/aC19tCAyTJKZFTA5vd5YdBbzllK6lXCA58ulHB9FyvxzpUDAtWUVgywqCPsaDYsaDTjCo0g4RbUyyuRGoYz/BY=&CgwIARDmDhjXESAEKAESPgo8lmOxB5Al56WzV1wV3mupjuiJEnavXuyPyFoMJ0WexY9pCI56tSyZN78zvqrnqSSLrdt3V4Q0OugOv8seGgA=#1##` + paramItems = append(paramItems, cipher) + } + } + + request.Param.CipherInfos = paramItems + + result, err := request.Execute(a.accessTokenObj) + fmt.Println(result) + fmt.Println(err) +} diff --git a/platformapi/tiktok_shop/tiktok_api/sku_test.go b/platformapi/tiktok_shop/tiktok_api/sku_test.go index d1072790..86c2bd1d 100644 --- a/platformapi/tiktok_shop/tiktok_api/sku_test.go +++ b/platformapi/tiktok_shop/tiktok_api/sku_test.go @@ -35,9 +35,8 @@ func TestCategory(t *testing.T) { } func TestGetCatePropertyV2(t *testing.T) { - accesstoken := `{"access_token":"6c4d71b3-831c-4a96-8d2e-977e37afba5a","expires_in":604800,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"65aae144-4cc0-44d2-89ba-5d3062caca41","authority_id":""} -` - a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", accesstoken) + token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` + a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) data, err := a.GetCatePropertyV2(23065) fmt.Println("err=====", err) fmt.Println("data====", data) // 202209281558450102081001701D7B32C5 @@ -295,3 +294,19 @@ func TestProductSetOffline(t *testing.T) { a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) a.ProductSetOffline(3576377564144516403) } + +// 解密购买用户电话,名字,地址 +func TestBatchDecrypt(t *testing.T) { + token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` + + a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) + a.OrderUserInfoDecrypt("4988354190732430566") +} + +// 脱敏购买用户电话,名字,地址 +func TestOrderUserInfoSensitive(t *testing.T) { + token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` + + a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) + a.OrderUserInfoSensitive("4988354190732430566") +} diff --git a/platformapi/tiktok_shop/tiktok_api/store_test.go b/platformapi/tiktok_shop/tiktok_api/store_test.go index ad82329b..44d995b0 100644 --- a/platformapi/tiktok_shop/tiktok_api/store_test.go +++ b/platformapi/tiktok_shop/tiktok_api/store_test.go @@ -109,3 +109,7 @@ func TestUnBindd(t *testing.T) { a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) a.WarehouseUnbindStore([]int64{63114504}, "666667") } + +func TestJNTM(t *testing.T) { + fmt.Println(2 | 8) +} From 21d7a22b33f78ed977dcf17e801a68a5ca24b41f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 12 Oct 2022 17:53:46 +0800 Subject: [PATCH 4/9] 1 --- platformapi/tiktok_shop/tiktok_api/order.go | 1 + 1 file changed, 1 insertion(+) diff --git a/platformapi/tiktok_shop/tiktok_api/order.go b/platformapi/tiktok_shop/tiktok_api/order.go index e03c4697..a433529f 100644 --- a/platformapi/tiktok_shop/tiktok_api/order.go +++ b/platformapi/tiktok_shop/tiktok_api/order.go @@ -350,6 +350,7 @@ func (a *API) CreateOrderCallback(orderStatus []byte) (map[string][]interface{}, for _, v := range create { callbackResult[CallbackPayOrderMsgTagId] = append(callbackResult[CallbackPayOrderMsgTagId], v.Data) } + globals.SugarLogger.Debugf("CallbackPayOrderMsgTagId======%s", utils.Format4Output(callbackResult, false)) case CallbackWaitOrderMsgTagId: // 支付订单待处理(风控审核) create := []WaitOrderCallback{} if err := json.Unmarshal(orderStatus, &create); err != nil { From df7ab546bf7493e5d92c3fa7dc8aba5fb81b47fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 12 Oct 2022 18:03:11 +0800 Subject: [PATCH 5/9] 1 --- platformapi/tiktok_shop/tiktok_api/order_type.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platformapi/tiktok_shop/tiktok_api/order_type.go b/platformapi/tiktok_shop/tiktok_api/order_type.go index c849266f..c03b9b20 100644 --- a/platformapi/tiktok_shop/tiktok_api/order_type.go +++ b/platformapi/tiktok_shop/tiktok_api/order_type.go @@ -17,9 +17,9 @@ type PublicOrderCallback struct { } type OrderCallback struct { - Tag string `json:"tag"` // 消息种类,订单创建消息的tag值为"100" - MsgId string `json:"msgId"` //消息记录id - Data interface{} `json:"data"` // 消息正文 + Tag string `json:"tag"` // 消息种类,订单创建消息的tag值为"100" + MsgId string `json:"msg_id"` //消息记录id + Data interface{} `json:"data"` // 消息正文 FormData url.Values } From 089d73664ad0a4cd22a64b467542ee5d3c7c881e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 12 Oct 2022 18:38:03 +0800 Subject: [PATCH 6/9] 1 --- platformapi/tiktok_shop/tiktok_api/order.go | 160 +++++++----------- .../tiktok_shop/tiktok_api/order_type.go | 8 +- 2 files changed, 64 insertions(+), 104 deletions(-) diff --git a/platformapi/tiktok_shop/tiktok_api/order.go b/platformapi/tiktok_shop/tiktok_api/order.go index a433529f..2f7e6097 100644 --- a/platformapi/tiktok_shop/tiktok_api/order.go +++ b/platformapi/tiktok_shop/tiktok_api/order.go @@ -335,167 +335,127 @@ func (a *API) CreateOrderCallback(orderStatus []byte) (map[string][]interface{}, for _, data := range resp { switch data.Tag { case CallbackCreatedOrderMsgTagId: // 创建订单 - create := []CreateOrderCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := CreateOrderData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackCreatedOrderMsgTagId] = append(callbackResult[CallbackCreatedOrderMsgTagId], v.Data) - } + callbackResult[CallbackCreatedOrderMsgTagId] = append(callbackResult[CallbackCreatedOrderMsgTagId], create) case CallbackPayOrderMsgTagId: // 支付订单 - create := []PayOrderCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := PayOrderData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackPayOrderMsgTagId] = append(callbackResult[CallbackPayOrderMsgTagId], v.Data) - } + callbackResult[CallbackPayOrderMsgTagId] = append(callbackResult[CallbackPayOrderMsgTagId], create) globals.SugarLogger.Debugf("CallbackPayOrderMsgTagId======%s", utils.Format4Output(callbackResult, false)) case CallbackWaitOrderMsgTagId: // 支付订单待处理(风控审核) - create := []WaitOrderCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := WaitOrderData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackWaitOrderMsgTagId] = append(callbackResult[CallbackWaitOrderMsgTagId], v.Data) - } + callbackResult[CallbackWaitOrderMsgTagId] = append(callbackResult[CallbackWaitOrderMsgTagId], create) case CallbackPartGoodsMsgTagId: // 卖家部分发货 - create := []SomeSendOrderCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := SomeSendOrderData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackPartGoodsMsgTagId] = append(callbackResult[CallbackPartGoodsMsgTagId], v.Data) - } + callbackResult[CallbackPartGoodsMsgTagId] = append(callbackResult[CallbackPartGoodsMsgTagId], create) case CallbackPartAllGoodsMsgTagId: // 卖家发货 - create := []BusinessDeliveryCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := BusinessDeliveryData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackPartAllGoodsMsgTagId] = append(callbackResult[CallbackPartAllGoodsMsgTagId], v.data) - } + callbackResult[CallbackPartAllGoodsMsgTagId] = append(callbackResult[CallbackPartAllGoodsMsgTagId], create) case CallbackCancelOrderMsgTagId: // 取消订单 - create := []CancelOrderCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := CreateOrderData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackCancelOrderMsgTagId] = append(callbackResult[CallbackCancelOrderMsgTagId], v.Data) - } + callbackResult[CallbackCancelOrderMsgTagId] = append(callbackResult[CallbackCancelOrderMsgTagId], create) case CallbackSuccessOrderMsgTagId: // 卖家确认收货时,会自动完成 - create := []SuccessOrderCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := SuccessOrderData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackSuccessOrderMsgTagId] = append(callbackResult[CallbackSuccessOrderMsgTagId], v.Data) - } + callbackResult[CallbackSuccessOrderMsgTagId] = append(callbackResult[CallbackSuccessOrderMsgTagId], create) case CallbackWayBillChangeOrderMsgTagId: // 发货物流消息便跟 - create := []WayBillChangeCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := WayBillChangeData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackWayBillChangeOrderMsgTagId] = append(callbackResult[CallbackWayBillChangeOrderMsgTagId], v.Data) - } + callbackResult[CallbackWayBillChangeOrderMsgTagId] = append(callbackResult[CallbackWayBillChangeOrderMsgTagId], create) case CallbackReceivingChangeOrderMsgTagId: // 收货地址消息变更(商家审核通过触发) - create := []ReceivingAddressChangeCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := ReceivingAddressChangeData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackReceivingChangeOrderMsgTagId] = append(callbackResult[CallbackReceivingChangeOrderMsgTagId], v.Data) - } + callbackResult[CallbackReceivingChangeOrderMsgTagId] = append(callbackResult[CallbackReceivingChangeOrderMsgTagId], create) case CallbackChangeMoneyMsgTagId: // 卖家修改订单/运单金额回调 - create := []UpdateAmountChangeCallback{} - if err := json.Unmarshal([]byte(orderStatus), &create); err != nil { + create := UpdateAmountChangeData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackChangeMoneyMsgTagId] = append(callbackResult[CallbackChangeMoneyMsgTagId], v.Data) - } + callbackResult[CallbackChangeMoneyMsgTagId] = append(callbackResult[CallbackChangeMoneyMsgTagId], create) case CallbackBusinessRemarkMsgTagId: // 买家收货消息变更(手机,地址,姓名),用户C端修改触发(需要上面审核接口) - create := []BuyerUpdateWayBillCallback{} - if err := json.Unmarshal(orderStatus, create); err != nil { + create := BuyerUpdateWayBillData{} + if err := json.Unmarshal([]byte(data.Data), create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackBusinessRemarkMsgTagId] = append(callbackResult[CallbackBusinessRemarkMsgTagId], v.Data) - } + callbackResult[CallbackBusinessRemarkMsgTagId] = append(callbackResult[CallbackBusinessRemarkMsgTagId], create) case CallbackApplyUpdateAddressMsgTagId: // 商家修改交易备注回调 - create := []BusinessUpdateRemakeCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := BusinessUpdateRemakeData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackApplyUpdateAddressMsgTagId] = append(callbackResult[CallbackApplyUpdateAddressMsgTagId], v.Data) - } + callbackResult[CallbackApplyUpdateAddressMsgTagId] = append(callbackResult[CallbackApplyUpdateAddressMsgTagId], create) case CallbackSendOrderTimeChangeMsgTagId: // 订单发货时消息变更回调 - create := []AppointmentChangeCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := AppointmentChangeData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackSendOrderTimeChangeMsgTagId] = append(callbackResult[CallbackSendOrderTimeChangeMsgTagId], v.Data) - } + callbackResult[CallbackSendOrderTimeChangeMsgTagId] = append(callbackResult[CallbackSendOrderTimeChangeMsgTagId], create) /*********下面属于订单退货消息************/ case CallbackRefundOrderMsgTagId: // 买家发起售后申请消息 - create := []BuyerRefundCreatedCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := BuyerRefundCreatedData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackRefundOrderMsgTagId] = append(callbackResult[CallbackRefundOrderMsgTagId], v.Data) - } + callbackResult[CallbackRefundOrderMsgTagId] = append(callbackResult[CallbackRefundOrderMsgTagId], create) case CallbackUpdateRefundOrderMsgTagId: // 买家修改售后申请消息 - create := []BuyerRefundModifiedCallBack{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := BuyerRefundModifiedData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackUpdateRefundOrderMsgTagId] = append(callbackResult[CallbackUpdateRefundOrderMsgTagId], v.Data) - } + callbackResult[CallbackUpdateRefundOrderMsgTagId] = append(callbackResult[CallbackUpdateRefundOrderMsgTagId], create) case CallbackRefundOrderSuccessMsgTagId: // 退款成功消息 - create := []BusinessRefundSuccessCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := BusinessRefundSuccessData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackRefundOrderSuccessMsgTagId] = append(callbackResult[CallbackRefundOrderSuccessMsgTagId], v.Data) - } + callbackResult[CallbackRefundOrderSuccessMsgTagId] = append(callbackResult[CallbackRefundOrderSuccessMsgTagId], create) case CallbackRefundOrderRefuseMsgTagId: // 拒绝退款消息 - create := []BusinessNotRefundRefusedCallBack{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := BusinessNotRefundRefusedData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackRefundOrderRefuseMsgTagId] = append(callbackResult[CallbackRefundOrderRefuseMsgTagId], v.Data) - } + callbackResult[CallbackRefundOrderRefuseMsgTagId] = append(callbackResult[CallbackRefundOrderRefuseMsgTagId], create) case CallbackRefundShopMsgTagId: // 拒绝退货申请消息 - create := []BusinessNotReturnApplyRefusedCallBack{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := BusinessNotReturnApplyRefusedData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackRefundShopMsgTagId] = append(callbackResult[CallbackRefundShopMsgTagId], v.Data) - } + callbackResult[CallbackRefundShopMsgTagId] = append(callbackResult[CallbackRefundShopMsgTagId], create) case CallbackReturnApplyAgreedMsgTagId: // 卖家同意时,推送此消息 - create := []BusinessReturnApplyAgreedCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := BusinessReturnApplyAgreedData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackReturnApplyAgreedMsgTagId] = append(callbackResult[CallbackReturnApplyAgreedMsgTagId], v.Data) - } + callbackResult[CallbackReturnApplyAgreedMsgTagId] = append(callbackResult[CallbackReturnApplyAgreedMsgTagId], create) case CallbackReturnRefundAgreedMsgTagId: // 同意退款消息 - create := []BusinessRefundAgreedCallback{} - if err := json.Unmarshal(orderStatus, &create); err != nil { + create := BusinessRefundAgreedData{} + if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, CallbackResponseErr(false) } - for _, v := range create { - callbackResult[CallbackReturnRefundAgreedMsgTagId] = append(callbackResult[CallbackReturnRefundAgreedMsgTagId], v.Data) - } + callbackResult[CallbackReturnRefundAgreedMsgTagId] = append(callbackResult[CallbackReturnRefundAgreedMsgTagId], create) default: return nil, CallbackResponseErr(false) } diff --git a/platformapi/tiktok_shop/tiktok_api/order_type.go b/platformapi/tiktok_shop/tiktok_api/order_type.go index c03b9b20..7442415e 100644 --- a/platformapi/tiktok_shop/tiktok_api/order_type.go +++ b/platformapi/tiktok_shop/tiktok_api/order_type.go @@ -17,9 +17,9 @@ type PublicOrderCallback struct { } type OrderCallback struct { - Tag string `json:"tag"` // 消息种类,订单创建消息的tag值为"100" - MsgId string `json:"msg_id"` //消息记录id - Data interface{} `json:"data"` // 消息正文 + Tag string `json:"tag"` // 消息种类,订单创建消息的tag值为"100" + MsgId string `json:"msg_id"` //消息记录id + Data string `json:"data"` // 消息正文 FormData url.Values } @@ -68,7 +68,7 @@ type PayOrderData struct { type WaitOrderCallback struct { PublicOrderCallback - Data *PayOrderData `json:"data"` + Data *WaitOrderData `json:"data"` } type WaitOrderData struct { From ae6e3b872c056ea1074118d48300b6a8bb0a6b16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 12 Oct 2022 20:04:01 +0800 Subject: [PATCH 7/9] 1 --- platformapi/tiktok_shop/tiktok_api/api_test.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/platformapi/tiktok_shop/tiktok_api/api_test.go b/platformapi/tiktok_shop/tiktok_api/api_test.go index 67b57526..1ef51b79 100644 --- a/platformapi/tiktok_shop/tiktok_api/api_test.go +++ b/platformapi/tiktok_shop/tiktok_api/api_test.go @@ -1,9 +1,11 @@ package tiktok_api import ( + "fmt" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/globals" "testing" + "time" ) func TestApi(t *testing.T) { @@ -30,3 +32,8 @@ func TestRefaseToken(t *testing.T) { a.CreateToken("41155cd5-d30f-4075-9c44-b75ffa1a84ee") //{"access_token":"37f41ac7-49ac-4848-a0ee-ea86bb0dfd9f","expires_in":519389,"scope":"SCOPE","shop_id":"","shop_name":"抖店开放平台测试专用店","refresh_token":"3dd8f638-fdf1-46e7-b974-88df382f03c6","authority_id" :""} } + +func TestTimeNow(t *testing.T) { + h, m, s := time.Now().Clock() + fmt.Println(h, m, s) +} From c49b25f0fc142d939d1ba9a8b5fc755f30d8029f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 13 Oct 2022 09:50:13 +0800 Subject: [PATCH 8/9] 1 --- .../response/order_orderDetail_response.go | 16 +++---- .../tiktok_shop/tiktok_api/api_test.go | 2 +- platformapi/tiktok_shop/tiktok_api/order.go | 5 +++ platformapi/tiktok_shop/tiktok_api/sku.go | 42 ++++++++++++++----- .../tiktok_shop/tiktok_api/sku_test.go | 32 +++++++++++--- 5 files changed, 72 insertions(+), 25 deletions(-) diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_orderDetail/response/order_orderDetail_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_orderDetail/response/order_orderDetail_response.go index 5ae4bd51..15dc1e4b 100644 --- a/platformapi/tiktok_shop/sdk-golang/api/order_orderDetail/response/order_orderDetail_response.go +++ b/platformapi/tiktok_shop/sdk-golang/api/order_orderDetail/response/order_orderDetail_response.go @@ -219,10 +219,10 @@ type ShopOrderDetail struct { PromotionPayAmount int64 `json:"promotion_pay_amount"` // 收件人电话 PostTel string `json:"post_tel"` - encryptPostTel string `json:"encrypt_post_tel"` + EncryptPostTel string `json:"encrypt_post_tel"` // 收件人姓名 PostReceiver string `json:"post_receiver"` - encryptPostReceiver string `json:"encrypt_post_receiver"` + EncryptPostReceiver string `json:"encrypt_post_receiver"` // 收件人地址 PostAddr *PostAddr `json:"post_addr"` // 预计发货时间,时间戳,秒 @@ -299,7 +299,7 @@ type PostAddr struct { Street *Street `json:"street"` // 详细地址 Detail string `json:"detail"` - encryptDetail string `json:"encrypt_detail"` + EncryptDetail string `json:"encrypt_detail"` } type SkuSpecsItem struct { // 规格名称 @@ -324,7 +324,7 @@ type AccountInfoItem struct { AccountType string `json:"account_type"` // 账号值 AccountId string `json:"account_id"` - encryptAccountId string `json:"encrypt_account_id"` + EncryptAccountId string `json:"encrypt_account_id"` } type LogisticsInfoItem struct { // 物流单号 @@ -551,10 +551,10 @@ type SkuOrderListItem struct { Code string `json:"code"` // 收件人电话 PostTel string `json:"post_tel"` - encryptPostTel string `json:"encrypt_post_tel"` + EncryptPostTel string `json:"encrypt_post_tel"` // 收件人姓名 PostReceiver string `json:"post_receiver"` - encryptPostReceiver string `json:"encrypt_post_receiver"` + EncryptPostReceiver string `json:"encrypt_post_receiver"` // 收件人地址 PostAddr *PostAddr `json:"post_addr"` // 预计发货时间 @@ -741,10 +741,10 @@ type OrderPhaseListItem struct { type UserIdInfo struct { // 证件号 IdCardNo string `json:"id_card_no"` - encryptIdCardNo string `json:"encrypt_id_card_no"` + EncryptIdCardNo string `json:"encrypt_id_card_no"` // 证件姓名 IdCardName string `json:"id_card_name"` - encryptIdCardName string `json:"encrypt_id_card_name"` + EncryptIdCardName string `json:"encrypt_id_card_name"` } type ShopOrderTagUiItem struct { // 标签key diff --git a/platformapi/tiktok_shop/tiktok_api/api_test.go b/platformapi/tiktok_shop/tiktok_api/api_test.go index 1ef51b79..7d92939b 100644 --- a/platformapi/tiktok_shop/tiktok_api/api_test.go +++ b/platformapi/tiktok_shop/tiktok_api/api_test.go @@ -22,7 +22,7 @@ func TestApi(t *testing.T) { func TestQueryOrderDetail(t *testing.T) { token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) - data, err := a.GetTiktokOrderDetail("4988354190732430566") + data, err := a.GetTiktokOrderDetail("4988546918828606694") globals.SugarLogger.Debugf("=====%s", utils.Format4Output(data, false)) globals.SugarLogger.Debugf("=====%s", err) } diff --git a/platformapi/tiktok_shop/tiktok_api/order.go b/platformapi/tiktok_shop/tiktok_api/order.go index 2f7e6097..70829924 100644 --- a/platformapi/tiktok_shop/tiktok_api/order.go +++ b/platformapi/tiktok_shop/tiktok_api/order.go @@ -594,3 +594,8 @@ func (a *API) GetCallbackOrderId(msgId string, data interface{}) (string, *Callb return "", &CallbackResponse{Code: CallbackSuccessCode, Msg: CallbackSuccess} } + +// OrderStatusAndPsInfo 三方配送同步骑手位置信息 +func (a *API) OrderStatusAndPsInfo() error { + return nil +} diff --git a/platformapi/tiktok_shop/tiktok_api/sku.go b/platformapi/tiktok_shop/tiktok_api/sku.go index 16788979..8fc57de8 100644 --- a/platformapi/tiktok_shop/tiktok_api/sku.go +++ b/platformapi/tiktok_shop/tiktok_api/sku.go @@ -292,34 +292,54 @@ func (a *API) GetSkuBrand(categoryId int64) (int64, error) { } // OrderUserInfoDecrypt 用户信息解密 -func (a *API) OrderUserInfoDecrypt(orderId string) { +func (a *API) OrderUserInfoDecrypt(orderId, name, tel, address string) (string, string, string, error) { request := order_batchDecrypt_request.New() cipherInfos := make([]order_batchDecrypt_request.CipherInfosItem, 0, 0) - for i := 0; i < 3; i++ { + for i := 1; i <= 3; i++ { cipher := order_batchDecrypt_request.CipherInfosItem{} cipher.AuthId = orderId switch i { case 1: // 姓名 - cipher.CipherText = `#4/6R5x2e#yNZ5R4x+4YGk4yVVUVj5wDFNcIO8SPEjbXC7v55AV0oJKDafFKn9onnavg==&CgwIARDmDhjXESAEKAESPgo8UJvXDogRQo6o/CTNf5vPfN8ncAvwDTZrf4nw4v5BDusLnWFb0kH6vvl6qtlZ6MwEph9vT9DIHobUFoQxGgA=#1##` + cipher.CipherText = name cipherInfos = append(cipherInfos, cipher) case 2: // 手机号 - cipher.CipherText = `$L2ixwE3gFa/PhQeeN1Hxc0+TIImkbdVAcjdvVK1+BKE=$CT/fyQwDSEZskk3rWaxj5Je4w871eh1YBvge+aAv1chQ8pZsVBvJsQhRj+Rs&CgwIARDmDhjXESAEKAESPgo8Hs17yiBRdtnvUSwCjYO5fFyy/b8/ihLznxEgZeFaSO0LpVZrlIqHcNmBMrh3g0WNi3fLMAwFfi0v8qpoGgA=$1$$` + cipher.CipherText = tel cipherInfos = append(cipherInfos, cipher) case 3: // 地址 - cipher.CipherText = `#UK1DDyGyV7AafNwBv0jMYdu1SxWkQlvD8/jN1W36QM/2y1hzIUVLCYMDhJWgAbEWCYMDUnbMaB6m0Rx7#ztuYzQyi68RWDzQGHNQwgNW4/aC19tCAyTJKZFTA5vd5YdBbzllK6lXCA58ulHB9FyvxzpUDAtWUVgywqCPsaDYsaDTjCo0g4RbUyyuRGoYz/BY=&CgwIARDmDhjXESAEKAESPgo8lmOxB5Al56WzV1wV3mupjuiJEnavXuyPyFoMJ0WexY9pCI56tSyZN78zvqrnqSSLrdt3V4Q0OugOv8seGgA=#1##` + cipher.CipherText = address cipherInfos = append(cipherInfos, cipher) } } request.Param.CipherInfos = cipherInfos result, err := request.Execute(a.accessTokenObj) - fmt.Println(result) - fmt.Println(err) + if err != nil { + return "", "", "", err + } + if result.Code != RequestSuccessCode { + return "", "", "", errors.New(result.SubCode) + } + + var ( + userName, userTel, userAddress = "", "", "" + ) + for _, v := range result.Data.DecryptInfos { + if v.CipherText != "" && v.CipherText == name { + userName = v.DecryptText + } + if v.CipherText != "" && v.CipherText == tel { + userTel = v.DecryptText + } + if v.CipherText != "" && v.CipherText == address { + userAddress = v.DecryptText + } + } + return userName, userTel, userAddress, err } // OrderUserInfoSensitive 用户信息脱敏 -func (a *API) OrderUserInfoSensitive(orderId string) { +func (a *API) OrderUserInfoSensitive(orderId, name, tel, address string) { request := order_batchSensitive_request.New() paramItems := make([]order_batchSensitive_request.CipherInfosItem, 0, 0) @@ -328,13 +348,13 @@ func (a *API) OrderUserInfoSensitive(orderId string) { cipher.AuthId = orderId switch i { case 1: // 姓名 - cipher.CipherText = `#4/6R5x2e#yNZ5R4x+4YGk4yVVUVj5wDFNcIO8SPEjbXC7v55AV0oJKDafFKn9onnavg==&CgwIARDmDhjXESAEKAESPgo8UJvXDogRQo6o/CTNf5vPfN8ncAvwDTZrf4nw4v5BDusLnWFb0kH6vvl6qtlZ6MwEph9vT9DIHobUFoQxGgA=#1##` + cipher.CipherText = name paramItems = append(paramItems, cipher) case 2: // 手机号 - cipher.CipherText = `$L2ixwE3gFa/PhQeeN1Hxc0+TIImkbdVAcjdvVK1+BKE=$CT/fyQwDSEZskk3rWaxj5Je4w871eh1YBvge+aAv1chQ8pZsVBvJsQhRj+Rs&CgwIARDmDhjXESAEKAESPgo8Hs17yiBRdtnvUSwCjYO5fFyy/b8/ihLznxEgZeFaSO0LpVZrlIqHcNmBMrh3g0WNi3fLMAwFfi0v8qpoGgA=$1$$` + cipher.CipherText = tel paramItems = append(paramItems, cipher) case 3: // 地址 - cipher.CipherText = `#UK1DDyGyV7AafNwBv0jMYdu1SxWkQlvD8/jN1W36QM/2y1hzIUVLCYMDhJWgAbEWCYMDUnbMaB6m0Rx7#ztuYzQyi68RWDzQGHNQwgNW4/aC19tCAyTJKZFTA5vd5YdBbzllK6lXCA58ulHB9FyvxzpUDAtWUVgywqCPsaDYsaDTjCo0g4RbUyyuRGoYz/BY=&CgwIARDmDhjXESAEKAESPgo8lmOxB5Al56WzV1wV3mupjuiJEnavXuyPyFoMJ0WexY9pCI56tSyZN78zvqrnqSSLrdt3V4Q0OugOv8seGgA=#1##` + cipher.CipherText = address paramItems = append(paramItems, cipher) } } diff --git a/platformapi/tiktok_shop/tiktok_api/sku_test.go b/platformapi/tiktok_shop/tiktok_api/sku_test.go index 86c2bd1d..724ab830 100644 --- a/platformapi/tiktok_shop/tiktok_api/sku_test.go +++ b/platformapi/tiktok_shop/tiktok_api/sku_test.go @@ -7,6 +7,7 @@ import ( product_addV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_addV2/request" product_editV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_editV2/request" product_editV2_commit_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_editV2_commit/request" + product_listV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_listV2/request" sku_editPrice_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/sku_editPrice/request" sku_syncStock_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/sku_syncStock/request" "git.rosy.net.cn/baseapi/utils" @@ -224,7 +225,7 @@ func TestGetSkuDetail(t *testing.T) { token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) - data, err := a.GetSkuDetail("3576377564144516403", "") + data, err := a.GetSkuDetail("3576590519251398269", "") fmt.Println(err) globals.SugarLogger.Debugf("====%s", utils.Format4Output(data, false)) } @@ -300,13 +301,34 @@ func TestBatchDecrypt(t *testing.T) { token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) - a.OrderUserInfoDecrypt("4988354190732430566") + encrypt_post_tel := `##3aVwfhe5fJHdlO0UijiOA3GbeZYsIZppi+Y9bpYZ9gRBshpl555DP9B1FFp8R0fbyiTaeU9LAck8nkzKNMp5frZUO0w2ba8lsm+1zwYZrBkFlQ==*CgkIARCtHCABKAESPgo8d1IWxRMUZ/3UM2wAbb6m8jXa0z/h/RDf4NnIrUK3Zfiqg+/rrvoo/3DX9DQfmAW/5DkNVk2beqYZx0tYGgA=#1##` + encrypt_post_receiver := `##K3dJts44TlQGmLNQAHud1Iivzu6rWDeFx8EwQYK35oMXVtlLGgN+ZmQDIa7K6rVzXYReq3dgKz8Vi4VGVR8kR45BpHZdaVJUx2tCwM0=*CgkIARCtHCABKAESPgo8X7FrpSxbV2yGA29uxewKEdHW+Rp1tiqWGxRZgwirlJX2uOILTwCWTN6Q1sT3JHeTjXgXslRTEqqWcdd/GgA=#1##` + encrypt_post_name := `` + a.OrderUserInfoDecrypt("4988546918828606694", encrypt_post_name, encrypt_post_tel, encrypt_post_receiver) } -// 脱敏购买用户电话,名字,地址 -func TestOrderUserInfoSensitive(t *testing.T) { +//// 脱敏购买用户电话,名字,地址 +//func TestOrderUserInfoSensitive(t *testing.T) { +// token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` +// +// a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) +// a.OrderUserInfoSensitive("4988354190732430566") +//} + +func TestGetSkuList(t *testing.T) { token := `{"access_token":"a1746210-a8a3-4497-a87b-09d1f10dbb95","expires_in":1665652230,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"c1cf8d88-0983-4f2a-b969-3746fae6b0cd","authority_id":""}` a := New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", token) - a.OrderUserInfoSensitive("4988354190732430566") + a.GetSkuDetailList(&product_listV2_request.ProductListV2Param{ + Status: 0, + CheckStatus: 0, + ProductType: 0, + StartTime: 0, + EndTime: 0, + Page: 1, + Size: 100, + UpdateStartTime: 0, + UpdateEndTime: 0, + //StoreId: 63114504, + }) } From c9da2889c3b473567fcb72f1fcdaeb415bbcb4b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 13 Oct 2022 09:58:17 +0800 Subject: [PATCH 9/9] 1 --- platformapi/tiktok_shop/tiktok_api/order.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformapi/tiktok_shop/tiktok_api/order.go b/platformapi/tiktok_shop/tiktok_api/order.go index 70829924..9182af61 100644 --- a/platformapi/tiktok_shop/tiktok_api/order.go +++ b/platformapi/tiktok_shop/tiktok_api/order.go @@ -596,6 +596,6 @@ func (a *API) GetCallbackOrderId(msgId string, data interface{}) (string, *Callb } // OrderStatusAndPsInfo 三方配送同步骑手位置信息 -func (a *API) OrderStatusAndPsInfo() error { +func (a *API) OrderStatusAndPsInfo(param map[string]interface{}) error { return nil }