diff --git a/platformapi/mtwmapi/callback.go b/platformapi/mtwmapi/callback.go index 30194963..de241125 100644 --- a/platformapi/mtwmapi/callback.go +++ b/platformapi/mtwmapi/callback.go @@ -38,10 +38,31 @@ type CallbackResponse struct { Data string `json:"data"` } -// !!!特别注意,Data中的数据 +type CallbackSysInfo struct { + Timestamp int64 `json:"timestamp"` + AppID string `json:"app_id"` + Sig string `json:"sig"` +} + +// 全额退款没有Food, FoodList, Money项 +type CallbackRefundInfo struct { + CallbackSysInfo + OrderID int64 `json:"order_id"` + NotifyType string `json:"notify_type"` + Reason string `json:"reason"` + ResType int `json:"res_type"` + IsAppeal int `json:"is_appeal"` + Pictures string `json:"pictures"` + + Food string `json:"food"` + FoodList []*RefundSkuDetail `json:"foodList"` + Money float32 `json:"money"` +} + type CallbackMsg struct { - FormData url.Values Cmd string + FormData url.Values + Data interface{} } var ( @@ -89,6 +110,15 @@ func (a *API) GetCallbackMsg(request *http.Request) (msg *CallbackMsg, callbackR } msg.FormData.Set(k, v.(string)) } + if msg.Cmd == MsgTypeOrderRefund || msg.Cmd == MsgTypeOrderPartialRefund { + var refundData *CallbackRefundInfo + if err = utils.Map2StructByJson(data, &refundData, true); err == nil { + if refundData.Food != "" { + utils.UnmarshalUseNumber([]byte(refundData.Food), &refundData.FoodList) + } + msg.Data = refundData + } + } } } else { callbackResponse = SuccessResponse // 美团外卖PING消息没有sign diff --git a/platformapi/mtwmapi/order.go b/platformapi/mtwmapi/order.go index 043e2b70..edd7965c 100644 --- a/platformapi/mtwmapi/order.go +++ b/platformapi/mtwmapi/order.go @@ -30,6 +30,7 @@ const ( WaybillStatusCanceled = "100" // 配送单已取消 ) +// APP方URL 推送用户或客服取消订单(必接) const ( CancelReasonAcceptTimeout = 1001 // 系统取消,超时未确认 CancelReasonPayTimeout = 1002 // 系统取消,在线支付订单15分钟未支付 @@ -43,6 +44,18 @@ const ( CancelReasonOther = 1301 // 其他原因 ) +const ( + ResTypePending = 0 // 未处理 + ResTypeMerchantRefused = 1 // 商家驳回退款请求 + ResTypeMerchantAgreed = 2 // 商家同意退款 + ResTypeCSRefused = 3 // 客服驳回退款请求 + ResTypeCSAgreed = 4 // 客服帮商家同意退款 + ResTypeTimeoutAutoAgreed = 5 // 超过3小时自动同意 + ResTypeAutoAgreed = 6 // 系统自动确认 + ResTypeUserCancelApply = 7 // 用户取消退款申请 + ResTypeUserCancelComplain = 8 // 用户取消退款申诉 +) + const ( NotifyTypeApply = "apply" // 发起全款退款 NotifyTypePartyApply = "part" // 发起部分退款 @@ -70,12 +83,12 @@ type RefundSku struct { type RefundSkuDetail struct { AppFoodCode string `json:"app_food_code"` BoxNum float32 `json:"box_num"` - BoxPrice float32 `json:"box_price"` + BoxPrice float64 `json:"box_price"` Count int `json:"count"` FoodName string `json:"food_name"` - FoodPrice float32 `json:"food_price"` - OriginFoodPrice float32 `json:"origin_food_price"` - RefundPrice float32 `json:"refund_price"` + FoodPrice float64 `json:"food_price"` + OriginFoodPrice float64 `json:"origin_food_price"` + RefundPrice float64 `json:"refund_price"` SkuID string `json:"sku_id"` Spec string `json:"spec"` }