Files
opsx-licence/backend/internal/service/payment/waffo_test.go
T
Logan.LiandCursor f00ea7e873 fix: Waffo webhook 支持 GET 探测,避免浏览器打开 404
仪表盘/浏览器用 GET 校验 URL 时返回 ready;支付事件仍走 POST。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-12 15:57:37 +08:00

65 lines
1.7 KiB
Go

package payment
import (
"net/url"
"strings"
"testing"
)
func TestBuildCheckoutURL_YearlySubscription(t *testing.T) {
cfg := WaffoConfig{
StoreSlug: "opsxshell-pwsi6m4n",
ProductIDYearly: "PROD_2WmkUVoYWt0NN8OVEyC6n3",
ProductIDPerpetual: "PROD_0pcnzzT4nalEkkcdyIUoD5",
Currency: "USD",
Environment: "test",
SuccessURL: "opsxshell://pro/activated",
}
raw, err := BuildCheckoutURL(cfg, "ORD1", "dev-1", "a@b.c", "", "yearly")
if err != nil {
t.Fatal(err)
}
u, err := url.Parse(raw)
if err != nil {
t.Fatal(err)
}
if !strings.Contains(u.Path, "PROD_2WmkUVoYWt0NN8OVEyC6n3") {
t.Fatalf("yearly product missing: %s", raw)
}
q := u.Query()
if q.Get("type") != "subscription" {
t.Fatalf("type=%s want subscription", q.Get("type"))
}
if q.Get("currency") != "USD" {
t.Fatalf("currency=%s", q.Get("currency"))
}
if q.Get("test") != "true" {
t.Fatalf("test=%s", q.Get("test"))
}
}
func TestBuildCheckoutURL_PerpetualOnetime(t *testing.T) {
cfg := WaffoConfig{
StoreSlug: "opsxshell-pwsi6m4n",
ProductIDYearly: "PROD_2WmkUVoYWt0NN8OVEyC6n3",
ProductIDPerpetual: "PROD_0pcnzzT4nalEkkcdyIUoD5",
Currency: "USD",
Environment: "test",
SuccessURL: "opsxshell://pro/activated",
}
raw, err := BuildCheckoutURL(cfg, "ORD2", "dev-1", "a@b.c", "", "perpetual")
if err != nil {
t.Fatal(err)
}
u, err := url.Parse(raw)
if err != nil {
t.Fatal(err)
}
if !strings.Contains(u.Path, "PROD_0pcnzzT4nalEkkcdyIUoD5") {
t.Fatalf("perpetual product missing: %s", raw)
}
if u.Query().Get("type") != "onetime" {
t.Fatalf("type=%s want onetime", u.Query().Get("type"))
}
}