修复支付取消与成功统计

This commit is contained in:
yml
2026-06-14 23:58:39 +08:00
parent 3ff8c1de88
commit a275a006eb
11 changed files with 412 additions and 7 deletions
@@ -512,3 +512,63 @@ func TestConfirmPaidRollsBackOrderWhenPaymentUpdateFails(t *testing.T) {
t.Fatalf("asset status = %q/%q, want rollback to published/published", latestListing.Status, latestAccount.Status)
}
}
// TestQueryClosedPaymentReturnsLocalStatus 验证关闭状态不再依赖渠道配置或继续轮询渠道。
func TestQueryClosedPaymentReturnsLocalStatus(t *testing.T) {
db := setupPaymentTestDB(t)
repo := NewRepository(db, nil, nil)
payment := model.PaymentOrder{
PaymentNo: "PAY20260614CLOSED",
OrderID: 9001,
OrderNo: "ORD20260614CLOSED",
UserID: 8001,
Provider: "lakala",
ThirdOrderID: "PAY20260614CLOSED",
AmountCent: 1000,
BizType: "order_pay",
Status: "closed",
}
if err := db.Create(&payment).Error; err != nil {
t.Fatalf("create payment failed: %v", err)
}
dto, err := repo.Query(t.Context(), payment.UserID, payment.OrderID)
if err != nil {
t.Fatalf("Query() error = %v", err)
}
if dto.Status != "closed" {
t.Fatalf("status = %q, want closed", dto.Status)
}
}
// TestApplyChannelStatusKeepsTerminalPayment 验证已关闭支付单不会被渠道普通状态重新刷回支付中。
func TestApplyChannelStatusKeepsTerminalPayment(t *testing.T) {
db := setupPaymentTestDB(t)
repo := NewRepository(db, nil, nil)
payment := model.PaymentOrder{
PaymentNo: "PAY20260614TERMINAL",
OrderID: 9002,
OrderNo: "ORD20260614TERMINAL",
UserID: 8002,
Provider: "lakala",
ThirdOrderID: "PAY20260614TERMINAL",
AmountCent: 1000,
BizType: "order_pay",
Status: "closed",
}
if err := db.Create(&payment).Error; err != nil {
t.Fatalf("create payment failed: %v", err)
}
if err := repo.applyChannelStatus(t.Context(), &payment, "paying", "", map[string]string{"status": "paying"}, channelSourceNotify); err != nil {
t.Fatalf("applyChannelStatus() error = %v", err)
}
var latest model.PaymentOrder
if err := db.First(&latest, payment.ID).Error; err != nil {
t.Fatalf("find payment failed: %v", err)
}
if latest.Status != "closed" {
t.Fatalf("status = %q, want closed", latest.Status)
}
}