refactor(payment): 支付插件 - 宿主仅通过 RPC 包加载并保护订单版本

This commit is contained in:
ddCat committed 2026-09-02 16:15:57 +08:00
1 parent d6bbdbe27b
commit 38e715ea3f
45 files changed
+1584 -203

No files matched your search

+29
View File
@@ -0,0 +1,29 @@
package payment
import (
"context"
"os"
"path/filepath"
"testing"
)
func TestRPCProviderUsesPaymentV1Contract(t *testing.T) {
dir := t.TempDir()
entry := filepath.Join(dir, "provider")
program := "#!/bin/sh\nread request\nprintf '%s\\n' '{\"ok\":true,\"data\":{\"mode\":\"qr_code\",\"value\":\"https://pay.example/qr\"}}'\n"
if err := os.WriteFile(entry, []byte(program), 0o700); err != nil {
t.Fatal(err)
}
provider, err := NewRPCProvider(Descriptor{ID: "test-provider", PluginID: "test-plugin", CheckoutMode: "qr_code"}, dir, "backend/provider")
if err != nil {
t.Fatal(err)
}
provider.command = entry
checkout, err := provider.CreateOrder(context.Background(), Config{"merchantId": "m"}, CreateRequest{MerchantOrderNo: "order-1"})
if err != nil {
t.Fatal(err)
}
if checkout.Mode != "qr_code" || checkout.Value != "https://pay.example/qr" {
t.Fatalf("checkout = %#v", checkout)
}
}