4 Commits

Author SHA1 Message Date
zhongqiang
5574b1ba4e Merge branch 'refs/heads/feature/对接新供应链-唯品尚' 2025-06-17 12:03:21 +08:00
zhongqiang
0b6b76c708 对接新供应链-唯品尚 2025-06-17 12:03:01 +08:00
zhongqiang
4c27cecde1 Merge branch 'refs/heads/feature/对接新供应链-唯品尚' 2025-06-04 11:00:37 +08:00
zhongqiang
1b97811c6a 对接新供应链-唯品尚 2025-06-04 11:00:10 +08:00
4 changed files with 155 additions and 20 deletions

View File

@@ -46,6 +46,14 @@ type CreateOrderReq struct {
NoticeUrl string `json:"noticeUrl"` //合作方通知地址 noticeUrl 否 String 规定值 如支持,订单更新实时通知。此参数可不用传,统一走异步回调
}
type RefundDeliveryReq struct {
McOrderNo string `json:"mcOrderNo"` // 子订单号 是 int 下单时候返回子订单号 20190704124955600363
DeliveryName string `json:"deliveryName"` // 快递公司
DeliveryNo string `json:"deliveryNo"` // 快递单号
Freight string `json:"freight"` // 运费金额 freight 否 string 单位:元
FreightImg string `json:"freightImg"` // 运费支付凭证 freightImg 否 string 图片地址
}
// test ------------------------------------------------
type DeliverGoodsReq struct {

View File

@@ -125,6 +125,11 @@ type OrderCancelRes struct {
Msg string `json:"msg"` // 请求接口消息
}
type RefundDeliveryRes struct {
Code int `json:"code"` // 0为成功其它为失败
Msg string `json:"msg"` // 请求接口消息
}
// test -------------------------------------
type TestRes struct {

View File

@@ -5,6 +5,7 @@ import (
"crypto/md5"
"encoding/hex"
"encoding/json"
"errors"
"fmt"
"io"
"net/http"
@@ -143,11 +144,9 @@ func (w *WeiPinShangClient) GetOrderInfoByThirdNO(orderNo string) (res *GetOrder
func (w *WeiPinShangClient) GetOrderInfoByItemNO(mcOrderNo string) (res *GetOrderInfoByItemNORes, err error) {
fmt.Println("mcOrderNo", mcOrderNo)
//paramMap := make(map[string]any)
//paramMap["mcOrderNo"] = mcOrderNo
paramMap := map[string]any{
"mcOrderNo": mcOrderNo,
}
paramMap := make(map[string]any)
paramMap["mcOrderNo"] = mcOrderNo
postRes, err := w.WPSPost("mcang/Order/getOrderInfoByItemNO", paramMap)
if err != nil {
return
@@ -227,6 +226,27 @@ func (w *WeiPinShangClient) OrderCancel(mcOrderNo string) (res *OrderCancelRes,
return
}
func (w *WeiPinShangClient) RefundDelivery(refundDeliveryReq RefundDeliveryReq) (res *RefundDeliveryRes, err error) {
fmt.Println("refundDeliveryReq", refundDeliveryReq)
paramMap := make(map[string]any)
paramMap["mcOrderNo"] = refundDeliveryReq.McOrderNo
paramMap["deliveryName"] = refundDeliveryReq.DeliveryName
paramMap["deliveryNo"] = refundDeliveryReq.DeliveryNo
paramMap["freight"] = refundDeliveryReq.Freight
paramMap["freightImg"] = refundDeliveryReq.FreightImg
postRes, err := w.WPSPost("mcang/Refunds/refundDelivery", paramMap)
if err != nil {
return
}
err = json.Unmarshal(postRes, &res)
if err != nil || res == nil {
err = fmt.Errorf("转换RefundDeliveryRes结构体失败: %s", string(postRes))
return
}
return
}
func (w *WeiPinShangClient) Sign(paramMap map[string]any) (res string, err error) {
var sumParamString string
if len(paramMap) != 0 {
@@ -278,7 +298,7 @@ func (w *WeiPinShangClient) WPSPost(url string, paramMap map[string]any) (res []
fmt.Printf("res: %s\n", string(res))
if !json.Valid(res) {
return nil, fmt.Errorf("响应不是有效的JSON格式: %s", string(res))
return nil, errors.New("响应不是有效的JSON格式")
}
return

View File

@@ -80,14 +80,14 @@ func TestWeiPinShangClient_PreOrder(t *testing.T) {
Key: "f654ea5bde7635c3f46191191e5c4c8e",
},
args: PreOrderReq{
GoodsInfo: "[{\"goodsId\":\"WPS9_282520\",\"goodSpecId\":\"WPS9_1221183858889276\",\"num\":2},{\"goodsId\":\"WPS2_0213160707208717\",\"goodSpecId\":\"WPS2_0213160707965791\",\"num\":2}]",
GoodsInfo: "[{\"goodsId\":\"WPS9_282520\",\"goodSpecId\":\"WPS9_1221183858889276\",\"num\":2}]",
Province: "广东省",
Address: "奥园",
City: "广州市",
Area: "番禺区",
ConsigneePhone: "15375390426",
ConsigneeContacts: "张三",
LockCode: "L0123456789",
LockCode: "L100000000",
Source: "AILEHUI",
},
},
@@ -135,8 +135,8 @@ func TestWeiPinShangClient_CreateOrder(t *testing.T) {
Key: "f654ea5bde7635c3f46191191e5c4c8e",
},
args: CreateOrderReq{
LockCode: "L0123456789",
OrderNo: "20000000000",
LockCode: "L100000000",
OrderNo: "30000000000",
},
},
}
@@ -233,7 +233,7 @@ func TestWeiPinShangClient_GetOrderInfoByItemNO(t *testing.T) {
},
args: args{
//mcOrderNo: "mc20250527174640537475",
mcOrderNo: "mc20250529102347907570",
mcOrderNo: "mc20250616115732440085",
},
},
}
@@ -292,7 +292,7 @@ func TestWeiPinShangClient_GetOrderInfoByThirdNO(t *testing.T) {
Key: "f654ea5bde7635c3f46191191e5c4c8e",
},
args: args{
orderNo: "20250527172503439229",
orderNo: "570872619444771455",
},
},
}
@@ -339,7 +339,7 @@ func TestWeiPinShangClient_IsRefund(t *testing.T) {
Key: "f654ea5bde7635c3f46191191e5c4c8e",
},
args: args{
mcOrderNo: "mc20250529102347907570",
mcOrderNo: "mc20250613182629112823",
},
},
}
@@ -362,6 +362,108 @@ func TestWeiPinShangClient_IsRefund(t *testing.T) {
}
}
func TestWeiPinShangClient_OrderCancel(t *testing.T) {
type fields struct {
Host string
ChannelType string
Key string
}
type args struct {
mcOrderNo string
}
tests := []struct {
name string
fields fields
args args
wantRes *IsRefundRes
wantErr bool
}{
{
name: "test1",
fields: fields{
Host: "https://uat.api.weipinshang.net/",
ChannelType: "AILEHUI",
Key: "f654ea5bde7635c3f46191191e5c4c8e",
},
args: args{
mcOrderNo: "mc20250529102347485667",
},
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
h := &WeiPinShangClient{
Host: test.fields.Host,
ChannelType: test.fields.ChannelType,
Key: test.fields.Key,
}
gotRes, err := h.OrderCancel(test.args.mcOrderNo)
log.Println(gotRes, err)
if (err != nil) != test.wantErr {
t.Errorf("GetManyPostage() error = %v, wantErr %v", err, test.wantErr)
}
})
}
}
func TestWeiPinShangClient_CreateAfsApply(t *testing.T) {
type fields struct {
Host string
ChannelType string
Key string
}
tests := []struct {
name string
fields fields
args CreateAfsApplyReq
wantRes *IsRefundRes
wantErr bool
}{
{
name: "test1",
fields: fields{
Host: "https://uat.api.weipinshang.net/",
ChannelType: "AILEHUI",
Key: "f654ea5bde7635c3f46191191e5c4c8e",
},
args: CreateAfsApplyReq{
CustomerContactName: "钟",
CustomerExpect: 10,
CustomerMobilePhone: "15375399426",
CustomerTel: "15375399426",
McOrderNo: "mc20250613182629112823",
PickwareAddress: "奥园",
PickwareCity: "广州",
PickwareCounty: "番禺",
PickwareProvince: "广东",
QuestionDesc: "商品问题",
QuestionPic: "11",
},
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
h := &WeiPinShangClient{
Host: test.fields.Host,
ChannelType: test.fields.ChannelType,
Key: test.fields.Key,
}
gotRes, err := h.CreateAfsApply(&test.args)
log.Println(gotRes, err)
if (err != nil) != test.wantErr {
t.Errorf("GetManyPostage() error = %v, wantErr %v", err, test.wantErr)
}
})
}
}
// test ---------------------------------------------------
func TestWeiPinShangClient_DeliverGoods(t *testing.T) {
@@ -386,7 +488,7 @@ func TestWeiPinShangClient_DeliverGoods(t *testing.T) {
Key: "f654ea5bde7635c3f46191191e5c4c8e",
},
args: DeliverGoodsReq{
COrderItemNo: "mc20250527172503957733",
COrderItemNo: "mc20250613182629112823",
CDeliveryName: "顺丰",
CDeliveryNo: "1234567890",
},
@@ -400,9 +502,9 @@ func TestWeiPinShangClient_DeliverGoods(t *testing.T) {
Key: "f654ea5bde7635c3f46191191e5c4c8e",
},
args: DeliverGoodsReq{
COrderItemNo: "mc20250527172503673418",
CDeliveryName: "京东",
CDeliveryNo: "1234567890",
COrderItemNo: "mc20250616113428587322",
CDeliveryName: "顺丰0",
CDeliveryNo: "SF9900000099",
},
},
}
@@ -446,7 +548,7 @@ func TestWeiPinShangClient_UpdateService(t *testing.T) {
Key: "f654ea5bde7635c3f46191191e5c4c8e",
},
args: UpdateServiceReq{
COrderItemNo: "20250527172503439229",
COrderItemNo: "mc20250612153935670660",
CType: "1",
},
},
@@ -459,8 +561,8 @@ func TestWeiPinShangClient_UpdateService(t *testing.T) {
Key: "f654ea5bde7635c3f46191191e5c4c8e",
},
args: UpdateServiceReq{
COrderItemNo: "10000000000",
CType: "2",
COrderItemNo: "mc20250609180246814560",
CType: "3",
},
},
}