This commit is contained in:
richboo111
2022-10-13 13:48:09 +08:00
16 changed files with 972 additions and 208 deletions

View File

@@ -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) {
@@ -16,3 +18,22 @@ 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("4988546918828606694")
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" :""}
}
func TestTimeNow(t *testing.T) {
h, m, s := time.Now().Clock()
fmt.Println(h, m, s)
}

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 {
@@ -340,204 +335,127 @@ func (a *API) CreateOrderCallback(request *http.Request) (map[string][]interface
for _, data := range resp {
switch data.Tag {
case CallbackCreatedOrderMsgTagId: // 创建订单
if utils.IsNil(data.Data) {
continue
create := CreateOrderData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackCreatedOrderMsgTagId] = append(callbackResult[CallbackCreatedOrderMsgTagId], create)
case CallbackPayOrderMsgTagId: // 支付订单
if utils.IsNil(data.Data) {
continue
create := PayOrderData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackPayOrderMsgTagId] = append(callbackResult[CallbackPayOrderMsgTagId], create)
globals.SugarLogger.Debugf("CallbackPayOrderMsgTagId======%s", utils.Format4Output(callbackResult, false))
case CallbackWaitOrderMsgTagId: // 支付订单待处理(风控审核)
if utils.IsNil(data.Data) {
continue
create := WaitOrderData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackWaitOrderMsgTagId] = append(callbackResult[CallbackWaitOrderMsgTagId], create)
case CallbackPartGoodsMsgTagId: // 卖家部分发货
if utils.IsNil(data.Data) {
continue
create := SomeSendOrderData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackPartGoodsMsgTagId] = append(callbackResult[CallbackPartGoodsMsgTagId], create)
case CallbackPartAllGoodsMsgTagId: // 卖家发货
if utils.IsNil(data.Data) {
continue
create := BusinessDeliveryData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackPartAllGoodsMsgTagId] = append(callbackResult[CallbackPartAllGoodsMsgTagId], create)
case CallbackCancelOrderMsgTagId: // 取消订单
if utils.IsNil(data.Data) {
continue
create := CreateOrderData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackCancelOrderMsgTagId] = append(callbackResult[CallbackCancelOrderMsgTagId], create)
case CallbackSuccessOrderMsgTagId: // 卖家确认收货时,会自动完成
if utils.IsNil(data.Data) {
continue
create := SuccessOrderData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackSuccessOrderMsgTagId] = append(callbackResult[CallbackSuccessOrderMsgTagId], create)
case CallbackWayBillChangeOrderMsgTagId: // 发货物流消息便跟
if utils.IsNil(data.Data) {
continue
create := WayBillChangeData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackWayBillChangeOrderMsgTagId] = append(callbackResult[CallbackWayBillChangeOrderMsgTagId], create)
case CallbackReceivingChangeOrderMsgTagId: // 收货地址消息变更(商家审核通过触发)
if utils.IsNil(data.Data) {
continue
create := ReceivingAddressChangeData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackReceivingChangeOrderMsgTagId] = append(callbackResult[CallbackReceivingChangeOrderMsgTagId], create)
case CallbackChangeMoneyMsgTagId: // 卖家修改订单/运单金额回调
if utils.IsNil(data.Data) {
continue
create := UpdateAmountChangeData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackChangeMoneyMsgTagId] = append(callbackResult[CallbackChangeMoneyMsgTagId], create)
case CallbackBusinessRemarkMsgTagId: // 买家收货消息变更(手机,地址,姓名),用户C端修改触发(需要上面审核接口)
if utils.IsNil(data.Data) {
continue
create := BuyerUpdateWayBillData{}
if err := json.Unmarshal([]byte(data.Data), create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackBusinessRemarkMsgTagId] = append(callbackResult[CallbackBusinessRemarkMsgTagId], create)
case CallbackApplyUpdateAddressMsgTagId: // 商家修改交易备注回调
if utils.IsNil(data.Data) {
continue
create := BusinessUpdateRemakeData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackApplyUpdateAddressMsgTagId] = append(callbackResult[CallbackApplyUpdateAddressMsgTagId], create)
case CallbackSendOrderTimeChangeMsgTagId: // 订单发货时消息变更回调
if utils.IsNil(data.Data) {
continue
create := AppointmentChangeData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackSendOrderTimeChangeMsgTagId] = append(callbackResult[CallbackSendOrderTimeChangeMsgTagId], create)
/*********下面属于订单退货消息************/
case CallbackRefundOrderMsgTagId: // 买家发起售后申请消息
if utils.IsNil(data.Data) {
continue
create := BuyerRefundCreatedData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackRefundOrderMsgTagId] = append(callbackResult[CallbackRefundOrderMsgTagId], create)
case CallbackUpdateRefundOrderMsgTagId: // 买家修改售后申请消息
if utils.IsNil(data.Data) {
continue
create := BuyerRefundModifiedData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackUpdateRefundOrderMsgTagId] = append(callbackResult[CallbackUpdateRefundOrderMsgTagId], create)
case CallbackRefundOrderSuccessMsgTagId: // 退款成功消息
if utils.IsNil(data.Data) {
continue
create := BusinessRefundSuccessData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackRefundOrderSuccessMsgTagId] = append(callbackResult[CallbackRefundOrderSuccessMsgTagId], create)
case CallbackRefundOrderRefuseMsgTagId: // 拒绝退款消息
if utils.IsNil(data.Data) {
continue
create := BusinessNotRefundRefusedData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackRefundOrderRefuseMsgTagId] = append(callbackResult[CallbackRefundOrderRefuseMsgTagId], create)
case CallbackRefundShopMsgTagId: // 拒绝退货申请消息
if utils.IsNil(data.Data) {
continue
create := BusinessNotReturnApplyRefusedData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackRefundShopMsgTagId] = append(callbackResult[CallbackRefundShopMsgTagId], create)
case CallbackReturnApplyAgreedMsgTagId: // 卖家同意时,推送此消息
if utils.IsNil(data.Data) {
continue
create := BusinessReturnApplyAgreedData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackReturnApplyAgreedMsgTagId] = append(callbackResult[CallbackReturnApplyAgreedMsgTagId], create)
case CallbackReturnRefundAgreedMsgTagId: // 同意退款消息
if utils.IsNil(data.Data) {
continue
create := BusinessRefundAgreedData{}
if err := json.Unmarshal([]byte(data.Data), &create); err != nil {
return nil, CallbackResponseErr(false)
}
//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)
callbackResult[CallbackReturnRefundAgreedMsgTagId] = append(callbackResult[CallbackReturnRefundAgreedMsgTagId], create)
default:
return nil, CallbackResponseErr(false)
}
@@ -551,122 +469,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, "")
@@ -676,3 +594,8 @@ func (a *API) GetCallbackOrderId(msgId string, data interface{}) (string, *Callb
return "", &CallbackResponse{Code: CallbackSuccessCode, Msg: CallbackSuccess}
}
// OrderStatusAndPsInfo 三方配送同步骑手位置信息
func (a *API) OrderStatusAndPsInfo(param map[string]interface{}) error {
return nil
}

View File

@@ -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 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 {
@@ -475,7 +475,7 @@ type BusinessReturnApplyAgreedData struct {
type BusinessRefundAgreedCallback struct {
PublicOrderCallback
Data *AppointmentChangeData `json:"data"`
Data *BusinessRefundAgreedData `json:"data"`
}
type BusinessRefundAgreedData struct {

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

@@ -2,13 +2,18 @@ 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"
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"
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 +152,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()
@@ -181,7 +201,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()
@@ -202,6 +222,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()
@@ -251,3 +290,78 @@ func (a *API) GetSkuBrand(categoryId int64) (int64, error) {
return result.Data.AuthBrandList[0].BrandId, nil
}
// OrderUserInfoDecrypt 用户信息解密
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 := 1; i <= 3; i++ {
cipher := order_batchDecrypt_request.CipherInfosItem{}
cipher.AuthId = orderId
switch i {
case 1: // 姓名
cipher.CipherText = name
cipherInfos = append(cipherInfos, cipher)
case 2: // 手机号
cipher.CipherText = tel
cipherInfos = append(cipherInfos, cipher)
case 3: // 地址
cipher.CipherText = address
cipherInfos = append(cipherInfos, cipher)
}
}
request.Param.CipherInfos = cipherInfos
result, err := request.Execute(a.accessTokenObj)
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, name, tel, address 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 = name
paramItems = append(paramItems, cipher)
case 2: // 手机号
cipher.CipherText = tel
paramItems = append(paramItems, cipher)
case 3: // 地址
cipher.CipherText = address
paramItems = append(paramItems, cipher)
}
}
request.Param.CipherInfos = paramItems
result, err := request.Execute(a.accessTokenObj)
fmt.Println(result)
fmt.Println(err)
}

View File

@@ -6,6 +6,8 @@ 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"
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"
@@ -34,9 +36,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
@@ -219,11 +220,22 @@ 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":""}`
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))
}
// 查询商品详情本地商品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))
}
@@ -257,6 +269,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 +278,57 @@ 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)
}
// 解密购买用户电话,名字,地址
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)
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) {
// 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.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,
})
}

View File

@@ -175,6 +175,9 @@ func TestWarehouseBindFence(t *testing.T) {
OutWarehouseId: "668510",
OutFenceIds: []string{"668410-2"},
}
_, err := a.WarehouseBindFence(param)
err := a.WarehouseBindFence(param)
fmt.Println(err)
}
func TestJNTM(t *testing.T) {
fmt.Println(2 | 8)
}