This commit is contained in:
邹宗楠
2022-10-11 16:31:59 +08:00
parent a88b8b4184
commit 663aed9ab6
6 changed files with 432 additions and 32 deletions

View File

@@ -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, "")

View File

@@ -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) {

View File

@@ -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()

View File

@@ -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)