- fixed some wrong string conversion(should be Int64toStr).
- mtps CreateOrderByShop added.
This commit is contained in:
@@ -14,7 +14,8 @@ var (
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
logger, _ := zap.NewDevelopment()
|
logger, _ := zap.NewDevelopment()
|
||||||
elmapi = NewELMAPI("bab2a27f99562f394b411dbb9a6214da", "KLRDcOZGrk", "1fc221f8265506531da36fb613d5f5ad673f2e9a", logger.Sugar(), true)
|
sugarLogger = logger.Sugar()
|
||||||
|
elmapi = NewELMAPI("bab2a27f99562f394b411dbb9a6214da", "KLRDcOZGrk", "1fc221f8265506531da36fb613d5f5ad673f2e9a", sugarLogger, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTest(t *testing.T) {
|
func TestTest(t *testing.T) {
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ func (j *JDAPI) AccessJDQuery(apiStr string, jdParams map[string]string) (retVal
|
|||||||
j.sugarLogger.Errorf("Error when marshal %v, error:%v", jdParams, err)
|
j.sugarLogger.Errorf("Error when marshal %v, error:%v", jdParams, err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
params["jd_param_json"] = string(jdParamStr)
|
params["jd_param_json"] = jdParamStr
|
||||||
params["timestamp"] = utils.GetCurTimeStr()
|
params["timestamp"] = utils.GetCurTimeStr()
|
||||||
sign := signParams(params)
|
sign := signParams(params)
|
||||||
params["sign"] = sign
|
params["sign"] = sign
|
||||||
@@ -345,5 +345,5 @@ func forceInnerCode2Str(innerCode interface{}) string {
|
|||||||
if innerCodeStr, ok := innerCode.(string); ok {
|
if innerCodeStr, ok := innerCode.(string); ok {
|
||||||
return innerCodeStr
|
return innerCodeStr
|
||||||
}
|
}
|
||||||
return string(utils.MustInterface2Int64(innerCode))
|
return utils.Int64ToStr(utils.MustInterface2Int64(innerCode))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ var (
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
logger, _ := zap.NewDevelopment()
|
logger, _ := zap.NewDevelopment()
|
||||||
jdapi = NewJDAPI("91633f2a-c5f5-4982-a925-a220d19095c3", "1dba76d40cac446ca500c0391a0b6c9d", "a88d031a1e7b462cb1579f12e97fe7f4", logger.Sugar())
|
sugarLogger = logger.Sugar()
|
||||||
|
jdapi = NewJDAPI("91633f2a-c5f5-4982-a925-a220d19095c3", "1dba76d40cac446ca500c0391a0b6c9d", "a88d031a1e7b462cb1579f12e97fe7f4", sugarLogger)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTest(t *testing.T) {
|
func TestTest(t *testing.T) {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package mtpsapi
|
package mtpsapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
@@ -37,7 +38,22 @@ var (
|
|||||||
SuccessResponse = &MtpsCallbackResponse{Code: "0"}
|
SuccessResponse = &MtpsCallbackResponse{Code: "0"}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (m *MTPSAPI) CheckRequestValidation(request *http.Request) (callbackResponse *MtpsCallbackResponse) {
|
||||||
|
for _, valueKey := range []string{"delivery_id", "mt_peisong_id", "order_id"} {
|
||||||
|
if request.FormValue(valueKey) == "" {
|
||||||
|
return &MtpsCallbackResponse{
|
||||||
|
Code: fmt.Sprintf("missing param:%s", valueKey),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (m *MTPSAPI) GetOrderCallbackMsg(request *http.Request) (orderMsg *MtpsCallbackOrderMsg, callbackResponse *MtpsCallbackResponse) {
|
func (m *MTPSAPI) GetOrderCallbackMsg(request *http.Request) (orderMsg *MtpsCallbackOrderMsg, callbackResponse *MtpsCallbackResponse) {
|
||||||
|
callbackResponse = m.CheckRequestValidation(request)
|
||||||
|
if callbackResponse != nil {
|
||||||
|
return nil, callbackResponse
|
||||||
|
}
|
||||||
orderMsg = &MtpsCallbackOrderMsg{
|
orderMsg = &MtpsCallbackOrderMsg{
|
||||||
MtpsOrderInfoCommon: MtpsOrderInfoCommon{
|
MtpsOrderInfoCommon: MtpsOrderInfoCommon{
|
||||||
DeliveryId: utils.Str2Int64(request.FormValue("delivery_id")),
|
DeliveryId: utils.Str2Int64(request.FormValue("delivery_id")),
|
||||||
@@ -59,6 +75,10 @@ func (m *MTPSAPI) GetOrderCallbackMsg(request *http.Request) (orderMsg *MtpsCall
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *MTPSAPI) GetOrderExceptionCallbackMsg(request *http.Request) (orderMsg *MtpsCallbackOrderExceptionMsg, callbackResponse *MtpsCallbackResponse) {
|
func (m *MTPSAPI) GetOrderExceptionCallbackMsg(request *http.Request) (orderMsg *MtpsCallbackOrderExceptionMsg, callbackResponse *MtpsCallbackResponse) {
|
||||||
|
callbackResponse = m.CheckRequestValidation(request)
|
||||||
|
if callbackResponse != nil {
|
||||||
|
return nil, callbackResponse
|
||||||
|
}
|
||||||
orderMsg = &MtpsCallbackOrderExceptionMsg{
|
orderMsg = &MtpsCallbackOrderExceptionMsg{
|
||||||
MtpsOrderInfoCommon: MtpsOrderInfoCommon{
|
MtpsOrderInfoCommon: MtpsOrderInfoCommon{
|
||||||
DeliveryId: utils.Str2Int64(request.FormValue("delivery_id")),
|
DeliveryId: utils.Str2Int64(request.FormValue("delivery_id")),
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"sort"
|
"sort"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -48,12 +49,56 @@ type MtpsOrderInfo struct {
|
|||||||
CancelReason string
|
CancelReason string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MtpsOrderResponse struct {
|
||||||
|
MtPeisongId string `json:"mt_peisong_id`
|
||||||
|
DeliveryId int64 `json:"delivery_id`
|
||||||
|
OrderId string `json:"order_id`
|
||||||
|
}
|
||||||
|
|
||||||
type MTPSResult struct {
|
type MTPSResult struct {
|
||||||
Code int `json:"code"`
|
Code int `json:"code"`
|
||||||
Message string `json:"message"`
|
Message string `json:"message"`
|
||||||
Data map[string]interface{} `json:"data"`
|
Data map[string]interface{} `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
DSCRapid = 4011
|
||||||
|
DSCIntime = 4012
|
||||||
|
DSCTogether = 403
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PickupTypeClientSendToStation = 1
|
||||||
|
PickupTypeMtPick = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
OrderTypeASAP = 0
|
||||||
|
OrderTypeBook = 1
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
CoordinateTypeMars = 0
|
||||||
|
CoordinateTypeBaidu = 1
|
||||||
|
)
|
||||||
|
|
||||||
|
type MtpsCreateOrderByShopInfo struct {
|
||||||
|
DeliveryId int64
|
||||||
|
OrderId string
|
||||||
|
ShopId string
|
||||||
|
DeliveryServiceCode int
|
||||||
|
ReceiverName string
|
||||||
|
ReceiverAddress string
|
||||||
|
ReceiverPhone string
|
||||||
|
ReceiverLng int
|
||||||
|
ReceiverLat int
|
||||||
|
CoordinateType int
|
||||||
|
GoodsValue float64
|
||||||
|
GoodsWeight float64
|
||||||
|
ExpectedDeliveryTime int64
|
||||||
|
OrderType int
|
||||||
|
}
|
||||||
|
|
||||||
type MTPSAPI struct {
|
type MTPSAPI struct {
|
||||||
appKey string
|
appKey string
|
||||||
secret string
|
secret string
|
||||||
@@ -91,17 +136,17 @@ func (m *MTPSAPI) AccessMTPS(action string, params map[string]interface{}) (retV
|
|||||||
if params == nil {
|
if params == nil {
|
||||||
panic("params is nil!")
|
panic("params is nil!")
|
||||||
}
|
}
|
||||||
params["appkey"] = m.appKey
|
|
||||||
params["timestamp"] = utils.GetCurTimestamp()
|
|
||||||
params["version"] = "1.0"
|
|
||||||
|
|
||||||
params2 := make(url.Values)
|
params2 := make(url.Values)
|
||||||
for k, v := range params {
|
for k, v := range params {
|
||||||
params2[k] = []string{fmt.Sprint(v)}
|
params2[k] = []string{fmt.Sprint(v)}
|
||||||
}
|
}
|
||||||
|
params2["appkey"] = []string{m.appKey}
|
||||||
|
params2["timestamp"] = []string{utils.Int64ToStr(utils.GetCurTimestamp())}
|
||||||
|
params2["version"] = []string{"1.0"}
|
||||||
params2["sign"] = []string{m.signParams(params2)}
|
params2["sign"] = []string{m.signParams(params2)}
|
||||||
|
|
||||||
request, _ := http.NewRequest("POST", mtpsAPIURL+"/"+action, strings.NewReader(string(params2.Encode())))
|
request, _ := http.NewRequest("POST", mtpsAPIURL+"/"+action, strings.NewReader(params2.Encode()))
|
||||||
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||||
apiAccess := &common.AccessPlatformAPIWithRetryParams{
|
apiAccess := &common.AccessPlatformAPIWithRetryParams{
|
||||||
MaxExceedLimitRetryCount: maxRetryCountWhenReachLimited,
|
MaxExceedLimitRetryCount: maxRetryCountWhenReachLimited,
|
||||||
@@ -123,7 +168,9 @@ func (m *MTPSAPI) AccessMTPS(action string, params map[string]interface{}) (retV
|
|||||||
Code: code,
|
Code: code,
|
||||||
}
|
}
|
||||||
if code == mtpsStatusSuccess {
|
if code == mtpsStatusSuccess {
|
||||||
retVal.Data = jsonResult1["data"].(map[string]interface{})
|
if innerData, ok := jsonResult1["data"]; ok {
|
||||||
|
retVal.Data = innerData.(map[string]interface{})
|
||||||
|
}
|
||||||
return common.PAErrorLevelSuccess, nil
|
return common.PAErrorLevelSuccess, nil
|
||||||
}
|
}
|
||||||
retVal.Message = jsonResult1["message"].(string)
|
retVal.Message = jsonResult1["message"].(string)
|
||||||
@@ -133,10 +180,46 @@ func (m *MTPSAPI) AccessMTPS(action string, params map[string]interface{}) (retV
|
|||||||
return retVal, err
|
return retVal, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *MTPSAPI) QueryOrderStatus(deliveryId int64, MtPeiSongId string) (retVal map[string]interface{}, err error) {
|
func (m *MTPSAPI) CreateOrderByShop(basicParams *MtpsCreateOrderByShopInfo, addParams map[string]interface{}) (order *MtpsOrderResponse, err error) {
|
||||||
|
params := make(map[string]interface{})
|
||||||
|
params["delivery_id"] = utils.Int64ToStr(basicParams.DeliveryId)
|
||||||
|
params["order_id"] = basicParams.OrderId
|
||||||
|
params["shop_id"] = basicParams.ShopId
|
||||||
|
params["delivery_service_code"] = utils.Int2Str(basicParams.DeliveryServiceCode)
|
||||||
|
params["receiver_name"] = basicParams.ReceiverName
|
||||||
|
params["receiver_address"] = basicParams.ReceiverAddress
|
||||||
|
params["receiver_phone"] = basicParams.ReceiverPhone
|
||||||
|
params["receiver_lng"] = utils.Int2Str(basicParams.ReceiverLng)
|
||||||
|
params["receiver_lat"] = utils.Int2Str(basicParams.ReceiverLat)
|
||||||
|
params["coordinate_type"] = utils.Int2Str(basicParams.CoordinateType)
|
||||||
|
params["goods_value"] = strconv.FormatFloat(basicParams.GoodsValue, 'f', 2, 64)
|
||||||
|
params["goods_weight"] = strconv.FormatFloat(basicParams.GoodsWeight, 'f', 2, 64)
|
||||||
|
params["expected_delivery_time"] = utils.Int64ToStr(basicParams.ExpectedDeliveryTime)
|
||||||
|
params["order_type"] = utils.Int2Str(basicParams.OrderType)
|
||||||
|
if addParams != nil {
|
||||||
|
for k, v := range addParams {
|
||||||
|
params[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if params["order_type"] != utils.Int2Str(OrderTypeBook) {
|
||||||
|
delete(params, "expected_delivery_time")
|
||||||
|
}
|
||||||
|
if result, err := m.AccessMTPS("order/createByShop", params); err != nil {
|
||||||
|
m.sugarLogger.Debugf("result:%v", result)
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
order = new(MtpsOrderResponse)
|
||||||
|
order.MtPeisongId = result.Data["mt_peisong_id"].(string)
|
||||||
|
order.DeliveryId = utils.MustInterface2Int64(result.Data["delivery_id"])
|
||||||
|
order.OrderId = result.Data["order_id"].(string)
|
||||||
|
return order, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MTPSAPI) QueryOrderStatus(deliveryId int64, mtPeiSongId string) (retVal map[string]interface{}, err error) {
|
||||||
params := map[string]interface{}{
|
params := map[string]interface{}{
|
||||||
"delivery_id": deliveryId,
|
"delivery_id": deliveryId,
|
||||||
"mt_peisong_id": MtPeiSongId,
|
"mt_peisong_id": mtPeiSongId,
|
||||||
}
|
}
|
||||||
if result, err := m.AccessMTPS("order/status/query", params); err != nil {
|
if result, err := m.AccessMTPS("order/status/query", params); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -144,3 +227,32 @@ func (m *MTPSAPI) QueryOrderStatus(deliveryId int64, MtPeiSongId string) (retVal
|
|||||||
return result.Data, nil
|
return result.Data, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *MTPSAPI) simulateOrderBehavior(action string, deliveryId int64, mtPeiSongId string) (err error) {
|
||||||
|
params := map[string]interface{}{
|
||||||
|
"delivery_id": deliveryId,
|
||||||
|
"mt_peisong_id": mtPeiSongId,
|
||||||
|
}
|
||||||
|
_, err = m.AccessMTPS("test/order/"+action, params)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MTPSAPI) SimulateArrange(deliveryId int64, mtPeiSongId string) (err error) {
|
||||||
|
return m.simulateOrderBehavior("arrange", deliveryId, mtPeiSongId)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MTPSAPI) SimulatePickup(deliveryId int64, mtPeiSongId string) (err error) {
|
||||||
|
return m.simulateOrderBehavior("pickup", deliveryId, mtPeiSongId)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MTPSAPI) SimulateDeliver(deliveryId int64, mtPeiSongId string) (err error) {
|
||||||
|
return m.simulateOrderBehavior("deliver", deliveryId, mtPeiSongId)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MTPSAPI) SimulateRearrange(deliveryId int64, mtPeiSongId string) (err error) {
|
||||||
|
return m.simulateOrderBehavior("rearrange", deliveryId, mtPeiSongId)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MTPSAPI) SimulateReportException(deliveryId int64, mtPeiSongId string) (err error) {
|
||||||
|
return m.simulateOrderBehavior("reportException", deliveryId, mtPeiSongId)
|
||||||
|
}
|
||||||
|
|||||||
@@ -14,7 +14,9 @@ var (
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
logger, _ := zap.NewDevelopment()
|
logger, _ := zap.NewDevelopment()
|
||||||
mtpsapi = NewMTPSAPI("3c0a05d464c247c19d7ec13accc78605", "b1M}9?:sTbsB[OF2gNORnN(|(iy9rB8(`7]|[wGLnbmt`evfM>E:A90DjHAW:UPE", logger.Sugar())
|
sugarLogger = logger.Sugar()
|
||||||
|
mtpsapi = NewMTPSAPI("25e816550bc9484480642f19a95f13fd", "r4$HqrKx9~=7?2Jfo,$Z~a7%~k!Au&pEdI2)oPJvSbH2ao@2N0[8wSIvtuumh_J^", sugarLogger)
|
||||||
|
// mtpsapi = NewMTPSAPI("3c0a05d464c247c19d7ec13accc78605", "b1M}9?:sTbsB[OF2gNORnN(|(iy9rB8(`7]|[wGLnbmt`evfM>E:A90DjHAW:UPE", sugarLogger)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTest(t *testing.T) {
|
func TestTest(t *testing.T) {
|
||||||
@@ -22,9 +24,9 @@ func TestTest(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestAccessMTPS(t *testing.T) {
|
func TestAccessMTPS(t *testing.T) {
|
||||||
mtPeiSongId := "1528955769086020"
|
mtPeiSongId := "1529387562097059"
|
||||||
params := map[string]interface{}{
|
params := map[string]interface{}{
|
||||||
"delivery_id": 378194,
|
"delivery_id": 123456789,
|
||||||
"mt_peisong_id": mtPeiSongId,
|
"mt_peisong_id": mtPeiSongId,
|
||||||
}
|
}
|
||||||
result, err := mtpsapi.AccessMTPS("order/status/query", params)
|
result, err := mtpsapi.AccessMTPS("order/status/query", params)
|
||||||
@@ -37,3 +39,31 @@ func TestAccessMTPS(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCreateOrderByShop(t *testing.T) {
|
||||||
|
basicParams := &MtpsCreateOrderByShopInfo{
|
||||||
|
DeliveryId: 123456789,
|
||||||
|
OrderId: "order_123456789",
|
||||||
|
// 设置测试门店 id,测试门店的坐标地址为 97235456,31065079(高德坐标),配送范围3km
|
||||||
|
ShopId: "test_0001",
|
||||||
|
DeliveryServiceCode: DSCIntime,
|
||||||
|
ReceiverName: "xjh",
|
||||||
|
ReceiverAddress: "九里堤",
|
||||||
|
ReceiverPhone: "18112345678",
|
||||||
|
ReceiverLng: 97235456,
|
||||||
|
ReceiverLat: 31065079,
|
||||||
|
CoordinateType: CoordinateTypeMars,
|
||||||
|
GoodsValue: 12.34,
|
||||||
|
GoodsWeight: 3.4,
|
||||||
|
OrderType: OrderTypeASAP,
|
||||||
|
}
|
||||||
|
|
||||||
|
order, err := mtpsapi.CreateOrderByShop(basicParams, nil)
|
||||||
|
if order != nil {
|
||||||
|
sugarLogger.Debugf("order:%v", order)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
sugarLogger.Debugf("err:%s", err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user