添加文件: example_test.go
This commit is contained in:
parent
54d4cba9e0
commit
1fdcab92e9
|
|
@ -0,0 +1,105 @@
|
|||
package xyshanghai
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 测试用的密钥和盐值(实际使用时需替换为双方约定的值)
|
||||
var (
|
||||
testSM4Key, _ = hex.DecodeString("0123456789abcdef0123456789abcdef") // 16字节
|
||||
testSM3Salt = []byte("test-salt")
|
||||
)
|
||||
|
||||
func TestCreateOrder(t *testing.T) {
|
||||
apiKey := NewAPIKey(testSM4Key, testSM3Salt)
|
||||
client := NewClient(apiKey, WithBaseURL("https://api.example.com"), WithTimeout(10*time.Second))
|
||||
|
||||
req := &CreateOrderRequest{
|
||||
ActCode: "ACT001",
|
||||
GoodsCode: "123456",
|
||||
ActOrderNum: "00001",
|
||||
Account: "19912345678",
|
||||
CallbackURL: "https://xxx/notice",
|
||||
}
|
||||
|
||||
resp, err := client.CreateOrder(context.Background(), req)
|
||||
if err != nil {
|
||||
t.Logf("CreateOrder error: %v", err)
|
||||
// 实际测试中可能因为网络原因失败,这里仅验证逻辑
|
||||
return
|
||||
}
|
||||
t.Logf("CreateOrder response: %+v", resp)
|
||||
}
|
||||
|
||||
func TestQueryOrder(t *testing.T) {
|
||||
apiKey := NewAPIKey(testSM4Key, testSM3Salt)
|
||||
client := NewClient(apiKey, WithBaseURL("https://api.example.com"))
|
||||
|
||||
req := &QueryOrderRequest{
|
||||
ActCode: "FBG6vdYqGE4mGX7EH/woEg==",
|
||||
OrderNo: "HM1757046717684000102707339840b23222",
|
||||
}
|
||||
|
||||
resp, err := client.QueryOrder(context.Background(), req)
|
||||
if err != nil {
|
||||
t.Logf("QueryOrder error: %v", err)
|
||||
return
|
||||
}
|
||||
t.Logf("QueryOrder response: %+v", resp)
|
||||
}
|
||||
|
||||
func TestRechargeOrder(t *testing.T) {
|
||||
apiKey := NewAPIKey(testSM4Key, testSM3Salt)
|
||||
client := NewClient(apiKey, WithBaseURL("https://api.example.com"))
|
||||
|
||||
req := &RechargeOrderRequest{
|
||||
ActCode: "FBG6vdYqGE4mGX7EH/woEg==",
|
||||
GoodsCode: "0001",
|
||||
ActOrderNum: "0001",
|
||||
OpenID: "0001",
|
||||
AppID: "00001",
|
||||
}
|
||||
|
||||
resp, err := client.RechargeOrder(context.Background(), req)
|
||||
if err != nil {
|
||||
t.Logf("RechargeOrder error: %v", err)
|
||||
return
|
||||
}
|
||||
t.Logf("RechargeOrder response: %+v", resp)
|
||||
}
|
||||
|
||||
func TestParseCallbackRequest(t *testing.T) {
|
||||
// 模拟回调请求的构造和解析
|
||||
apiKey := NewAPIKey(testSM4Key, testSM3Salt)
|
||||
client := NewClient(apiKey)
|
||||
|
||||
// 构造回调业务数据
|
||||
callbackReq := &CallbackRequest{
|
||||
OrderNo: "HM202509291010001",
|
||||
ActOrderNum: "XY2025092910100001",
|
||||
Status: 3,
|
||||
Account: "19912345678",
|
||||
}
|
||||
|
||||
// 加密
|
||||
plaintext, _ := json.Marshal(callbackReq)
|
||||
encryptedData, _ := SM4Encrypt(apiKey.SM4Key, plaintext)
|
||||
timestamp := "1700000000000"
|
||||
sign := SM3Sign(apiKey.SM3Salt, timestamp+encryptedData)
|
||||
|
||||
// 构造HTTP请求(简化,实际测试需使用httptest)
|
||||
// 这里仅验证加密解密和签名逻辑
|
||||
t.Logf("Encrypted data: %s", encryptedData)
|
||||
t.Logf("Sign: %s", sign)
|
||||
|
||||
// 验证解密
|
||||
decrypted, err := SM4Decrypt(apiKey.SM4Key, encryptedData)
|
||||
if err != nil {
|
||||
t.Fatalf("decrypt error: %v", err)
|
||||
}
|
||||
t.Logf("Decrypted: %s", string(decrypted))
|
||||
}
|
||||
Loading…
Reference in New Issue