mtps校验签名?

This commit is contained in:
苏尹岚
2020-06-16 17:52:24 +08:00
parent 8c1e77ba1b
commit f01e9ca1fd

View File

@@ -1,9 +1,12 @@
package mtps
import (
"crypto/sha1"
"errors"
"fmt"
"net/http"
"net/url"
"sort"
"strings"
"time"
@@ -115,7 +118,7 @@ func (c *DeliveryHandler) pushToGy(waybill *model.Waybill, msg *mtpsapi.Callback
params["mt_peisong_id"] = msg.MtPeisongID
params["courier_name"] = msg.CourierName
params["delivery_id"] = msg.DeliveryID
params["sign"] = "ec61c8d88a1f864cc2cb1b875177fe1fb1402f05"
// params["sign"] = "ec61c8d88a1f864cc2cb1b875177fe1fb1402f05"
params["appkey"] = msg.AppKey
params["order_id"] = msg.OrderID
params["courier_phone"] = msg.CourierPhone
@@ -123,6 +126,9 @@ func (c *DeliveryHandler) pushToGy(waybill *model.Waybill, msg *mtpsapi.Callback
params["timestamp"] = msg.Timestamp
params["cancel_reason_id"] = msg.CancelReasonId
params["cancel_reason"] = msg.CancelReason
urls := utils.Map2URLValues(params)
sign := signParams(urls)
params["sign"] = sign
request, err := http.NewRequest(http.MethodPost, "http://callback-jxgy.jxc4.com/mtps/status", strings.NewReader(utils.Map2URLValues(params).Encode()))
if err != nil {
return
@@ -132,6 +138,27 @@ func (c *DeliveryHandler) pushToGy(waybill *model.Waybill, msg *mtpsapi.Callback
}
}
func signParams(params url.Values) string {
keys := make([]string, 0)
for k := range params {
if k != "sign" {
keys = append(keys, k)
}
}
sort.Strings(keys)
finalStr := "b1M}9?:sTbsB[OF2gNORnN(|(iy9rB8(`7]|[wGLnbmt`evfM>E:A90DjHAW:UPE"
for _, key := range keys {
valStr := strings.Join(params[key], "")
if valStr != "" {
finalStr += key + valStr
}
}
// baseapi.SugarLogger.Debug(finalStr)
return fmt.Sprintf("%x", sha1.Sum([]byte(finalStr)))
}
func (c *DeliveryHandler) callbackMsg2Waybill(msg *mtpsapi.CallbackOrderMsg) (retVal *model.Waybill) {
retVal = &model.Waybill{
VendorWaybillID: msg.MtPeisongID,