138 lines
3.4 KiB
Go
138 lines
3.4 KiB
Go
package ymt_v3
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
// 测试参数(请替换为实际值)
|
|
const (
|
|
testAppID = "xxx"
|
|
testPrivateKey = `-----BEGIN PRIVATE KEY-----
|
|
xxx
|
|
-----END PRIVATE KEY-----`
|
|
testPublicKey = `-----BEGIN PUBLIC KEY-----
|
|
xxx
|
|
-----END PUBLIC KEY-----`
|
|
testKey = "xxxx"
|
|
testEncryptType = "aes"
|
|
testBaseURL = "https://gateway.dev.cdlsxd.cn"
|
|
testActivityNo = "xxxx"
|
|
)
|
|
|
|
func TestClient_Order(t *testing.T) {
|
|
client := NewClient(&Config{
|
|
AppID: testAppID,
|
|
PrivateKey: testPrivateKey,
|
|
PublicKey: testPublicKey,
|
|
Key: testKey,
|
|
EncryptType: testEncryptType,
|
|
BaseURL: testBaseURL,
|
|
})
|
|
|
|
resp, err := client.Order(context.Background(), &OrderRequest{
|
|
OutBizNo: "order_001",
|
|
ActivityNo: testActivityNo,
|
|
Account: "18666666666",
|
|
NotifyURL: "https://notify.example.com/openapi",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("Order failed: %v", err)
|
|
}
|
|
fmt.Printf("Order response: %+v\n", resp)
|
|
}
|
|
|
|
func TestClient_Query(t *testing.T) {
|
|
client := NewClient(&Config{
|
|
AppID: testAppID,
|
|
PrivateKey: testPrivateKey,
|
|
PublicKey: testPublicKey,
|
|
Key: testKey,
|
|
EncryptType: testEncryptType,
|
|
BaseURL: testBaseURL,
|
|
})
|
|
|
|
resp, err := client.Query(context.Background(), &QueryRequest{
|
|
OutBizNo: "order_001",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("Query failed: %v", err)
|
|
}
|
|
fmt.Printf("Query response: %+v\n", resp)
|
|
}
|
|
|
|
func TestClient_Discard(t *testing.T) {
|
|
client := NewClient(&Config{
|
|
AppID: testAppID,
|
|
PrivateKey: testPrivateKey,
|
|
PublicKey: testPublicKey,
|
|
Key: testKey,
|
|
EncryptType: testEncryptType,
|
|
BaseURL: testBaseURL,
|
|
})
|
|
|
|
resp, err := client.Discard(context.Background(), &DiscardRequest{
|
|
TradeNo: "7251449503000383488",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("Discard failed: %v", err)
|
|
}
|
|
fmt.Printf("Discard response: %+v\n", resp)
|
|
}
|
|
|
|
func TestClient_BatchOrder(t *testing.T) {
|
|
client := NewClient(&Config{
|
|
AppID: testAppID,
|
|
PrivateKey: testPrivateKey,
|
|
PublicKey: testPublicKey,
|
|
Key: testKey,
|
|
EncryptType: testEncryptType,
|
|
BaseURL: testBaseURL,
|
|
})
|
|
|
|
resp, err := client.BatchOrder(context.Background(), &BatchOrderRequest{
|
|
OutBizNo: "batch_001",
|
|
ActivityNo: testActivityNo,
|
|
Number: 10,
|
|
NotifyURL: "https://notify.example.com/openapi",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("BatchOrder failed: %v", err)
|
|
}
|
|
fmt.Printf("BatchOrder response: %+v\n", resp)
|
|
}
|
|
|
|
func TestClient_BatchQuery(t *testing.T) {
|
|
client := NewClient(&Config{
|
|
AppID: testAppID,
|
|
PrivateKey: testPrivateKey,
|
|
PublicKey: testPublicKey,
|
|
Key: testKey,
|
|
EncryptType: testEncryptType,
|
|
BaseURL: testBaseURL,
|
|
})
|
|
|
|
resp, err := client.BatchQuery(context.Background(), &BatchQueryRequest{
|
|
TradeNo: "7251449503000383499",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("BatchQuery failed: %v", err)
|
|
}
|
|
fmt.Printf("BatchQuery response: %+v\n", resp)
|
|
}
|
|
|
|
func TestVerifyCallback(t *testing.T) {
|
|
// 模拟回调参数
|
|
appID := "123456"
|
|
timestamp := "2026-06-22 15:30:00"
|
|
sign := "base64_encoded_signature"
|
|
data := `{"out_biz_no":"batch_001","trade_no":"7251449503000383499","status":"success","download_url":"https://oss.example.com/openapi_7251449503000383499.zip","zip_password":"123456"}`
|
|
|
|
err := VerifyCallback(appID, timestamp, sign, data, testPublicKey, []byte(testKey), testEncryptType)
|
|
if err != nil {
|
|
t.Logf("VerifyCallback result: %v (expected if sign is invalid)", err)
|
|
} else {
|
|
t.Log("VerifyCallback success")
|
|
}
|
|
} |