package pay import ( "encoding/json" "io" "testing" "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests" ) func TestCreateInvoiceRequestRequestBuyerFields(t *testing.T) { tests := []struct { name string buyerType int64 buyerName string buyerTaxNo string }{ {name: "企业抬头", buyerType: 2, buyerName: "测试企业", buyerTaxNo: "91310100MA1K123456"}, {name: "个人抬头", buyerType: 1, buyerName: "张三"}, {name: "旧版个人抬头", buyerName: "张三"}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { req := CreateInvoiceRequestRequest(InvoiceRequestParam{ BuyerType: tt.buyerType, BuyerName: tt.buyerName, BuyerTaxNo: tt.buyerTaxNo, }) initErr := requests.InitParam(req) if initErr != nil { t.Fatal(initErr) } body, readErr := io.ReadAll(req.GetBodyReader()) if readErr != nil { t.Fatal(readErr) } var payload map[string]any decodeErr := json.Unmarshal(body, &payload) if decodeErr != nil { t.Fatal(decodeErr) } if payload["buyer_type"] != float64(tt.buyerType) || payload["buyer_name"] != tt.buyerName { t.Fatalf("抬头字段不匹配:%s", body) } if tt.buyerTaxNo != "" && payload["buyer_tax_no"] != tt.buyerTaxNo { t.Fatalf("购方税号未透传:%s", body) } if tt.buyerTaxNo == "" && payload["buyer_tax_no"] != nil { t.Fatalf("个人抬头不应携带购方税号:%s", body) } }) } }