添加文件: xy-shanghai/example_test.go
This commit is contained in:
parent
9fb253b150
commit
abc2cf10d0
|
|
@ -0,0 +1,125 @@
|
|||
package xyshanghai
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 测试用的密钥和盐值(仅用于测试,生产环境需安全保管)
|
||||
var (
|
||||
testSM4Key = []byte("1234567890abcdef") // 16 字节
|
||||
testSM3Salt = []byte("test-salt")
|
||||
)
|
||||
|
||||
func newTestClient() *Client {
|
||||
return NewClient(
|
||||
WithBaseURL("http://localhost:8080"),
|
||||
WithTimeout(5*time.Second),
|
||||
WithSM4Key(testSM4Key),
|
||||
WithSM3Salt(testSM3Salt),
|
||||
)
|
||||
}
|
||||
|
||||
// TestCreateOrder 测试卡券/直充权益下单接口。
|
||||
func TestCreateOrder(t *testing.T) {
|
||||
client := newTestClient()
|
||||
req := &CreateOrderRequest{
|
||||
ActCode: "ACT001",
|
||||
GoodsCode: "123456",
|
||||
ActOrderNum: "00001",
|
||||
Account: "19912345678",
|
||||
CallbackURL: "https://example.com/notice",
|
||||
}
|
||||
resp, err := client.CreateOrder(context.Background(), req)
|
||||
if err != nil {
|
||||
t.Fatalf("CreateOrder failed: %v", err)
|
||||
}
|
||||
if resp.Code != 0 {
|
||||
t.Fatalf("unexpected code: %d, msg: %s", resp.Code, resp.Msg)
|
||||
}
|
||||
// 解密 data 并解析
|
||||
var data CreateOrderResponseData
|
||||
if err := json.Unmarshal([]byte(resp.Data), &data); err != nil {
|
||||
t.Fatalf("unmarshal response data: %v", err)
|
||||
}
|
||||
fmt.Printf("OrderNo: %s, Status: %d\n", data.OrderNo, data.Status)
|
||||
}
|
||||
|
||||
// TestQueryOrder 测试订单查询接口。
|
||||
func TestQueryOrder(t *testing.T) {
|
||||
client := newTestClient()
|
||||
req := &QueryOrderRequest{
|
||||
ActCode: "FBG6vdYqGE4mGX7EH/woEg==",
|
||||
OrderNo: "HM1757046717684000102707339840b23222",
|
||||
}
|
||||
resp, err := client.QueryOrder(context.Background(), req)
|
||||
if err != nil {
|
||||
t.Fatalf("QueryOrder failed: %v", err)
|
||||
}
|
||||
if resp.Code != 0 {
|
||||
t.Fatalf("unexpected code: %d, msg: %s", resp.Code, resp.Msg)
|
||||
}
|
||||
var data QueryOrderResponseData
|
||||
if err := json.Unmarshal([]byte(resp.Data), &data); err != nil {
|
||||
t.Fatalf("unmarshal response data: %v", err)
|
||||
}
|
||||
fmt.Printf("OrderNo: %s, Status: %d\n", data.OrderNo, data.Status)
|
||||
}
|
||||
|
||||
// TestRechargeOrder 测试微信立减金充值接口。
|
||||
func TestRechargeOrder(t *testing.T) {
|
||||
client := newTestClient()
|
||||
req := &RechargeOrderRequest{
|
||||
ActCode: "FBG6vdYqGE4mGX7EH/woEg==",
|
||||
GoodsCode: "0001",
|
||||
ActOrderNum: "0001",
|
||||
OpenID: "0001",
|
||||
AppID: "00001",
|
||||
}
|
||||
resp, err := client.RechargeOrder(context.Background(), req)
|
||||
if err != nil {
|
||||
t.Fatalf("RechargeOrder failed: %v", err)
|
||||
}
|
||||
if resp.Code != 0 {
|
||||
t.Fatalf("unexpected code: %d, msg: %s", resp.Code, resp.Msg)
|
||||
}
|
||||
var data RechargeOrderResponseData
|
||||
if err := json.Unmarshal([]byte(resp.Data), &data); err != nil {
|
||||
t.Fatalf("unmarshal response data: %v", err)
|
||||
}
|
||||
fmt.Printf("OrderNo: %s, Status: %d, CouponID: %s\n", data.OrderNo, data.Status, data.CouponID)
|
||||
}
|
||||
|
||||
// TestParseCallbackRequest 测试回调请求解析。
|
||||
func TestParseCallbackRequest(t *testing.T) {
|
||||
client := newTestClient()
|
||||
|
||||
// 模拟回调请求参数
|
||||
bizData := CallbackBizData{
|
||||
OrderNo: "HM202509291010001",
|
||||
ActOrderNum: "XY2025092910100001",
|
||||
Status: 3,
|
||||
Account: "19912345678",
|
||||
}
|
||||
bizJSON, _ := json.Marshal(bizData)
|
||||
encrypted, _ := SM4Encrypt(testSM4Key, bizJSON)
|
||||
timestamp := fmt.Sprintf("%d", time.Now().UnixMilli())
|
||||
sign := SM3WithSalt(testSM3Salt, timestamp+string(encrypted))
|
||||
|
||||
// 解析
|
||||
decrypted, err := client.ParseCallbackRequest(timestamp, sign, string(encrypted))
|
||||
if err != nil {
|
||||
t.Fatalf("ParseCallbackRequest failed: %v", err)
|
||||
}
|
||||
var parsed CallbackBizData
|
||||
if err := json.Unmarshal([]byte(decrypted), &parsed); err != nil {
|
||||
t.Fatalf("unmarshal callback data: %v", err)
|
||||
}
|
||||
if parsed.OrderNo != "HM202509291010001" {
|
||||
t.Fatalf("unexpected orderNo: %s", parsed.OrderNo)
|
||||
}
|
||||
fmt.Printf("Callback parsed successfully: %+v\n", parsed)
|
||||
}
|
||||
Loading…
Reference in New Issue