+CallbackMsgVenderAuditApplyCancelOrder
This commit is contained in:
@@ -1,14 +1,11 @@
|
||||
package jdapi
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"git.rosy.net.cn/baseapi"
|
||||
"git.rosy.net.cn/baseapi/platformapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
)
|
||||
|
||||
@@ -37,6 +34,9 @@ const (
|
||||
OrderStatusFinished = "90000"
|
||||
OrderStatusCanceled = "20020"
|
||||
|
||||
OrderStatusVenderAgreeCancel = "20031" // 商家同意取消申请
|
||||
OrderStatusVenderRejctCancel = "20032" // 商家驳回取消申请
|
||||
|
||||
OrderStatusUserApplyCancel = "20030" // 这个其实不是一个状态,是一个动作
|
||||
OrderStatusLocked = "20010"
|
||||
OrderStatusUnlocked = "20050"
|
||||
@@ -87,10 +87,11 @@ const (
|
||||
|
||||
const (
|
||||
// 订单
|
||||
CallbackMsgDeliveryCarrierModify = "deliveryCarrierModify" // 订单转自送消息(是指转自送成功后,用处不大)
|
||||
CallbackMsgOrderAccounting = "orderAccounting" // 订单应结消息
|
||||
CallbackMsgApplyCancelOrder = "applyCancelOrder"
|
||||
CallbackMsgPushDeliveryStatus = "pushDeliveryStatus"
|
||||
CallbackMsgDeliveryCarrierModify = "deliveryCarrierModify" // 订单转自送消息(是指转自送成功后,用处不大)
|
||||
CallbackMsgOrderAccounting = "orderAccounting" // 订单应结消息
|
||||
CallbackMsgApplyCancelOrder = "applyCancelOrder"
|
||||
CallbackMsgPushDeliveryStatus = "pushDeliveryStatus"
|
||||
CallbackMsgVenderAuditApplyCancelOrder = "venderAuditApplyCancelOrder"
|
||||
|
||||
// 账务
|
||||
CallbackMsgEndOrderFinance = "endOrderFinance" // 订单金额拆分完成消息
|
||||
@@ -183,9 +184,10 @@ var (
|
||||
FormatErrorResponse = &CallbackResponse{Code: "-1", Msg: "failed", Data: ""}
|
||||
|
||||
needDecodeMap = map[string]bool{
|
||||
CallbackMsgApplyCancelOrder: true,
|
||||
CallbackMsgPushDeliveryStatus: true,
|
||||
CallbackMsgStockIsHave: true,
|
||||
CallbackMsgApplyCancelOrder: true,
|
||||
CallbackMsgPushDeliveryStatus: true,
|
||||
CallbackMsgStockIsHave: true,
|
||||
CallbackMsgVenderAuditApplyCancelOrder: true,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -200,83 +202,6 @@ func Err2CallbackResponse(err error, data string) *CallbackResponse {
|
||||
}
|
||||
}
|
||||
|
||||
func unmarshalData(strData string, msg interface{}) (callbackResponse *CallbackResponse) {
|
||||
err := utils.UnmarshalUseNumber([]byte(strData), msg)
|
||||
if err != nil {
|
||||
return &CallbackResponse{
|
||||
Code: ResponseCodeAbnormalParam,
|
||||
Msg: fmt.Sprintf(platformapi.ErrStrUnmarshalError, strData, err),
|
||||
Data: strData,
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetCallbackMsg(request *http.Request, needDecode bool) (values url.Values, token, msgURL string, callbackResponse *CallbackResponse) {
|
||||
data, err := ioutil.ReadAll(request.Body)
|
||||
if err != nil {
|
||||
return nil, "", "", Err2CallbackResponse(err, "")
|
||||
}
|
||||
values, err = utils.HTTPBody2Values(data, needDecode)
|
||||
if err != nil {
|
||||
return nil, "", "", FormatErrorResponse
|
||||
}
|
||||
token = values.Get("token")
|
||||
return values, token, getMsgURLFromRequest(request), nil
|
||||
}
|
||||
|
||||
func (a *API) CheckCallbackValidation(values url.Values) (callbackResponse *CallbackResponse) {
|
||||
mapData := utils.URLValues2Map(values)
|
||||
sign := a.signParams(mapData)
|
||||
if sign != values.Get(signKey) {
|
||||
baseapi.SugarLogger.Infof("Signature is not ok, mine:%v, get:%v", sign, values.Get(signKey))
|
||||
return FormatErrorResponse
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *API) getCommonOrderCallbackMsg(values url.Values, msg interface{}) (callbackResponse *CallbackResponse) {
|
||||
if callbackResponse = a.CheckCallbackValidation(values); callbackResponse != nil {
|
||||
return callbackResponse
|
||||
}
|
||||
jdParamJSON := values.Get(paramJson)
|
||||
// baseapi.SugarLogger.Debug(jdParamJSON)
|
||||
if callbackResponse = unmarshalData(jdParamJSON, msg); callbackResponse != nil {
|
||||
return callbackResponse
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *API) GetOrderCallbackMsg(values url.Values, msgURL string) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
|
||||
if callbackResponse = a.getCommonOrderCallbackMsg(values, &msg); callbackResponse == nil {
|
||||
msg.CallbackMsg = &CallbackMsg{
|
||||
MsgURL: msgURL,
|
||||
}
|
||||
}
|
||||
return msg, callbackResponse
|
||||
}
|
||||
|
||||
func (a *API) GetOrderDeliveryCallbackMsg(values url.Values, msgURL string) (msg *CallbackDeliveryStatusMsg, callbackResponse *CallbackResponse) {
|
||||
if callbackResponse = a.getCommonOrderCallbackMsg(values, &msg); callbackResponse == nil {
|
||||
msg.CallbackMsg = &CallbackMsg{
|
||||
MsgURL: msgURL,
|
||||
}
|
||||
}
|
||||
return msg, callbackResponse
|
||||
}
|
||||
|
||||
func (a *API) GetStoreStockCallbackMsg(values url.Values, msgURL string) (msg *CallbackStoreStockMsg, callbackResponse *CallbackResponse) {
|
||||
var tmpMsg map[string]interface{}
|
||||
callbackResponse = a.getCommonOrderCallbackMsg(values, &tmpMsg)
|
||||
if callbackResponse == nil {
|
||||
msg = map2StockCallbackMsg(tmpMsg)
|
||||
msg.CallbackMsg = &CallbackMsg{
|
||||
MsgURL: msgURL,
|
||||
}
|
||||
}
|
||||
return msg, callbackResponse
|
||||
}
|
||||
|
||||
func map2StockCallbackMsg(mapData map[string]interface{}) (msg *CallbackStoreStockMsg) {
|
||||
msg = &CallbackStoreStockMsg{
|
||||
StationNo: utils.Interface2String(mapData["stationNo"]),
|
||||
@@ -298,7 +223,7 @@ func getMsgURLFromRequest(request *http.Request) (msgURL string) {
|
||||
return msgURL
|
||||
}
|
||||
|
||||
func GetCallbackMsg2(request *http.Request) (callbackMsg *CallbackMsg, mapData map[string]interface{}, callbackResponse *CallbackResponse) {
|
||||
func GetCallbackMsg(request *http.Request) (callbackMsg *CallbackMsg, mapData map[string]interface{}, callbackResponse *CallbackResponse) {
|
||||
msgURL := getMsgURLFromRequest(request)
|
||||
data, err := ioutil.ReadAll(request.Body)
|
||||
if err != nil {
|
||||
@@ -338,7 +263,7 @@ func GetCallbackMsg2(request *http.Request) (callbackMsg *CallbackMsg, mapData m
|
||||
return callbackMsg, mapData, callbackResponse
|
||||
}
|
||||
|
||||
func (a *API) CheckCallbackValidation2(mapData map[string]interface{}, signInData string) (callbackResponse *CallbackResponse) {
|
||||
func (a *API) CheckCallbackValidation(mapData map[string]interface{}, signInData string) (callbackResponse *CallbackResponse) {
|
||||
sign := a.signParams(mapData)
|
||||
if sign != signInData {
|
||||
baseapi.SugarLogger.Infof("Signature is not ok, mine:%s, signInData:%s", sign, signInData)
|
||||
|
||||
@@ -33,12 +33,12 @@ func TestGetCallbackMsg(t *testing.T) {
|
||||
},
|
||||
} {
|
||||
callbackStr := strings.TrimSpace(strPair[1])
|
||||
callbackMsg, mapData, resp := GetCallbackMsg2(utils.BuildRequest(http.MethodPost, "/djsw/"+strPair[0], callbackStr, ""))
|
||||
callbackMsg, mapData, resp := GetCallbackMsg(utils.BuildRequest(http.MethodPost, "/djsw/"+strPair[0], callbackStr, ""))
|
||||
if resp != nil {
|
||||
t.Fatal(resp)
|
||||
}
|
||||
sugarLogger.Debug(callbackMsg.MsgURL)
|
||||
resp = api.CheckCallbackValidation2(mapData, callbackMsg.Sign)
|
||||
resp = api.CheckCallbackValidation(mapData, callbackMsg.Sign)
|
||||
if resp != nil {
|
||||
t.Fatal(resp)
|
||||
}
|
||||
@@ -46,26 +46,6 @@ func TestGetCallbackMsg(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetOrderCallbackMsg(t *testing.T) {
|
||||
callbackStr := strings.TrimSpace(
|
||||
`
|
||||
timestamp=2019-12-03+06%3A28%3A40&sign=84AF173723A89E95AD7D0CFECA293683&v=1.0&jd_param_json=%7B%22billId%22%3A%22929053552000142%22%2C%22statusId%22%3A%2232000%22%2C%22timestamp%22%3A%222019-12-03+06%3A28%3A37%22%7D&token=77e703b7-7997-441b-a12a-2e522efb117a&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json
|
||||
|
||||
`)
|
||||
values, token, msgURL, resp := GetCallbackMsg(utils.BuildRequest(http.MethodPost, "/djsw/"+CallbackMsgOrderAccounting, callbackStr, ""), false)
|
||||
if resp != nil {
|
||||
t.Fatal(resp)
|
||||
}
|
||||
sugarLogger.Debug(token)
|
||||
sugarLogger.Debug(msgURL)
|
||||
orderMsg, resp := api.GetOrderCallbackMsg(values, msgURL)
|
||||
if resp != nil {
|
||||
t.Fatal(resp)
|
||||
}
|
||||
sugarLogger.Debug(utils.Format4Output(orderMsg, false))
|
||||
sugarLogger.Debug(orderMsg.MsgURL)
|
||||
}
|
||||
|
||||
func TestSimulateSendNewOrderMsg(t *testing.T) {
|
||||
orderInfo := &CallbackOrderMsg{
|
||||
BillID: "813344594000041",
|
||||
|
||||
Reference in New Issue
Block a user