|
- package utils
-
- import (
- "applet/app/utils"
- "crypto/hmac"
- "crypto/sha1"
- "encoding/hex"
- "encoding/json"
- "fmt"
- "github.com/syyongx/php2go"
- "sort"
- "strings"
- )
-
- const (
- //1688api接口官方域名请求路径
- API1688OfficialUrl = "http://gw.open.1688.com/openapi/"
- //获取所有选品组列表
- API1688ListCybUserGroupUrlPath = "param2/1/com.alibaba.p4p/alibaba.cps.op.listCybUserGroup/"
- //获取已选商品列表
- API1688ListCybUserGroupFeedUrlPath = "param2/1/com.alibaba.p4p/alibaba.cps.op.listCybUserGroupFeed/"
- //商品列表API(如需要自建选品平台的使用此接口)
- API1688SearchCybOffersUrlPath = "param2/1/com.alibaba.p4p/alibaba.cps.op.searchCybOffers/"
- //商品详情(含运费模版)API
- API1688ProductInfoUrlPath = "param2/1/com.alibaba.product/alibaba.cpsMedia.productInfo/"
- //营销活动信息查询
- API1688QueryOfferDetailActivityUrlPath = "param2/1/com.alibaba.p4p/alibaba.cps.queryOfferDetailActivity/"
- //创建订单前预览接口API
- API1688Preview4CybMediaUrlPath = "param2/1/com.alibaba.trade/alibaba.createOrder.preview4CybMedia/"
- //下单API
- API1688CreateOrder4CybMediaUrlPath = "param2/1/com.alibaba.trade/alibaba.trade.createOrder4CybMedia/"
- //订单取消API
- API1688OrderCancelUrlPath = "param2/1/com.alibaba.trade/alibaba.trade.cancel/"
- //订单查询API
- API1688OrderBuyerViewUrlPath = "param2/1/com.alibaba.trade/alibaba.trade.get.buyerView/"
- //支付API(使用支付宝协议代扣,无需调用此接口)
- API1688AlipayUrlGetUrlPath = "param2/1/com.alibaba.p4p/alibaba.alipay.url.get/"
- //支付宝协议代扣支付
- API1688AliProtocolPayUrlPath = "param2/1/com.alibaba.trade/alibaba.trade.pay.protocolPay/"
- //获取交易订单的物流信息API
- API1688GetLogisticsInfosUrlPath = "param2/1/com.alibaba.logistics/alibaba.trade.getLogisticsInfos.buyerView/"
- //获取交易订单的物流跟踪信息API
- API1688GetLogisticsTraceInfoUrlPath = "param2/1/com.alibaba.logistics/alibaba.trade.getLogisticsTraceInfo.buyerView/"
- //根据类目Id查询类目
- API1688GetCategoryUrlPath = "param2/1/com.alibaba.product/alibaba.category.get/"
- //标题及图片改写(beta)
- API1688CpsMediaProductInfoUrlPath = "param2/1/com.alibaba.p4p/alibaba.cpsMedia.productInfo/"
- //查询退款单详情-根据退款单ID
- API1688RefundOpQueryOrderRefundUrlPath = "param2/1/com.alibaba.trade/alibaba.trade.refund.OpQueryOrderRefund/"
- //创建退款退货申请
- API1688CreateRefundUrlPath = "param2/1/com.alibaba.trade/alibaba.trade.createRefund/"
- //查询退款退货原因(用于创建退款退货)
- API1688GetRefundReasonListUrlPath = "param2/1/com.alibaba.trade/alibaba.trade.getRefundReasonList/"
- //上传退款退货凭证
- API1688UploadRefundVoucherUrlPath = "param2/1/com.alibaba.trade/alibaba.trade.uploadRefundVoucher/"
- //买家提交退款货信息
- API1688RefundReturnGoodsUrlPath = "param2/1/com.alibaba.trade/alibaba.trade.refund.returnGoods/"
- //物流公司列表-自联物流
- API1688OpQueryLogisticCompanyListUrlPath = "param2/1/com.alibaba.logistics/alibaba.logistics.OpQueryLogisticCompanyList.offline/"
- )
-
- //
- var RefundActionMap = map[string]string{
- "BUYER_APPLY_REFUND": "买家申请退款",
- "BUYER_RECEIVE_CLOSE": "买家确认收货关闭",
- "SELLER_SEND_GOODS_CLOSE": "卖家发货关闭",
- "BUYER_CANCEL_REFUND_CLOSE": "买家撤销退款申请关闭",
- "BUYER_UPLOAD_BILL": "买家上传凭证",
- "SELLER_UPLOAD_BILL": "卖家上传凭证",
- "SELLER_REJECT_REFUND": "卖家拒绝退款",
- "SELLER_AGREE_REFUND": "卖家同意退款",
- "SELLER_RECEIVE_GOODS": "卖家确认收货",
- "BUYER_SEND_GOODS": "买家声明发货",
- "BUYER_MODIFY_REFUND_PROTOCOL": "买家修改退款协议",
- "BUYER_APPLY_SUPPORT": "买家申请客服介入",
- "SELLER_APPLY_SUPPORT": "卖家申请客服介入",
- "SYSTEM_AGREE_REFUND_PROTOCOL": "系统超时同意退款协议",
- "SYSTEM_AGREE_REFUND": "系统超时同意退款,即退款成功",
- "SYSTEM_SEND_GOODS": "系统超时退货,主交易流程的退货",
- "SYSTEM_MODIFY_REFUND_PROTOCOL": "系统超时修改协议",
- "SYSTEM_NOTIFY_APPLY_SUPPORT": "系统通知申请客服介入",
- "SELLER_AGREE_REFUND_PROCOTOL": "卖家同意退款协议",
- "SELLER_REJECT_REFUND_PROCOTOL": "卖家拒绝退款协议",
- "CRM_APPLY_TIMEOUT_CLOSE": "申请客服介入超时关闭目前仅售后业务在用",
- "CRM_APPLY_SUPPORT": "CRM申请介入",
- "CRM_INTERVENE_TASK": "CRM介入处理",
- "CRM_DISMISS_TASK": "CRM撤销工单",
- "CRM_FINISH_TASK": "CRM完结工单",
- "BUYER_STEP_PAY_ORDER_CLOSE": "买家支付,退款关闭,分阶段订单情况",
- "BUYER_STEP_CONFIRM_CLOSE": "买家确认,退款关闭,分阶段订单情况",
- "BUYER_CLOSE_TRADE_CLOSE": "买家终止交易,退款关闭,分阶段订单情况",
- "SELLER_CONFIRM_ORDER_CLOSE": "卖家确认,退款关闭,分阶段订单情况",
- "SELLER_STEP_PUSH_CLOSE": "卖家推进,退款关闭,分阶段订单情况",
- }
-
- type General1688CallBack struct {
- Data interface{} `json:"data"`
- GmtBorn int64 `json:"gmtBorn"`
- MsgID int64 `json:"msgId"`
- Type string `json:"type"`
- UserInfo string `json:"userInfo"`
- }
-
- type OrderAnnounceSendGoodsData struct {
- BuyerMemberID string `json:"buyerMemberId" label:"买家中文站会员ID"`
- BuyerOpenUID string `json:"buyerOpenUid"`
- OrderID int64 `json:"orderId" label:"订单ID"`
- CurrentStatus string `json:"currentStatus" label:"当前订单状态,状态值为waitbuyerreceive"`
- MsgSendTime string `json:"msgSendTime" label:"消息发送时间"`
- }
- type OrderBuyerViewOrderRefundAfterSales struct {
- BuyerMemberID string `json:"buyerMemberId" label:"买家中文站会员ID"`
- OrderID int64 `json:"orderId" label:"订单ID"`
- CurrentStatus string `json:"currentStatus" label:"当前订单状态"`
- RefundAction string `json:"refundAction" label:"退款操作"`
- SellerMemberID string `json:"sellerMemberId" label:"卖家中文站会员ID"`
- MsgSendTime string `json:"msgSendTime" label:"消息发送时间"`
- Operator string `json:"operator" label:"操作的发起人,buyer(买家),seller(卖家),system(系统)"`
- RefundID string `json:"refundId" label:"退款单ID"`
- }
- type OrderBuyerViewOrderBuyerRefundInSales struct {
- BuyerMemberID string `json:"buyerMemberId" label:"买家中文站会员ID"`
- OrderID int64 `json:"orderId" label:"订单ID"`
- CurrentStatus string `json:"currentStatus" label:"当前订单状态"`
- RefundAction string `json:"refundAction" label:"退款操作"`
- SellerMemberID string `json:"sellerMemberId" label:"卖家中文站会员ID"`
- MsgSendTime string `json:"msgSendTime" label:"消息发送时间"`
- Operator string `json:"operator" label:"操作的发起人,buyer(买家),seller(卖家),system(系统)"`
- RefundID string `json:"refundId" label:"退款单ID"`
- }
-
- func HmacSHA1(key string, data string) string {
- mac := hmac.New(sha1.New, []byte(key))
- mac.Write([]byte(data))
- return hex.EncodeToString(mac.Sum(nil))
- }
-
- //shejiao
- //urlPath =
- //appKey = 2821195
- //appSecret = qaMVhzoS3nT
- //access_token = 2101cd32-8762-49ed-a87b-94e25ab0c40d
-
- //fenxiao
- //appKey = 4535867
- //appSecret = lKXjQAP5EK
- //access_token = 6ddddfe6-d0cd-4e58-abbf-a265eb41be0b
- //Refresh Token = 5d358adb-3184-4411-8197-e152eed9d198
- func API1688(url, urlPath, appKey, appSecret string, parameters []string, parameterMap map[string]interface{}) (map[string]interface{}, error) {
- urlPath = urlPath + appKey
- assembleParameter := ""
- parameterUrl := ""
- //进行切片排序
- sort.Strings(parameters)
- for _, parameter := range parameters {
- switch parameterMap[parameter].(type) {
- case string:
- str := utils.AnyToString(parameterMap[parameter])
- fmt.Println(str)
- assembleParameter = assembleParameter + parameter + str
- if parameter == "imageData" {
- str = php2go.URLEncode(str)
- }
- if parameter == "addressParam" {
- str = php2go.URLEncode(str)
- }
- if parameterUrl == "" {
- parameterUrl = "?" + parameter + "=" + str
- } else {
- parameterUrl = parameterUrl + "&" + parameter + "=" + str
- }
- default:
- str := utils.SerializeStr(parameterMap[parameter])
- fmt.Println(str)
- assembleParameter = assembleParameter + parameter + str
- if parameter == "imageData" {
- str = php2go.URLEncode(str)
- fmt.Println("URLEncode", str)
- }
- if parameter == "addressParam" {
- str = php2go.URLEncode(str)
- }
- if parameterUrl == "" {
- parameterUrl = "?" + parameter + "=" + str
- } else {
- parameterUrl = parameterUrl + "&" + parameter + "=" + str
- }
- }
- }
- hmacSHA1 := HmacSHA1(appSecret, urlPath+assembleParameter)
- toUpper := strings.ToUpper(hmacSHA1)
- url = url + urlPath + parameterUrl + "&_aop_signature=" + toUpper
- headers := map[string]string{
- "Content-Type": "application/x-www-form-urlencoded",
- "Content-Length": utils.AnyToString(len(url)),
- //"Charset": "utf-8",
- }
- utils.FilePutContents("API1688", utils.SerializeStr(map[string]interface{}{
- "url": url,
- "headers": headers,
- }))
- res, err := utils.CurlGet(url, headers)
- if err != nil {
- return nil, err
- }
- resp := make(map[string]interface{})
- if err := json.Unmarshal(res, &resp); err != nil {
- return nil, err
- }
- return resp, nil
-
- }
- func GetCategoryFrom1688(appKey, appSecret, categoryID string) (map[string]interface{}, error) {
- if categoryID == "" {
- categoryID = "0"
- }
- api1688, err := API1688(API1688OfficialUrl, API1688GetCategoryUrlPath, appKey, appSecret, []string{"categoryID"}, map[string]interface{}{
- "categoryID": categoryID,
- })
- return api1688, err
- }
-
- type SearchCybOffersReq struct {
- AccessToken string `json:"access_token"`
-
- BizType string `json:"biztype"`
- Page string `json:"page"`
- PageSize string `json:"pageSize"`
- PostCategoryId string `json:"postCategoryId"`
- KeyWords string `json:"keyWords"`
- PriceStart string `json:"priceStart"` //最低价
- PriceEnd string `json:"priceEnd"` //最高价
- SortType string `json:"sortType"` //normal:综合 saleQuantity:销量
- DescendOrder bool `json:"descendOrder"` //是否倒序;正序: false;倒序:true
- OfferIds string `json:"offerIds"`
- }
-
- func GetSearchCybOffersFrom1688(appKey, appSecret string, req *SearchCybOffersReq) (map[string]interface{}, error) {
- if req.AccessToken == "" {
- req.AccessToken = "2101cd32-8762-49ed-a87b-94e25ab0c40d"
- }
- reqMap := utils.Struct2Map(req)
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688SearchCybOffersUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- func GetProductInfoFrom1688(appKey, appSecret, accessToken, offerId string) (map[string]interface{}, error) {
- if accessToken == "" {
- accessToken = "2101cd32-8762-49ed-a87b-94e25ab0c40d"
- }
- reqMap := make(map[string]interface{})
- reqMap["access_token"] = accessToken
- reqMap["offerId"] = utils.StrToInt64(offerId)
- reqMap["needCpsSuggestPrice"] = true
- reqMap["needIntelligentInfo"] = true
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688ProductInfoUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- func GetListCybUserGroupFrom1688(appKey, appSecret, accessToken, pageNo, pageSize string) (map[string]interface{}, error) {
- if accessToken == "" {
- accessToken = "2101cd32-8762-49ed-a87b-94e25ab0c40d"
- }
- reqMap := make(map[string]interface{})
- reqMap["access_token"] = accessToken
- reqMap["pageNo"] = pageNo
- reqMap["pageSize"] = pageSize
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688ListCybUserGroupUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- type ListCybUserGroupFeedReq struct {
- AccessToken string `json:"access_token" form:"access_token"`
-
- GroupId int64 `json:"groupId" form:"groupId"` //选品组id,不传表示取默认选品组下商品;
- PageNo int `json:"pageNo" form:"pageNo"`
- PageSize string `json:"pageSize" form:"pageSize"`
- FeedId int64 `json:"feedId" form:"feedId"` //商品id
- Title string `json:"title" form:"title"` //商品标题模糊搜索
- }
-
- func GetListCybUserGroupFeedFrom1688(appKey, appSecret string, req *ListCybUserGroupFeedReq) (map[string]interface{}, error) {
- if req.AccessToken == "" {
- req.AccessToken = "2101cd32-8762-49ed-a87b-94e25ab0c40d"
- }
- reqMap := utils.Struct2Map(req)
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if utils.AnyToString(value) != "" && utils.AnyToString(value) != "0" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688ListCybUserGroupFeedUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- type AddressParam struct {
- AddressId int64 `json:"addressId" label:"收货地址id,是否必填:否"`
- FullName string `json:"fullName" label:"收货人姓名,是否必填:是"`
- Mobile string `json:"mobile" label:"手机 15251667788,是否必填:是"`
- Phone string `json:"phone" label:"电话 0517-88990077,是否必填:是"`
- PostCode string `json:"postCode" label:"邮编,是否必填:是"`
- CityText string `json:"cityText" label:"市文本,是否必填:是"`
- ProvinceText string `json:"provinceText" label:"省份文本,是否必填:是"`
- AreaText string `json:"areaText" label:"区文本,是否必填:是"`
- TownText string `json:"townText" label:"镇文本,是否必填:是"`
- Address string `json:"address" label:"街道地址,是否必填:是"`
- DistrictCode string `json:"districtCode" label:"地址编码,是否必填:是"`
- }
- type CargoParam struct {
- OfferId int64 `json:"offerId" label:"商品对应的offer id,是否必填:是"`
- SpecId string `json:"specId" label:"商品规格id 无sku商品不传,是否必填:否"`
- Quantity float64 `json:"quantity" label:"商品数量(计算金额用),是否必填:是"`
- }
- type Preview4CybMediaReq struct {
- AddressParam AddressParam `json:"addressParam" label:"收货地址信息,是否必填:是"`
- CargoParamList []*CargoParam `json:"cargoParamList" label:"商品信息,是否必填:是"`
- AccessToken string `json:"access_token"`
- Flow string `json:"flow" label:"不传,价格逻辑由useChannelPrice控制;传入general使用批发价,即useChannelPrice的价格逻辑失效;传入paired使用火拼价,若该商品未参与伙拼,则下单失败。
- general(批发),paired(火拼),是否必填:否"`
- UseChannelPrice bool `json:"useChannelPrice" label:"是否走渠道专属价,传true优先使用渠道传享价,不传或者传false则不走渠道专享价,走普通的分销价,是否必填:否"`
- }
-
- type Cargo struct {
- Amount float64 `json:"amount"`
- FinalUnitPrice float64 `json:"finalUnitPrice"`
- SpecID string `json:"specId"`
- SkuID int64 `json:"skuId"`
- OfferID int64 `json:"offerId"`
- CargoPromotionList []interface{} `json:"cargoPromotionList"`
- }
- type TradeModel struct {
- TradeWay string `json:"tradeWay"`
- Name string `json:"name"`
- TradeType string `json:"tradeType"`
- Description string `json:"description"`
- OpSupport bool `json:"opSupport"`
- }
- type ShopPromotion struct {
- PromotionId string `json:"promotionId"`
- Selected bool `json:"selected"`
- Text string `json:"text"`
- Desc string `json:"desc"`
- FreePostage bool `json:"freePostage"`
- DiscountFee int64 `json:"discountFee"`
- }
- type OrderPreviewResuslt struct {
- TradeModeNameList []string `json:"tradeModeNameList"`
- Status bool `json:"status"`
- SumPayment int `json:"sumPayment"`
- SumCarriage int `json:"sumCarriage"`
- SumPaymentNoCarriage int `json:"sumPaymentNoCarriage"`
- FlowFlag string `json:"flowFlag"`
- Message string `json:"message"`
- ResultCode string `json:"resultCode"`
- CargoList []Cargo `json:"cargoList"`
- ShopPromotionList []ShopPromotion `json:"shopPromotionList"`
- TradeModelList []TradeModel `json:"tradeModelList"`
- }
-
- type Preview4CybMediaResp struct {
- OrderPreviewResuslt []OrderPreviewResuslt `json:"orderPreviewResuslt"`
- Success bool `json:"success"`
- ErrorCode string `json:"errorCode"`
- ErrorMsg string `json:"errorMsg"`
- PostFeeByDescOfferList []int64 `json:"postFeeByDescOfferList"`
- ConsignOfferList []int64 `json:"consignOfferList"`
- }
-
- func Preview4CybMedia(appKey, appSecret string, req *Preview4CybMediaReq) (map[string]interface{}, error) {
- reqMap := utils.Struct2Map(req)
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688Preview4CybMediaUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- type CreateOrder4CybMediaReq struct {
- AddressParam AddressParam `json:"addressParam" label:"收货地址信息,是否必填:是"`
- CargoParamList []*CargoParam `json:"cargoParamList" label:"商品信息,是否必填:是"`
- AccessToken string `json:"access_token"`
- OuterOrderInfo string `json:"outerOrderInfo" label:"机构的订单信息,json格式,如果校验不通过,不能创建订单。业务线原因机构订单信息不能放在上面的下单参数结构体中,只能新增该字段用于机构订单信息回写,没有幂等校验,纯记录统计分析。mediaOrderId:机构订单号;phone:电话;offers.id:Long,1688商品id;offers.specId:String,1688商品specId(可能无);offers.price:Long,媒体溢价单价(单位分);offers.num:Long,售卖数量`
- }
- type OuterOrderInfo struct {
- MediaOrderID int64 `json:"mediaOrderId" label:"业务产生的订单id,唯一"`
- Phone string `json:"phone"`
- Offers []*Offer `json:"offers"`
- }
- type Offer struct {
- ID int64 `json:"id" label:"1688云链的产品的offerId,对应goods表的cloud_chain_goods_id"` //1688云链的产品的offerId,对应goods表的cloud_chain_goods_id
- SpecID string `json:"specId" label:"1688云链的sku的specId,对应sku表的specId"` //1688云链的sku的specId,对应sku表的specId
- Price float64 `json:"price" label:"业务销售金额"` //业务销售金额
- Num float64 `json:"num" label:"销售数量"` //销售数量
- }
-
- func CreateOrder4CybMedia(appKey, appSecret string, req *CreateOrder4CybMediaReq, outerOrderInfo *OuterOrderInfo) (map[string]interface{}, error) {
- req.OuterOrderInfo = utils.SerializeStr(outerOrderInfo)
- reqMap := utils.Struct2Map(req)
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688CreateOrder4CybMediaUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- func AliProtocolPay(appKey, appSecret, accessToken, orderId string) (map[string]interface{}, error) {
- api1688, err := API1688(API1688OfficialUrl, API1688AliProtocolPayUrlPath, appKey, appSecret, []string{"orderId", "access_token"}, map[string]interface{}{
- "orderId": utils.StrToInt64(orderId),
- "access_token": accessToken,
- })
- return api1688, err
- }
-
- type OrderCancel1688 struct {
- TradeID int64 `json:"tradeID" label:"交易id,订单号"`
- CancelReason string `json:"cancelReason" label:"原因描述;buyerCancel:买家取消订单;sellerGoodsLack:卖家库存不足;other:其它"`
- Remark string `json:"remark" label:"备注" `
- }
-
- func OrderCancel(appKey, appSecret, accessToken string, req *OrderCancel1688) (map[string]interface{}, error) {
- if accessToken == "" {
- accessToken = "2101cd32-8762-49ed-a87b-94e25ab0c40d"
- }
- reqMap := utils.Struct2Map(req)
- reqMap["access_token"] = accessToken
- reqMap["webSite"] = "1688"
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688OrderCancelUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- type OrderGetLogisticsInfosResp struct {
- Result []struct {
- LogisticsBillNo string `json:"logisticsBillNo"`
- LogisticsCompanyID string `json:"logisticsCompanyId"`
- LogisticsCompanyName string `json:"logisticsCompanyName"`
- LogisticsID string `json:"logisticsId"`
- OrderEntryIds string `json:"orderEntryIds"`
- Receiver struct {
- Encrypt string `json:"encrypt"`
- ReceiverAddress string `json:"receiverAddress"`
- ReceiverCity string `json:"receiverCity"`
- ReceiverCityCode string `json:"receiverCityCode"`
- ReceiverCounty string `json:"receiverCounty"`
- ReceiverCountyCode string `json:"receiverCountyCode"`
- ReceiverMobile string `json:"receiverMobile"`
- ReceiverName string `json:"receiverName"`
- ReceiverPhone string `json:"receiverPhone"`
- ReceiverProvince string `json:"receiverProvince"`
- ReceiverProvinceCode string `json:"receiverProvinceCode"`
- } `json:"receiver"`
- Remarks string `json:"remarks"`
- SendGoods []struct {
- GoodName string `json:"goodName"`
- Quantity string `json:"quantity"`
- Unit string `json:"unit"`
- } `json:"sendGoods"`
- Sender struct {
- Encrypt string `json:"encrypt"`
- SenderAddress string `json:"senderAddress"`
- SenderCity string `json:"senderCity"`
- SenderCityCode string `json:"senderCityCode"`
- SenderCounty string `json:"senderCounty"`
- SenderCountyCode string `json:"senderCountyCode"`
- SenderMobile string `json:"senderMobile"`
- SenderName string `json:"senderName"`
- SenderProvince string `json:"senderProvince"`
- SenderProvinceCode string `json:"senderProvinceCode"`
- } `json:"sender"`
- Status string `json:"status"`
- } `json:"result"`
- Success bool `json:"success"`
- }
-
- func OrderGetLogisticsInfos(appKey, appSecret, accessToken string, ordId int64) (map[string]interface{}, error) {
- api1688, err := API1688(API1688OfficialUrl, API1688GetLogisticsInfosUrlPath, appKey, appSecret, []string{"orderId", "access_token", "webSite"}, map[string]interface{}{
- "orderId": ordId,
- "access_token": accessToken,
- "webSite": 1688,
- })
- return api1688, err
- }
-
- func OrderGetLogisticsTraceInfo(appKey, appSecret, accessToken string, ordId int64) (map[string]interface{}, error) {
- api1688, err := API1688(API1688OfficialUrl, API1688GetLogisticsTraceInfoUrlPath, appKey, appSecret, []string{"orderId", "access_token", "webSite"}, map[string]interface{}{
- "orderId": ordId,
- "access_token": accessToken,
- "webSite": 1688,
- })
- return api1688, err
- }
-
- type GetRefundReasonList1688Req struct {
- OrderId int64 `json:"orderId" label:"主订单id"`
- OrderEntryIds []int64 `json:"orderEntryIds" label:"子订单id,无子订单的等于主订单编号"`
- //售中等待买家发货:”refundWaitSellerSend"; 售中等待买家收货:"refundWaitBuyerReceive"; 售中已收货(未确认完成交易):"refundBuyerReceived" 售后未收货:"aftersaleBuyerNotReceived"; 售后已收到货:"aftersaleBuyerReceived"
- GoodsStatus string `json:"goodsStatus" label:"货物状态:售中等待买家发货:”refundWaitSellerSend"; 售中等待买家收货:"refundWaitBuyerReceive"; 售中已收货(未确认完成交易):"refundBuyerReceived" 售后未收货:"aftersaleBuyerNotReceived"; 售后已收到货:"aftersaleBuyerReceived"" `
- }
-
- func GetRefundReasonList(appKey, appSecret, accessToken string, req *GetRefundReasonList1688Req) (map[string]interface{}, error) {
- if accessToken == "" {
- accessToken = "2101cd32-8762-49ed-a87b-94e25ab0c40d"
- }
- if len(req.OrderEntryIds) == 0 {
- req.OrderEntryIds = append(req.OrderEntryIds, req.OrderId)
- }
- reqMap := utils.Struct2Map(req)
- reqMap["access_token"] = accessToken
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688GetRefundReasonListUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- func UploadRefundVoucher(appKey, appSecret, accessToken string, imageData []byte) (map[string]interface{}, error) {
- api1688, err := API1688(API1688OfficialUrl, API1688UploadRefundVoucherUrlPath, appKey, appSecret, []string{"access_token", "imageData"}, map[string]interface{}{
- "access_token": accessToken,
- "imageData": imageData,
- })
- return api1688, err
- }
-
- type CreateRefundReq struct {
- OrderId int64 `json:"orderId" label:"主订单id"`
- OrderEntryIds []int64 `json:"orderEntryIds" label:"子订单id,无子订单的等于主订单编号"`
- DisputeRequest string `json:"disputeRequest" label:"退款/退款退货。只有已收到货,才可以选择退款退货。" sample:" 退款:refund; 退款退货:returnRefund" `
- ApplyPayment int64 `json:"applyPayment" label:"退款金额(单位:分)。不大于实际付款金额;等待卖家发货时,必须为商品的实际付款金额。" sample:""`
- ApplyCarriage int64 `json:"applyCarriage" label:"退运费金额(单位:分)。" sample:""`
- ApplyReasonId int64 `json:"applyReasonId" label:"退款原因id(从API getRefundReasonList获取)" sample:""`
- Description string `json:"description" label:"退款申请理由,2-150字" sample:""`
- //售中等待买家发货:”refundWaitSellerSend"; 售中等待买家收货:"refundWaitBuyerReceive"; 售中已收货(未确认完成交易):"refundBuyerReceived" 售后未收货:"aftersaleBuyerNotReceived"; 售后已收到货:"aftersaleBuyerReceived"
- GoodsStatus string `json:"goodsStatus" label:"货物状态:售中等待买家发货:”refundWaitSellerSend"; 售中等待买家收货:"refundWaitBuyerReceive"; 售中已收货(未确认完成交易):"refundBuyerReceived" 售后未收货:"aftersaleBuyerNotReceived"; 售后已收到货:"aftersaleBuyerReceived"" `
- Vouchers []string `json:"vouchers" label:"凭证图片URLs。1-5张,必须使用API uploadRefundVoucher返回的“图片域名/相对路径”" sample:""`
- }
-
- type CreateRefundResult struct {
- Code string `json:"code"`
- Message string `json:"message"`
- Result struct {
- RefundID string `json:"refundId"`
- } `json:"result"`
- Success bool `json:"success"`
- }
-
- func CreateRefund(appKey, appSecret, accessToken string, req *CreateRefundReq) (map[string]interface{}, error) {
- if accessToken == "" {
- accessToken = "2101cd32-8762-49ed-a87b-94e25ab0c40d"
- }
- if len(req.OrderEntryIds) == 0 {
- req.OrderEntryIds = append(req.OrderEntryIds, req.OrderId)
- }
- reqMap := utils.Struct2Map(req)
- reqMap["access_token"] = accessToken
- if len(req.Vouchers) == 0 {
- delete(reqMap, "vouchers")
- }
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688CreateRefundUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- type RefundReturnGoodsReq struct {
- RefundId string `json:"refundId" label:"退款单号,TQ开头"`
- LogisticsCompanyNo string `json:"logisticsCompanyNo" label:"物流公司编码,调用alibaba.logistics.OpQueryLogisticCompanyList.offline接口查询"`
- FreightBill string `json:"freightBill" label:"物流公司运单号,请准确填写,否则卖家有权拒绝退款" `
- Description string `json:"description" label:"发货说明,内容在2-200个字之间" sample:""`
- Vouchers []string `json:"vouchers" label:"凭证图片URLs。1-5张,必须使用API uploadRefundVoucher返回的“图片域名/相对路径”" sample:""`
- }
- type RefundReturnGoodsResp struct {
- Result struct {
- ErrorCode string `json:"errorCode"`
- ErrorInfo string `json:"errorInfo"`
- Success bool `json:"success"`
- } `json:"result"`
- }
-
- func RefundReturnGoods(appKey, appSecret, accessToken string, req *RefundReturnGoodsReq) (*RefundReturnGoodsResp, error) {
- if accessToken == "" {
- accessToken = "2101cd32-8762-49ed-a87b-94e25ab0c40d"
- }
- reqMap := utils.Struct2Map(req)
- reqMap["access_token"] = accessToken
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688RefundReturnGoodsUrlPath, appKey, appSecret, parameters, reqMap)
- var resp RefundReturnGoodsResp
- resp.Result.Success = false
- utils.Unserialize(utils.Serialize(api1688), &resp)
- return &resp, err
- }
-
- func OpQueryLogisticCompanyList(appKey, appSecret, accessToken string) (map[string]interface{}, error) {
- if accessToken == "" {
- accessToken = "2101cd32-8762-49ed-a87b-94e25ab0c40d"
- }
- reqMap := make(map[string]interface{})
- reqMap["access_token"] = accessToken
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688OpQueryLogisticCompanyListUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- type OrderDetailsResp struct {
- Result Result `json:"result"`
- Success string `json:"success"`
- }
- type Result struct {
- BaseInfo BaseInfo `json:"baseInfo"`
- ExtAttributes []interface{} `json:"extAttributes"`
- GuaranteesTerms GuaranteesTerms `json:"guaranteesTerms"`
- NativeLogistics NativeLogistics `json:"nativeLogistics"`
- OrderBizInfo OrderBizInfo `json:"orderBizInfo"`
- OrderRateInfo OrderRateInfo `json:"orderRateInfo"`
- ProductItems []ProductItem `json:"productItems"`
- TradeTerms []TradeTerm `json:"tradeTerms"`
- }
- type BaseInfo struct {
- BusinessType string `json:"businessType"`
- BuyerContact struct {
- CompanyName string `json:"companyName"`
- ImInPlatform string `json:"imInPlatform"`
- Name string `json:"name"`
- Phone string `json:"phone"`
- } `json:"buyerContact"`
- BuyerID string `json:"buyerID"`
- BuyerLoginID string `json:"buyerLoginId"`
- CloseOperateType string `json:"closeOperateType"`
- CouponFee int `json:"couponFee"`
- CreateTime string `json:"createTime"`
- Discount int `json:"discount"`
- FlowTemplateCode string `json:"flowTemplateCode"`
- ID int64 `json:"id"`
- IDOfStr string `json:"idOfStr"`
- ModifyTime string `json:"modifyTime"`
- OverSeaOrder bool `json:"overSeaOrder"`
- PayChannelCodeList []interface{} `json:"payChannelCodeList"`
- PayChannelList []interface{} `json:"payChannelList"`
- PayTimeout int `json:"payTimeout"`
- PayTimeoutType int `json:"payTimeoutType"`
- ReceiverInfo struct {
- ToArea string `json:"toArea"`
- ToDivisionCode string `json:"toDivisionCode"`
- ToFullName string `json:"toFullName"`
- ToMobile string `json:"toMobile"`
- ToPhone string `json:"toPhone"`
- ToPost string `json:"toPost"`
- } `json:"receiverInfo"`
- Refund int `json:"refund"`
- RefundPayment int `json:"refundPayment"`
- SellerContact struct {
- CompanyName string `json:"companyName"`
- ImInPlatform string `json:"imInPlatform"`
- Name string `json:"name"`
- Phone string `json:"phone"`
- } `json:"sellerContact"`
- SellerID string `json:"sellerID"`
- SellerLoginID string `json:"sellerLoginId"`
- SellerOrder bool `json:"sellerOrder"`
- ShippingFee int `json:"shippingFee"`
- Status string `json:"status"`
- StepPayAll bool `json:"stepPayAll"`
- SumProductPayment float64 `json:"sumProductPayment"`
- TotalAmount float64 `json:"totalAmount"`
- TradeType string `json:"tradeType"`
- TradeTypeCode string `json:"tradeTypeCode"`
- TradeTypeDesc string `json:"tradeTypeDesc"`
- }
- type GuaranteesTerms struct {
- AssuranceInfo string `json:"assuranceInfo"`
- AssuranceType string `json:"assuranceType"`
- QualityAssuranceType string `json:"qualityAssuranceType"`
- }
- type NativeLogistics struct {
- Address string `json:"address"`
- Area string `json:"area"`
- AreaCode string `json:"areaCode"`
- City string `json:"city"`
- ContactPerson string `json:"contactPerson"`
- Mobile string `json:"mobile"`
- Province string `json:"province"`
- Telephone string `json:"telephone"`
- Zip string `json:"zip"`
- }
- type OrderBizInfo struct {
- CreditOrder bool `json:"creditOrder"`
- OdsCyd bool `json:"odsCyd"`
- }
- type OrderRateInfo struct {
- BuyerRateStatus int `json:"buyerRateStatus"`
- SellerRateStatus int `json:"sellerRateStatus"`
- }
- type ProductItem struct {
- EntryDiscount int `json:"entryDiscount"`
- GmtCreate string `json:"gmtCreate"`
- GmtModified string `json:"gmtModified"`
- GmtPayExpireTime string `json:"gmtPayExpireTime"`
- GuaranteesTerms []struct {
- AssuranceInfo string `json:"assuranceInfo"`
- AssuranceType string `json:"assuranceType"`
- QualityAssuranceType string `json:"qualityAssuranceType"`
- } `json:"guaranteesTerms"`
- ItemAmount float64 `json:"itemAmount"`
- LogisticsStatus int `json:"logisticsStatus"`
- Name string `json:"name"`
- Price float64 `json:"price"`
- ProductCargoNumber string `json:"productCargoNumber"`
- ProductID int64 `json:"productID"`
- ProductImgURL []string `json:"productImgUrl"`
- ProductSnapshotURL string `json:"productSnapshotUrl"`
- Quantity int `json:"quantity"`
- QuantityFactor int `json:"quantityFactor"`
- Refund int `json:"refund"`
- Status string `json:"status"`
- StatusStr string `json:"statusStr"`
- SubItemID int64 `json:"subItemID"`
- SubItemIDString string `json:"subItemIDString"`
- Type string `json:"type"`
- Unit string `json:"unit"`
- }
- type TradeTerm struct {
- CardPay bool `json:"cardPay"`
- ExpressPay bool `json:"expressPay"`
- PayStatus string `json:"payStatus"`
- PayStatusDesc string `json:"payStatusDesc"`
- PayTime string `json:"payTime"`
- PayWay string `json:"payWay"`
- PayWayDesc string `json:"payWayDesc"`
- PhasAmount float64 `json:"phasAmount"`
- Phase int64 `json:"phase"`
- }
-
- func OrderDetails(appKey, appSecret, accessToken string, ordId int64) (map[string]interface{}, error) {
- if accessToken == "" {
- accessToken = "2101cd32-8762-49ed-a87b-94e25ab0c40d"
- }
- reqMap := make(map[string]interface{})
- reqMap["access_token"] = accessToken
- reqMap["webSite"] = "1688"
- reqMap["orderId"] = ordId
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688OrderBuyerViewUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- type OrderAfterSaleDetailsResp struct {
- Result OrderAfterSaleDetailsRespResult `json:"result"`
- }
- type OrderAfterSaleDetailsRespResult struct {
- OpOrderRefundModelDetail OpOrderRefundModelDetail `json:"opOrderRefundModelDetail"`
- }
- type OpOrderRefundModelDetail struct {
- AlipayPaymentID string `json:"alipayPaymentId"`
- ApplyCarriage int `json:"applyCarriage"`
- ApplyPayment int `json:"applyPayment"`
- ApplyReason string `json:"applyReason"`
- ApplyReasonID int `json:"applyReasonId"`
- ApplySubReasonID int `json:"applySubReasonId"`
- BuyerLoginID string `json:"buyerLoginId"`
- BuyerMemberID string `json:"buyerMemberId"`
- BuyerSendGoods bool `json:"buyerSendGoods"`
- BuyerUserID int `json:"buyerUserId"`
- CanRefundPayment int `json:"canRefundPayment"`
- CrmModifyRefund bool `json:"crmModifyRefund"`
- DisputeRequest int `json:"disputeRequest"`
- DisputeType int `json:"disputeType"`
- ExtInfo ExtInfo `json:"extInfo"`
- FrozenFund int `json:"frozenFund"`
- GmtApply string `json:"gmtApply"`
- GmtCreate string `json:"gmtCreate"`
- GmtModified string `json:"gmtModified"`
- GmtTimeOut string `json:"gmtTimeOut"`
- GoodsReceived bool `json:"goodsReceived"`
- GoodsStatus int `json:"goodsStatus"`
- ID int64 `json:"id"`
- InstantRefundType string `json:"instantRefundType"`
- NewRefundReturn bool `json:"newRefundReturn"`
- OnlyRefund bool `json:"onlyRefund"`
- OrderEntryCountMap OrderEntryCountMap `json:"orderEntryCountMap"`
- OrderEntryIDList []int64 `json:"orderEntryIdList"`
- OrderID int64 `json:"orderId"`
- ProductName string `json:"productName"`
- RefundCarriage int `json:"refundCarriage"`
- RefundGoods bool `json:"refundGoods"`
- RefundID string `json:"refundId"`
- RefundOperationList []RefundOperation `json:"refundOperationList"`
- RefundPayment int `json:"refundPayment"`
- RejectReason string `json:"rejectReason"`
- RejectReasonID int `json:"rejectReasonId"`
- RejectTimes int `json:"rejectTimes"`
- SellerDelayDisburse bool `json:"sellerDelayDisburse"`
- SellerLoginID string `json:"sellerLoginId"`
- SellerMemberID string `json:"sellerMemberId"`
- SellerMobile string `json:"sellerMobile"`
- SellerRealName string `json:"sellerRealName"`
- SellerReceiveAddress string `json:"sellerReceiveAddress"`
- SellerTel string `json:"sellerTel"`
- SellerUserID int64 `json:"sellerUserId"`
- Status string `json:"status"`
- SupportNewSteppay bool `json:"supportNewSteppay"`
- TimeOutFreeze bool `json:"timeOutFreeze"`
- TimeOutOperateType string `json:"timeOutOperateType"`
- TradeTypeStr string `json:"tradeTypeStr"`
- }
- type ExtInfo struct {
- EXmrf string `json:"EXmrf"`
- Afterlast string `json:"afterlast"`
- AppName string `json:"appName"`
- ApplyInitRefundFee string `json:"apply_init_refund_fee"`
- ApplyReasonText string `json:"apply_reason_text"`
- B2BBt string `json:"b2b_bt"`
- B2BBuyerMID string `json:"b2b_buyer_mId"`
- B2BExchange string `json:"b2b_exchange"`
- B2BSellerMID string `json:"b2b_seller_mId"`
- BCfRsc string `json:"b_cf_rsc"`
- BFsc string `json:"b_fsc"`
- BPf string `json:"b_pf"`
- Bgmtc string `json:"bgmtc"`
- BizCode string `json:"bizCode"`
- BsSync string `json:"bs_sync"`
- CbuFstRsn string `json:"cbu_fst_rsn"`
- CljZeroSecondRefund string `json:"clj_zero_second_refund"`
- Enfunddetail string `json:"enfunddetail"`
- Instant string `json:"instant"`
- InterceptItemListResult string `json:"interceptItemListResult"`
- InterceptStatus string `json:"interceptStatus"`
- IsVirtual string `json:"isVirtual"`
- ItemBuyAmount string `json:"itemBuyAmount"`
- ItemPrice string `json:"itemPrice"`
- LastOrder string `json:"lastOrder"`
- NewRefund string `json:"newRefund"`
- OlTf string `json:"ol_tf"`
- OpRole string `json:"opRole"`
- PartRefund string `json:"part_refund"`
- PayMode string `json:"payMode"`
- RefuseReasonID string `json:"refuse_reason_id"`
- RefuseReasonMsg string `json:"refuse_reason_msg"`
- RefuseReasonTxt string `json:"refuse_reason_txt"`
- Rp3 string `json:"rp3"`
- SdkCode string `json:"sdkCode"`
- SellerAudit string `json:"seller_audit"`
- SellerBatch string `json:"seller_batch"`
- SellerRefuseCount string `json:"seller_refuse_count"`
- Sgr string `json:"sgr"`
- Tod string `json:"tod"`
- Tos string `json:"tos"`
- Ttid string `json:"ttid"`
- UserCredit string `json:"userCredit"`
- WorkflowName string `json:"workflowName"`
- }
- type OrderEntryCountMap struct {
- Num1662822517468979191 int `json:"1662822517468979191"`
- }
- type RefundOperation struct {
- AfterOperateStatus string `json:"afterOperateStatus,omitempty"`
- BeforeOperateStatus string `json:"beforeOperateStatus,omitempty"`
- CloseRefundStepID int `json:"closeRefundStepId"`
- CrmModifyRefund bool `json:"crmModifyRefund"`
- Discription string `json:"discription"`
- GmtCreate string `json:"gmtCreate"`
- GmtModified string `json:"gmtModified"`
- ID int64 `json:"id"`
- MessageStatus int `json:"messageStatus"`
- MsgType int `json:"msgType"`
- OperateRemark string `json:"operateRemark"`
- OperateTypeInt int `json:"operateTypeInt"`
- OperatorLoginID string `json:"operatorLoginId"`
- OperatorRoleID int `json:"operatorRoleId"`
- OperatorUserID int64 `json:"operatorUserId"`
- RefundID string `json:"refundId"`
- RejectReason string `json:"rejectReason,omitempty"`
- Vouchers []string `json:"vouchers,omitempty"`
- }
-
- func OrderAfterSaleDetails(appKey, appSecret, accessToken, refundId string) (map[string]interface{}, error) {
- if accessToken == "" {
- accessToken = "2101cd32-8762-49ed-a87b-94e25ab0c40d"
- }
- reqMap := make(map[string]interface{})
- reqMap["access_token"] = accessToken
- reqMap["needTimeOutInfo"] = true
- reqMap["needOrderRefundOperation"] = true
- reqMap["refundId"] = refundId
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688RefundOpQueryOrderRefundUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- const (
- //
- // 精选货源商品查询标获取
- API1688AlibabaFenXiaoProductSearchTagListUrlPath = "param2/1/com.alibaba.fenxiao/alibaba.pifatuan.product.search.tag.list/"
- // 精选货源商品列表查询
- API1688AlibabaFenXiaoProductListUrlPath = "param2/1/com.alibaba.fenxiao/alibaba.pifatuan.product.list/"
-
- NewAPI1688AlibabaFenXiaoProductListUrlPath = "param2/1/com.alibaba.fenxiao/jxhy.product.getPageList/"
-
- // 精选货源商品详情批量查询
- API1688AlibabaFenXiaoProductDetailUrlPath = "param2/1/com.alibaba.fenxiao/alibaba.pifatuan.product.detail.list/"
- // 精选货源商品详情批量查询(精选货源商品详情批量查询去除没有retailPrice的sku)
- API1688AlibabaFenXiaoProductDetail2UrlPath = "param2/2/com.alibaba.fenxiao/alibaba.pifatuan.product.detail.list/"
- // 创建采购订单
- API1688AlibabaFenXiaoFastCreateOrderUrlPath = "param2/1/com.alibaba.trade/alibaba.trade.fastCreateOrder/"
- // 创建订单前预览数据接口
- API1688AlibabaFenXiaoFastCreateOrderPreviewUrlPath = "param2/1/com.alibaba.trade/alibaba.createOrder.preview/"
- // 取消交易
- API1688AlibabaFenXiaoOrderCancelUrlPath = "param2/1/com.alibaba.trade/alibaba.trade.cancel/"
- // 修改订单备忘
- API1688AlibabaFenXiaoOrderMemoAddUrlPath = "param2/1/com.alibaba.trade:alibaba.order.memoAdd-1/"
- // 发起免密支付
- API1688AlibabaFenXiaoPreparePayUrlPath = "param2/1/com.alibaba.trade/alibaba.trade.pay.protocolPay.preparePay/"
- )
-
- func GetTagFrom1688(appKey, appSecret, accessToken string) (map[string]interface{}, error) {
- if accessToken == "" {
- accessToken = "6ddddfe6-d0cd-4e58-abbf-a265eb41be0b"
- }
- reqMap := make(map[string]interface{})
- reqMap["access_token"] = accessToken
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688AlibabaFenXiaoProductSearchTagListUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- type FenXiaoSearchCybOffersReq struct {
- AccessToken string `json:"access_token"`
-
- Page string `json:"pageNo"`
- PageSize string `json:"pageSize"`
- CategoryId string `json:"categoryId"`
- RuleId string `json:"ruleId"`
- }
-
- type NewFenXiaoSearchCybOffersReq struct {
- AccessToken string `json:"access_token"`
-
- Keyword string `json:"keyword"`
- Page string `json:"pageNum"`
- PageSize string `json:"pageSize"`
- PriceStart string `json:"priceStart"`
- PriceEnd string `json:"priceEnd"`
- CategoryId string `json:"categoryId"`
- RuleIds []string `json:"ruleIds"`
- }
-
- func GetFenXiaoSearchCybOffersFrom1688(appKey, appSecret string, req *FenXiaoSearchCybOffersReq) (map[string]interface{}, error) {
- if req.AccessToken == "" {
- req.AccessToken = "6ddddfe6-d0cd-4e58-abbf-a265eb41be0b"
- }
- reqMap := utils.Struct2Map(req)
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- utils.FilePutContents("1688", utils.SerializeStr(reqMap))
- api1688, err := API1688(API1688OfficialUrl, API1688AlibabaFenXiaoProductListUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- func NewGetFenXiaoSearchCybOffersFrom1688(appKey, appSecret string, req *NewFenXiaoSearchCybOffersReq) (map[string]interface{}, error) {
- if req.AccessToken == "" {
- req.AccessToken = "6ddddfe6-d0cd-4e58-abbf-a265eb41be0b"
- }
- reqMap := utils.Struct2Map(req)
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- utils.FilePutContents("1688", utils.SerializeStr(reqMap))
- api1688, err := API1688(API1688OfficialUrl, NewAPI1688AlibabaFenXiaoProductListUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- func GetFenXiaoProductInfoFrom1688(appKey, appSecret, accessToken, offerId string) (map[string]interface{}, error) {
- if accessToken == "" {
- accessToken = "2101cd32-8762-49ed-a87b-94e25ab0c40d"
- }
- reqMap := make(map[string]interface{})
- reqMap["access_token"] = accessToken
- reqMap["offerIds"] = []int64{utils.StrToInt64(offerId)}
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688AlibabaFenXiaoProductDetail2UrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- func FenXiaoPreview4CybMedia(appKey, appSecret string, req *Preview4CybMediaReq) (map[string]interface{}, error) {
- req.Flow = "ttpft"
- reqMap := utils.Struct2Map(req)
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688AlibabaFenXiaoFastCreateOrderPreviewUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- type FenXiaoCreateOrder4CybMediaReq struct {
- AddressParam AddressParam `json:"addressParam" label:"收货地址信息,是否必填:是"`
- CargoParamList []*CargoParam `json:"cargoParamList" label:"商品信息,是否必填:是"`
- Flow string `json:"flow" label:"general(创建大市场订单),saleproxy(创建代销市场订单),fenxiao(最新淘货源下单),ttpft(精选货源下单),是否必填:是"`
- AccessToken string `json:"access_token"`
- IsvBizTypeStr string `json:"isvBizTypeStr"`
- //EncryptOutOrderInfo EncryptOutOrderInfo `json:"encryptOutOrderInfo" label:"下游加密订单信息`
- }
- type EncryptOutOrderInfo struct {
- EncryptOrder bool `json:"encryptOrder" label:"是否加密订单"`
- OutPlatformOrderNo string `json:"outPlatformOrderNo" label:"下游平台订单号"`
- OutPlatformCode string `json:"outPlatformCode" label:"淘宝-thyny,天猫-tm,淘特-taote,阿里巴巴C2M-c2m,京东-jingdong,拼多多-pinduoduo,微信-weixin,跨境-kuajing,快手-kuaishou,有赞-youzan,抖音-douyin,寺库-siku,美团团好货-meituan,小红书-xiaohongshu,当当-dangdang,苏宁-suning,大V店-davdian,行云-xingyun,蜜芽-miya,菠萝派商城-boluo,其他-other"`
- OutPlatformAppkey string `json:"outPlatformAppkey" label:"下游平台获取订单的appkey"`
- Oaid string `json:"oaid" label:"淘宝oaid"`
- }
-
- func FenXiaoCreateOrder4CybMedia(appKey, appSecret string, req *FenXiaoCreateOrder4CybMediaReq) (map[string]interface{}, error) {
- req.Flow = "ttpft"
- req.IsvBizTypeStr = "fenxiaoMedia"
- reqMap := utils.Struct2Map(req)
- parameters := make([]string, 0)
- for key, value := range reqMap {
- if value != "" {
- parameters = append(parameters, key)
- }
- }
- api1688, err := API1688(API1688OfficialUrl, API1688AlibabaFenXiaoFastCreateOrderUrlPath, appKey, appSecret, parameters, reqMap)
- return api1688, err
- }
-
- func FenXiaoAliProtocolPay(appKey, appSecret, accessToken, orderId string) (map[string]interface{}, error) {
- api1688, err := API1688(API1688OfficialUrl, API1688AlibabaFenXiaoPreparePayUrlPath, appKey, appSecret, []string{"tradeWithholdPreparePayParam", "access_token"}, map[string]interface{}{
- "tradeWithholdPreparePayParam": map[string]string{
- "orderId": orderId,
- },
- "access_token": accessToken,
- })
- return api1688, err
- }
|