bugfix:支付

This commit is contained in:
2026-09-14 02:39:00 +08:00
parent d87f904e33
commit 714d8ff396
11 changed files with 699 additions and 42 deletions
+25
View File
@@ -190,6 +190,31 @@ func TestIsOrderRefundedStatus(t *testing.T) {
}
}
// TestBuildIOSRefundQueryResponse 校验 iOS 退款问询应答结构:
// 必须带 ErrCode/ErrMsg 并包一层 IosRefundQueryResponse,字段名与官方一致。
// 回归防护:早期实现返回平铺的 {result_code, evidence},Apple 侧无法解析。
func TestBuildIOSRefundQueryResponse(t *testing.T) {
body := BuildIOSRefundQueryResponse(1, "拒绝退款", "订单 OD1 发放的权益已被使用")
var got struct {
ErrCode int `json:"ErrCode"`
ErrMsg string `json:"ErrMsg"`
Resp struct {
ResultCode int `json:"result_code"`
ResultInfo string `json:"result_info"`
Evidence string `json:"evidence"`
} `json:"IosRefundQueryResponse"`
}
if err := json.Unmarshal(body, &got); err != nil {
t.Fatalf("unmarshal ios refund query response: %v, body=%s", err, body)
}
if got.ErrCode != 0 || got.ErrMsg != "success" {
t.Fatalf("ErrCode/ErrMsg = %d/%q, want 0/success", got.ErrCode, got.ErrMsg)
}
if got.Resp.ResultCode != 1 || got.Resp.ResultInfo != "拒绝退款" || got.Resp.Evidence == "" {
t.Fatalf("IosRefundQueryResponse mismatch: %+v", got.Resp)
}
}
// TestXPayOrderInfoUnmarshal 校验 query_order 响应解析:订单字段包在 order 子对象内,status 为数字枚举。
// 回归防护:早期实现把字段平铺在顶层且 status 定义为 string,导致反查恒失败、订单永远停在待支付。
func TestXPayOrderInfoUnmarshal(t *testing.T) {