package taobao import ( "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/md" "encoding/json" "github.com/syyongx/php2go" "strconv" "strings" ) type UrlInfo struct { CategoryID int `json:"category_id"` CouponClickURL string `json:"coupon_click_url"` CouponEndTime string `json:"coupon_end_time"` CouponInfo string `json:"coupon_info"` CouponRemainCount int `json:"coupon_remain_count"` CouponStartTime string `json:"coupon_start_time"` CouponTotalCount int `json:"coupon_total_count"` ItemID string `json:"item_id"` ItemURL string `json:"item_url"` MaxCommissionRate string `json:"max_commission_rate"` MinCommissionRate string `json:"min_commission_rate"` RewardInfo int `json:"reward_info"` } // 淘宝转链 func (t *TB) ConvertUrlSC(itemId, pid, externalId string) (*md.ConvertedUrls, error) { method := "taobao.tbk.privilege.get" _, siteId, adZoneId := SplitPid(pid) args := map[string]string{ "item_id": itemId, "session": t.UserSID, // 一般用站长就可以转链 "adzone_id": adZoneId, "platform": "2", "site_id": siteId, } if php2go.IsNumeric(itemId) { args["biz_scene_id"] = "2" } if externalId != "" { args["external_id"] = externalId } resp, err := send(args, method, t.Svc_AK, t.Svc_SK) if err != nil { return nil, err } var tmp struct { TbkPrivilegeGetResponse struct { Result struct { Data UrlInfo `json:"data"` } `json:"result"` RequestID string `json:"request_id"` } `json:"tbk_privilege_get_response"` } if err = json.Unmarshal(resp, &tmp); err != nil { return nil, err } url := tmp.TbkPrivilegeGetResponse.Result.Data.ItemURL hasCoupon := false itemUrl := tmp.TbkPrivilegeGetResponse.Result.Data.ItemURL maxCommissionRate := tmp.TbkPrivilegeGetResponse.Result.Data.MaxCommissionRate if tmp.TbkPrivilegeGetResponse.Result.Data.CouponClickURL != "" { hasCoupon = true url = tmp.TbkPrivilegeGetResponse.Result.Data.CouponClickURL } return &md.ConvertedUrls{ ItemId: itemId, URL: url, ItemUrl: itemUrl, ShortenURL: url, NoOpenAppURL: url, AppURL: url, HasCoupon: hasCoupon, CommissionRate: maxCommissionRate, }, nil } func (t *TB) WnConvertUrlSC(itemId, types, pid, externalId string) (*md.ConvertedUrls, error) { method := "taobao.tbk.sc.general.link.convert" _, siteId, adZoneId := SplitPid(pid) args := map[string]string{ "session": t.UserSID, // 一般用站长就可以转链 "adzone_id": adZoneId, "platform": "2", "site_id": siteId, } if types == "1" || types == "4" { // 商品ID列表 args["item_id_list"] = itemId args["biz_scene_id"] = "1" if externalId != "0" && externalId != "" { args["relation_id"] = externalId } } if types == "2" { //物料列表,可以为url或淘口令 args["material_list"] = itemId if externalId != "0" && externalId != "" { args["relation_id"] = externalId } } if types == "3" { // 会场ID列表 args["page_id_list"] = itemId if externalId != "" { args["relation_id"] = externalId } } resp, err := send(args, method, t.Svc_AK, t.Svc_SK) if err != nil { return nil, err } var tmp struct { TbkScGeneralLinkConvertResponse struct { Data struct { MaterialUrlList struct { MaterialUrlList []struct { Msg string `json:"msg"` Code int `json:"code"` PromotionInfoDto struct { CommissionRate string `json:"commission_rate"` } `json:"promotion_info_dto"` CouponInfoDto struct { CouponEndTime string `json:"coupon_end_time"` ActivityId string `json:"activity_id"` CouponRemainCount int `json:"coupon_remain_count"` CouponAmount string `json:"coupon_amount"` CouponStartTime string `json:"coupon_start_time"` CouponDesc string `json:"coupon_desc"` CouponType int `json:"coupon_type"` } `json:"coupon_info_dto"` LinkInfoDto struct { CouponLongUrl string `json:"coupon_long_url"` MaterialType int `json:"material_type"` TpwdOriginUrl string `json:"tpwd_origin_url"` MaterialId string `json:"material_id"` CpsLongUrl string `json:"cps_long_url"` CpsShortTpwd string `json:"cps_short_tpwd"` TkBizType int `json:"tk_biz_type"` CouponShortTpwd string `json:"coupon_short_tpwd"` CpsShortUrl string `json:"cps_short_url"` CouponShortUrl string `json:"coupon_short_url"` CouponFullTpwd string `json:"coupon_full_tpwd"` CpsFullTpwd string `json:"cps_full_tpwd"` } `json:"link_info_dto"` } `json:"material_url_list"` } `json:"material_url_list"` ShopUrlList struct { ShopUrlList []struct { Msg string `json:"msg"` Code int `json:"code"` LinkInfoDto struct { MaterialType int `json:"material_type"` SellerId string `json:"seller_id"` CpsLongUrl string `json:"cps_long_url"` CpsShortTpwd string `json:"cps_short_tpwd"` CpsShortUrl string `json:"cps_short_url"` CpsFullTpwd string `json:"cps_full_tpwd"` } `json:"link_info_dto"` } `json:"shop_url_list"` } `json:"shop_url_list"` EventUrlList struct { EventUrlList []struct { Msg string `json:"msg"` Code int `json:"code"` LinkInfoDto struct { MaterialType int `json:"material_type"` PageId string `json:"page_id"` CpsLongUrl string `json:"cps_long_url"` CpsShortTpwd string `json:"cps_short_tpwd"` CpsShortUrl string `json:"cps_short_url"` CpsFullTpwd string `json:"cps_full_tpwd"` } `json:"link_info_dto"` } `json:"event_url_list"` } `json:"event_url_list"` ItemUrlList struct { ItemUrlList []struct { Msg string `json:"msg"` Code int `json:"code"` PromotionInfoDto struct { CommissionRate string `json:"commission_rate"` } `json:"promotion_info_dto"` CouponInfoDto struct { CouponEndTime string `json:"coupon_end_time"` ActivityId string `json:"activity_id"` CouponRemainCount int `json:"coupon_remain_count"` CouponAmount string `json:"coupon_amount"` CouponStartTime string `json:"coupon_start_time"` CouponDesc string `json:"coupon_desc"` } `json:"coupon_info_dto"` LinkInfoDto struct { CouponLongUrl string `json:"coupon_long_url"` MaterialType int `json:"material_type"` ItemId string `json:"item_id"` CpsLongUrl string `json:"cps_long_url"` CpsShortTpwd string `json:"cps_short_tpwd"` CouponShortTpwd string `json:"coupon_short_tpwd"` CpsShortUrl string `json:"cps_short_url"` CouponShortUrl string `json:"coupon_short_url"` CouponFullTpwd string `json:"coupon_full_tpwd"` CpsFullTpwd string `json:"cps_full_tpwd"` } `json:"link_info_dto"` } `json:"item_url_list"` } `json:"item_url_list"` } `json:"data"` BizErrorDesc int `json:"biz_error_desc"` ResultMsg string `json:"result_msg"` } `json:"tbk_sc_general_link_convert_response"` } if err = json.Unmarshal(resp, &tmp); err != nil { return nil, err } url := "" hasCoupon := false itemUrl := "" maxCommissionRate := "" tkl := "" shortTkl := "" isitem := 0 for _, v := range tmp.TbkScGeneralLinkConvertResponse.Data.ItemUrlList.ItemUrlList { url = v.LinkInfoDto.CouponLongUrl tkl = v.LinkInfoDto.CouponFullTpwd shortTkl = v.LinkInfoDto.CouponShortTpwd if url == "" { url = v.LinkInfoDto.CpsLongUrl tkl = v.LinkInfoDto.CpsFullTpwd shortTkl = v.LinkInfoDto.CpsShortTpwd } if v.LinkInfoDto.CouponLongUrl != "" { hasCoupon = true } itemId = v.LinkInfoDto.ItemId itemUrl = url isitem = 1 maxCommissionRate = v.PromotionInfoDto.CommissionRate } for _, v := range tmp.TbkScGeneralLinkConvertResponse.Data.MaterialUrlList.MaterialUrlList { if v.LinkInfoDto.CouponLongUrl == "" && v.LinkInfoDto.CpsLongUrl == "" { continue } url = v.LinkInfoDto.CouponLongUrl tkl = v.LinkInfoDto.CouponFullTpwd shortTkl = v.LinkInfoDto.CouponShortTpwd if url == "" { url = v.LinkInfoDto.CpsLongUrl tkl = v.LinkInfoDto.CpsFullTpwd shortTkl = v.LinkInfoDto.CpsShortTpwd } if v.LinkInfoDto.CouponLongUrl != "" { hasCoupon = true } //1—单品 2—店铺 3—会场 4-承接开放 5-优惠券 if v.Code == 0 && (v.LinkInfoDto.MaterialType == 1 || v.LinkInfoDto.MaterialType == 0) { itemId = v.LinkInfoDto.MaterialId isitem = 1 } itemUrl = url maxCommissionRate = v.PromotionInfoDto.CommissionRate } if isitem == 0 && len(tmp.TbkScGeneralLinkConvertResponse.Data.MaterialUrlList.MaterialUrlList) > 0 { itemId = "" } for _, v := range tmp.TbkScGeneralLinkConvertResponse.Data.EventUrlList.EventUrlList { url = v.LinkInfoDto.CpsLongUrl tkl = v.LinkInfoDto.CpsFullTpwd shortTkl = v.LinkInfoDto.CpsShortTpwd itemUrl = url } isDown := "0" if tkl == "" { isDown = "2" } if strings.Contains(string(resp), "该商品已下架") { isDown = "1" } return &md.ConvertedUrls{ IsDown: isDown, Tkl: tkl, ShortTkl: shortTkl, ItemId: itemId, URL: url, ItemUrl: itemUrl, ShortenURL: url, NoOpenAppURL: url, AppURL: url, HasCoupon: hasCoupon, CommissionRate: maxCommissionRate, }, nil } type T struct { TbkScActivityInfoGetResponse struct { Data struct { ClickUrl string `json:"click_url"` PageEndTime string `json:"page_end_time"` PageName string `json:"page_name"` PageStartTime string `json:"page_start_time"` TerminalType string `json:"terminal_type"` } `json:"data"` RequestId string `json:"request_id"` } `json:"tbk_sc_activity_info_get_response"` } func (t *TB) ActivityConvertUrlSC(activityMaterialId, pid string, relationId int64) (*md.OfficialRecommendUrl, error) { method := "taobao.tbk.sc.activity.info.get" _, siteId, adZoneId := SplitPid(pid) args := map[string]string{ "activity_material_id": activityMaterialId, "session": t.UserSID, // 一般用站长就可以转链 "adzone_id": adZoneId, "platform": "2", "site_id": siteId, } if relationId > 0 { args["relation_id"] = strconv.FormatInt(relationId, 10) } resp, err := send(args, method, t.Svc_AK, t.Svc_SK) if err != nil { return nil, err } var tmp struct { TbkScActivityInfoGetResponse struct { Data struct { WxQrcodeUrl string `json:"wx_qrcode_url"` WxMiniprogramPath string `json:"wx_miniprogram_path"` Url string `json:"click_url"` ShortClickurl string `json:"short_click_url"` } `json:"data"` } `json:"tbk_sc_activity_info_get_response"` } if err = json.Unmarshal(resp, &tmp); err != nil { return nil, err } url := tmp.TbkScActivityInfoGetResponse.Data.Url if tmp.TbkScActivityInfoGetResponse.Data.ShortClickurl != "" { url = tmp.TbkScActivityInfoGetResponse.Data.ShortClickurl } return &md.OfficialRecommendUrl{ WxQrcodeUrl: tmp.TbkScActivityInfoGetResponse.Data.WxQrcodeUrl, WxMiniprogramPath: tmp.TbkScActivityInfoGetResponse.Data.WxMiniprogramPath, Url: url, }, nil }