This commit is contained in:
richboo111
2023-05-23 09:39:04 +08:00
19 changed files with 166 additions and 98 deletions

View File

@@ -1,6 +1,9 @@
package dadaapi
import "go.uber.org/zap"
import (
"git.rosy.net.cn/baseapi"
"go.uber.org/zap"
)
//
//import (
@@ -24,32 +27,33 @@ var (
// testShopNo = "11047059"
//)
//
//func init() {
// logger, _ := zap.NewDevelopment()
// sugarLogger = logger.Sugar()
// baseapi.Init(sugarLogger)
//
// // sandbox
// // dadaapi = New("dada9623324449cd250", "30c2abbfe8a8780ad5aace46300c64b9", "73753", "http://callback.jxc4.com/dada/order", false)
//
// // prod
// dadaapi = New("dada154e2a41fd6cef3", "7f97d8f258b70b450f04e7ab274ed8f8", "6660", "http://callback.jxc4.com/dadadelivery/msg", true)
//
// // prod
// testOrder = &OperateOrderParams{
// ShopNo: testShopNo,
// OriginID: "234242342",
// CityCode: "028",
// CargoPrice: 12.34,
// IsPrepay: 1,
// ReceiverName: "我是谁",
// ReceiverAddress: "九里堤",
// ReceiverLat: 30.74631,
// ReceiverLng: 103.99112,
// ReceiverPhone: "12812345678",
// }
//
//}
func init() {
logger, _ := zap.NewDevelopment()
sugarLogger = logger.Sugar()
baseapi.Init(sugarLogger)
// sandbox
// dadaapi = New("dada9623324449cd250", "30c2abbfe8a8780ad5aace46300c64b9", "73753", "http://callback.jxc4.com/dada/order", false)
// prod
dadaapi = New("dada154e2a41fd6cef3", "7f97d8f258b70b450f04e7ab274ed8f8", "6660", "http://callback.jxc4.com/dadadelivery/msg", true)
// prod
//testOrder = &OperateOrderParams{
// ShopNo: testShopNo,
// OriginID: "234242342",
// CityCode: "028",
// CargoPrice: 12.34,
// IsPrepay: 1,
// ReceiverName: "我是谁",
// ReceiverAddress: "九里堤",
// ReceiverLat: 30.74631,
// ReceiverLng: 103.99112,
// ReceiverPhone: "12812345678",
//}
}
//
//func TestTest(t *testing.T) {
// sugarLogger.Debug(utils.GetCurTimeStr())

View File

@@ -136,6 +136,8 @@ func (a *API) QueryOrderInfo(orderID string) (order *OrderInfo, err error) {
if err == nil {
err = utils.Map2StructByJson(result.Result, &order, false)
}
order.DeliveryFee += (utils.Int2Float64(utils.WayBillDeliveryMarkUp) / 100)
//order.ActualFee += utils.Int2Float64(utils.WayBillDeliveryMarkUp)
return order, err
}

View File

@@ -2,9 +2,9 @@ package dadaapi
//
import (
"git.rosy.net.cn/baseapi"
//"fmt"
"testing"
//"git.rosy.net.cn/baseapi"
"git.rosy.net.cn/baseapi/utils"
)
@@ -43,13 +43,14 @@ import (
// // baseapi.SugarLogger.Debug(utils.Format4Output(cancelResponse, false))
//}
//
//func TestCancel(t *testing.T) {
// cancelResponse, err := dadaapi.CancelOrder("126099099192000002", ReasonIDOther, "协商一致")
// if err != nil {
// t.Fatal(err)
// }
// baseapi.SugarLogger.Debug(utils.Format4Output(cancelResponse, false))
//}
func TestCancel(t *testing.T) {
cancelResponse, err := dadaapi.CancelOrder("1100551162883899675", ReasonIDOther, "协商一致")
if err != nil {
t.Fatal(err)
}
baseapi.SugarLogger.Debug(utils.Format4Output(cancelResponse, false))
}
//
//func TestGetComplaintReasons(t *testing.T) {
// complaintReason, err := dadaapi.GetComplaintReasons()
@@ -68,17 +69,12 @@ import (
//
func TestQueryOrderInfo(t *testing.T) {
dadaapi = New("dada154e2a41fd6cef3", "7f97d8f258b70b450f04e7ab274ed8f8", "6660", "http://callback.jxc4.com/dadadelivery/msg", true)
result, err := dadaapi.QueryOrderInfo("1100538083115517396")
result, err := dadaapi.QueryOrderInfo("88421859678001")
if err != nil {
t.Fatal(err)
}
t.Log(utils.Format4Output(result, false))
}
//
//func TestAddTip(t *testing.T) {
// err := dadaapi.AddTip("80704840263399812", 1.0, "530100", "")
// if err != nil {
// t.Fatal(err)
// }
//}
func TestAddTip(t *testing.T) {
}

View File

@@ -138,25 +138,24 @@ func (a *API) GetChainstoreStatusNotify(request *http.Request) (shopStatusMsg *C
}
// 获取订单状态回调消息
func (a *API) GetChainOrderStatusNotify(request *http.Request) (shopStatusMsg *OrderStatusNottify, callbackResponse *CallbackResponse) {
func (a *API) GetChainOrderStatusNotify(request *http.Request) (shopStatusMsg *OrderStatusNottify, result *ShortStatus, callbackResponse *CallbackResponse) {
data, err := ioutil.ReadAll(request.Body)
if err != nil {
callbackResponse = &CallbackResponse{Code: -1}
return nil, callbackResponse
return nil, nil, callbackResponse
}
result := &ShortStatus{}
if err := json.Unmarshal(data, &result); err != nil {
callbackResponse = &CallbackResponse{Code: -1}
return nil, callbackResponse
return nil, nil, callbackResponse
}
orderResult := &OrderStatusNottify{}
if err := json.Unmarshal([]byte(result.BusinessData), orderResult); err != nil {
callbackResponse = &CallbackResponse{Code: -1}
return nil, callbackResponse
return nil, nil, callbackResponse
}
return orderResult, SuccessResponse
return orderResult, result, SuccessResponse
}
// 异常配送

View File

@@ -7,7 +7,6 @@ import (
"git.rosy.net.cn/jx-callback/globals"
"go.uber.org/zap"
"testing"
"time"
)
var (
@@ -20,17 +19,17 @@ func init() {
sugarLogger = logger.Sugar()
baseapi.Init(sugarLogger)
api = New("6705486294797503379", "c1e6c280-e618-4103-9d0a-673bc54fb22e", "51658", "cabrXQf9eFMVWVYg4hNlwu")
api = New("6705486294797503379", "c1e6c280-e618-4103-9d0a-673bc54fb22e", "5375691", "")
//token, _ := api.GetAccessToken()
api.accessToken = "5638ebf7-e69e-498b-8b47-96336ca720bc"
api.accessToken = "c7ed10b7-3ecf-4def-adc1-9f43d5e9480c"
}
// 查询单个门店
func TestQueryOneStore(t *testing.T) {
api = New("6705486294797503379", "c1e6c280-e618-4103-9d0a-673bc54fb22e", "5375691", "")
token, err := api.GetAccessToken()
api.accessToken = token.BusinessDataObj.AccessToken
data, err := api.GetStore("209476483")
api = New("6705486294797503379", "c1e6c280-e618-4103-9d0a-673bc54fb22e", "51658", "")
//token, err := api.GetAccessToken()
api.accessToken = "45c49b75-d47e-4145-b38d-fda8b5ebf3a9"
data, err := api.GetStore("800293")
fmt.Println(data)
fmt.Println(err)
}
@@ -180,13 +179,22 @@ func TestGetOrder(t *testing.T) {
}
func TestQueryOrder(t *testing.T) {
data, err := api.QueryOrder("1100536591119839487") // 1100537991119839487 1100536591119839487
api = New("6705486294797503379", "c1e6c280-e618-4103-9d0a-673bc54fb22e", "51658", "")
api.accessToken = "c7ed10b7-3ecf-4def-adc1-9f43d5e9480c"
data, err := api.QueryOrder("88421859678001") // 1100537991119839487 1100536591119839487
globals.SugarLogger.Debug("data:= %s", utils.Format4Output(data, false))
globals.SugarLogger.Debug("err:= %s", utils.Format4Output(err, false))
}
func TestTime(t *testing.T) {
fmt.Println(time.Now().UnixNano() / 1e6)
fmt.Println(1683530814777)
fmt.Println(time.Now().UnixNano()/1e6 - 1683530814777)
func TestCancelOrder(t *testing.T) {
api = New("6705486294797503379", "c1e6c280-e618-4103-9d0a-673bc54fb22e", "51658", "")
api.accessToken = "f5716fd7-f69b-491f-b63c-d0167c9097b6"
param := CancelOrderReq{
GetOrderDetailReq: GetOrderDetailReq{PartnerOrderCode: "88421859678001"},
OrderCancelCode: 9,
OrderCancelRole: 2,
OrderCancelOtherReason: "不想要了",
}
err := api.CancelOrder(&param) // 1100537991119839487 1100536591119839487
globals.SugarLogger.Debug("err:= %s", utils.Format4Output(err, false))
}

View File

@@ -420,10 +420,10 @@ type PreCancelOrderReq struct {
// cancelOrder 正式取消订单接口
type CancelOrderReq struct {
GetOrderDetailReq
OrderCancelCode int64 `json:"order_cancel_code"` // 从可用取消原因列表接口返回结果选择(必填)
OrderCancelRole int `json:"order_cancel_role"` // 1商户取消, 2 用户取消(必填)
ActualCancelCostCent int64 `json:"actual_cancel_cost_cent"` // 单位分 取消实际需扣金额,从预取消接口拿(非必填)
OrderCancelOtherReason string `json:"order_cancel_other_reason"` // 取消原因补充 20字以内(必填)
OrderCancelCode int64 `json:"order_cancel_code"` // 从可用取消原因列表接口返回结果选择(必填)
OrderCancelRole int `json:"order_cancel_role"` // 1商户取消, 2 用户取消(必填)
//ActualCancelCostCent int64 `json:"actual_cancel_cost_cent"` // 单位分 取消实际需扣金额,从预取消接口拿(非必填)
OrderCancelOtherReason string `json:"order_cancel_other_reason"` // 取消原因补充 20字以内(必填)
}
//#endregion

View File

@@ -5,6 +5,7 @@ import (
"errors"
"fmt"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/globals"
"time"
)
@@ -60,8 +61,8 @@ func (a *API) PreCreateByShopFn(basicParams *PreCreateOrder) (deliveryFee, baseD
if v.IsValid != 1 {
continue
}
deliveryFeeFn = v.ActualDeliveryAmountCent
baseDeliveryFeeFn = v.TotalDeliveryAmountCent
deliveryFeeFn = v.TotalDeliveryAmountCent // 优惠后 actual_delivery_amount_cent
baseDeliveryFeeFn = v.TotalDeliveryAmountCent // 原始配送费
}
// 异常检测
@@ -83,7 +84,8 @@ func (a *API) CreateOrder(createOrderParam *CreateOrderReqParam) (result string,
if err != nil {
return "", err
}
if utils.Interface2String(resultData["code"]) != "200" || utils.Interface2String(resultData["apiCode"]) != "" {
if utils.Interface2String(resultData["code"]) != "200" {
return "", fmt.Errorf(fmt.Sprintf("其他异常错误信息:%s", utils.Interface2String(resultData["apiCode"])))
}
if orderId, ok := resultData["business_data"]; ok {
@@ -170,9 +172,7 @@ func (a *API) CancelOrder(req *CancelOrderReq) (err error) {
if req.PartnerOrderCode == "" && req.OrderId == "" {
return errors.New("内部订单号或者外部订单号比填写一个")
}
if req.OrderCancelCode == 0 && req.OrderCancelOtherReason == "" {
req.OrderCancelOtherReason = "暂时不想要了"
}
req.OrderCancelOtherReason = "暂时不想要了"
orderHead := a.MakeFnRequestHead()
business, err := json.Marshal(req)
@@ -181,11 +181,15 @@ func (a *API) CancelOrder(req *CancelOrderReq) (err error) {
}
orderHead["business_data"] = string(business)
if _, err := a.AccessAPI(ApiURL, "cancelOrder", RequestPost, orderHead); err != nil {
data, err := a.AccessAPI(ApiURL, "cancelOrder", RequestPost, orderHead)
globals.SugarLogger.Debugf("======data : %s", utils.Format4Output(data, false))
if err != nil {
return err
}
return
if data["code"].(string) != "200" {
return errors.New(data["msg"].(string))
}
return nil
}
// 查询订单详情接口
@@ -206,6 +210,8 @@ func (a *API) QueryOrder(partnerOrderCode string) (result *GetOrderDetailRes, er
if err := json.Unmarshal([]byte(data["business_data"].(string)), &fnResult); err != nil {
return nil, err
}
fnResult.OrderActualAmountCent += int64(utils.WayBillDeliveryMarkUp)
fnResult.OrderTotalAmountCent += int64(utils.WayBillDeliveryMarkUp)
return fnResult, nil
}

View File

@@ -3,6 +3,7 @@ package fnpsapi
import (
"encoding/json"
"fmt"
"net/http"
"strings"
"git.rosy.net.cn/baseapi/utils"
@@ -130,3 +131,40 @@ func IsErrShopExist(err error) bool {
}
return false
}
// HttpToGuoYuanFN 订单消息推送果园
func HttpToGuoYuanFN(param map[string]interface{}, requestType string) (*http.Response, error) {
var paramData []byte
var err error
if requestType == "order" || requestType == "waybill" {
param["data"] = utils.Format4Output(param["data"], false)
paramData, err = json.Marshal([]interface{}{param})
if err != nil {
return nil, err
}
} else {
paramData, err = json.Marshal(param)
if err != nil {
return nil, err
}
}
body := strings.NewReader(string(paramData))
url := ""
switch requestType {
case "store": // 订单相关
url = "http://callback-jxgy.jxc4.com/fn/fnStore"
case "order": // 门店
url = "http://callback-jxgy.jxc4.com/fn/fnOrder"
case "abnormal": // 异常
url = "http://callback-jxgy.jxc4.com/fn/fnAbnormal"
}
httpReq, err := http.NewRequest(http.MethodPost, url, body)
if err != nil {
return nil, err
}
httpReq.Header.Set("Content-Type", "application/json")
httpRes, err := http.DefaultClient.Do(httpReq)
return httpRes, err
}

View File

@@ -88,6 +88,7 @@ func (a *API) AccessAPI1(url string, params map[string]interface{}) (retVal map[
err = platformapi.AccessPlatformAPIWithRetry(a.client,
func() *http.Request {
globals.SugarLogger.Debugf("====param := %s", utils.Format4Output(params, false))
globals.SugarLogger.Debugf("====url := %s", utils.Format4Output(url, false))
request, _ := http.NewRequest(http.MethodPost, url, strings.NewReader(utils.Map2URLValues(params).Encode()))
request.Header.Set("Content-Type", "application/json;charset=UTF-8")
return request

View File

@@ -72,20 +72,20 @@ func TestCreateToken(t *testing.T) {
// 快手预下单获取支付参数
func TestPreCreateOrder(t *testing.T) {
param := &PreCreateOrderReq{
OutOrderNo: "1024028220",
OpenId: "f198f59711c9785314bf5724f7ab9f47",
TotalAmount: 1,
Subject: "这是一个测试商品",
Detail: "大白菜,小白菜,中白菜",
TypeDetail: 1832, // 素菜
ExpireTime: 10 * 60,
Sign: "",
Attach: "1111",
NotifyUrl: "https://callback.jxc4.com/tictoc/tiktokMsg",
GoodsId: "1122",
GoodsDetailUrl: "/page/index/anima",
MultiCopiesGoodsInfo: "[{\"copies\":2}]",
CancelOrder: 0,
OutOrderNo: "88422209072664",
OpenId: "f198f59711c9785314bf5724f7ab9f47",
TotalAmount: 501,
Subject: "蔬菜水果日用品",
Detail: "好吃的素材水果",
TypeDetail: 1832, // 素菜
ExpireTime: 10 * 60,
Sign: "",
Attach: "22",
NotifyUrl: "https://callback-jxgy.jxc4.com/kuaishou/kuaiShouCallback",
GoodsId: "1122",
GoodsDetailUrl: "/page/index/anima",
//MultiCopiesGoodsInfo: `[{"copies":2}]`,
CancelOrder: 1,
}
data, err := api.PreCreateOrder(param)
globals.SugarLogger.Debugf("data := %s", utils.Format4Output(data, false))

View File

@@ -295,7 +295,7 @@ func (a *API) result2OrderResponse(result *ResponseResult) (order *OrderResponse
order.MtPeisongID = result.Data["mt_peisong_id"].(string)
order.DeliveryID = utils.MustInterface2Int64(result.Data["delivery_id"])
order.OrderID = result.Data["order_id"].(string)
order.DeliveryFee = utils.MustInterface2Float64(result.Data["delivery_fee"])
order.DeliveryFee = utils.MustInterface2Float64(result.Data["delivery_fee"]) // 原价
return order
}
@@ -346,6 +346,8 @@ func (a *API) QueryOrderStatus(deliveryId int64, mtPeiSongId string) (retVal map
if err != nil {
return nil, err
}
result.Data["delivery_fee"] = utils.MustInterface2Float64(result.Data["delivery_fee"]) + (float64(utils.WayBillDeliveryMarkUp) / 100)
result.Data["pay_amount"] = utils.MustInterface2Float64(result.Data["pay_amount"])
return result.Data, nil
}
@@ -465,8 +467,9 @@ func (a *API) PreCreateByShop(basicParams *PreCreateByShopParam) (deliveryFee, b
return 0, 0, err
}
deliveryFee = utils.Float64TwoInt64(utils.MustInterface2Float64(result.Data["delivery_fee"]) * 100) // 订单配送价格
baseDeliveryFee = utils.Float64TwoInt64(utils.MustInterface2Float64(result.Data["base_delivery_fee"]) * 100) // 订单优惠价格
deliveryFee = utils.Float64TwoInt64(utils.MustInterface2Float64(result.Data["delivery_fee"]) * 100) // 订单配送价格
baseDeliveryFee = utils.Float64TwoInt64(utils.MustInterface2Float64(result.Data["delivery_fee"]) * 100) // 订单优惠价格
//baseDeliveryFee = utils.Float64TwoInt64(utils.MustInterface2Float64(result.Data["base_delivery_fee"]) * 100) // 订单优惠价格
return deliveryFee, baseDeliveryFee, nil
}

View File

@@ -27,7 +27,7 @@ func init() {
//api = New("4123", "df2c88338b85f830cebce2a9eab56628", "", "")
//商超
//api = New("5873", "41c479790a76f86326f89e8048964739", "", "token_n4TwqCntWWuvQwAawzxC0w") //token_n4TwqCntWWuvQwAawzxC0w
api = New("5873", "41c479790a76f86326f89e8048964739", "", "token_nFTOat5DYhvqHIZbDZRJkQ") //token_n4TwqCntWWuvQwAawzxC0w
cookieStr := `
acctId=57396785; token=0bWbK5VbK50E2BmIhIH2zHB-am_y7mB37yXHm6RLZWx4*; wmPoiId=-1;
`

View File

@@ -120,10 +120,10 @@ func TestRetailListAll(t *testing.T) {
// 删除所有门店商品
func TestReloadStoreSku(t *testing.T) {
result, err := api.RetailListAll("17817296")
result, err := api.RetailListAll("17223201")
if err == nil {
for i := 0; i < len(result); i++ {
err := api.RetailDelete(utils.Int64ToStr(time.Now().Unix()), "17817296", result[i].AppFoodCode)
err := api.RetailDelete(utils.Int64ToStr(time.Now().Unix()), "17223201", result[i].AppFoodCode)
if err != nil {
fmt.Println(err)
}

View File

@@ -18,7 +18,7 @@ import (
// "authority_id": ""
//}`
var token = `{"access_token":"71896365-cec7-4982-a686-0d8f3044cc1e","expires_in":1682872676,"scope":"SCOPE","shop_id":57939570,"shop_name":"京西菜市速食","refresh_token":"76d410d2-e869-4ddc-b8ad-0ae652114e13","authority_id":""}`
var token = `{"access_token":"09e5b626-418f-4780-ab33-857ba8f69b49","expires_in":1684077242,"scope":"SCOPE","shop_id":57939570,"shop_name":"京西菜市速食","refresh_token":"04a82701-a439-4dad-a20a-48299b0dffcd","authority_id":""}`
//var token = `{"access_token":"e3173e9f-266f-4d87-88e7-e7cd837bc9d9","expires_in":1672882632,"scope":"SCOPE","shop_id":68023619,"shop_name":"京西到家","refresh_token":"5070aae2-493f-46bd-b5d6-6ea0cd64729f","authority_id":""}`

View File

@@ -30,3 +30,9 @@ func tryCatName2Code(originName string) (catCodeStr string) {
}
return catCodeStr
}
func TestCa(t *testing.T) {
name := "四川省"
fmt.Println(len(name))
fmt.Println(name[0:6])
}

View File

@@ -303,7 +303,7 @@ func TestDeleteSkuAndUploadSkuXiaJiaBiXu(t *testing.T) {
CheckStatus: 1, // 1-未提交2-待审核3-审核通过4-审核未通过5-封禁7-审核通过待上架
Page: int64(i),
Size: 100,
StoreId: v,
StoreId: 63509510,
})
if err != nil {
globals.SugarLogger.Debugf("=index := %d ,err := %s", i, utils.Format4Output(err, false))

View File

@@ -3,6 +3,7 @@ package tonglianpayapi
import (
"crypto/md5"
"fmt"
"git.rosy.net.cn/jx-callback/globals"
"net/http"
"sort"
"strings"
@@ -192,6 +193,8 @@ func (a *API) CreateUnitorderOrder(param *CreateUnitorderOrderParam) (result *Cr
params["paytype"] = param.PayType
params["sub_appid"] = param.SubAppID
retVal, err := a.AccessAPI(sepcAction, params)
globals.SugarLogger.Debugf("===========err := %s", utils.Format4Output(retVal, false))
globals.SugarLogger.Debugf("===========err := %s", utils.Format4Output(err, false))
if err == nil {
utils.Map2StructByJson(retVal, &result, false)
}

View File

@@ -67,6 +67,7 @@ func (a *API) GetOrderDetail(orderCode string) (*GetOrderDetailResp, error) {
}
con := retVal != GetOrderDetailResp{}
if con {
retVal.OrderPrice = utils.Float64ToStr(utils.Str2Float64(retVal.OrderPrice) + float64(utils.WayBillDeliveryMarkUp/100) + float64(0.2))
return &retVal, nil
} else {
return nil, fmt.Errorf("UU跑腿未返回运单详情")

View File

@@ -23,8 +23,9 @@ var json1 = jsoniter.ConfigCompatibleWithStandardLibrary
const MaxTimeSecond = 9573800254 // 正常最大的秒数
var (
DefaultTimeValue = Str2Time("1970-01-01 00:00:00")
ZeroTimeValue = time.Time{}
DefaultTimeValue = Str2Time("1970-01-01 00:00:00")
WayBillDeliveryMarkUp = 20 // 运单加价两毛钱
ZeroTimeValue = time.Time{}
)
func UnmarshalUseNumber(data []byte, result interface{}) error {