添加文件: intelligence_finance_v1_ga/example_test.go

This commit is contained in:
renzhiyuan 2026-08-17 17:04:44 +08:00
parent efdea027f8
commit 9e5c8be1bf
1 changed files with 259 additions and 0 deletions

View File

@ -0,0 +1,259 @@
package intelligence_finance_v1_ga
import (
"context"
"encoding/json"
"fmt"
"testing"
)
// ExampleClient_SubmitInvoiceApply 演示提交订单开票申请。
func ExampleClient_SubmitInvoiceApply() {
ctx := context.Background()
client := NewClient(
"https://api.example.com",
"your-tenant-id",
"dd-ai-table",
"your-client-secret",
)
req := &InvoiceApplyRequest{
OrderID: "ORDER-20240101-001",
InvoiceType: 9, // 数电普票
Purchaser: "某某科技有限公司",
TaxNum: "91330100XXXXXXXXXX",
Email: "finance@example.com",
Phone: "13800000000",
Products: []ProductItem{
{
ProductName: "软件服务",
RevenueCode: "3040201000000000000",
AmountIncludeTax: 11300,
Quantity: 1,
TaxRate: 0.13,
TaxSign: 1,
},
},
}
resp, err := client.SubmitInvoiceApply(ctx, req)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Printf("status=%d errorMsg=%s\n", resp.Status, resp.ErrorMsg)
// Output:
}
// ExampleClient_CreatePayment 演示创建付款单据。
func ExampleClient_CreatePayment() {
ctx := context.Background()
client := NewClient(
"https://api.example.com",
"your-tenant-id",
"dd-ai-table",
"your-client-secret",
)
req := &CreatePaymentRequest{
Code: "PAY-20240101-001",
UserID: "04221***",
Title: "供应商货款",
Amount: "11300.00",
Supplier: &Supplier{
Name: "某某供应商",
},
PaymentDetailList: []PaymentDetail{
{
Amount: "11300.00",
Tax: "1300.00",
},
},
}
resp, err := client.CreatePayment(ctx, req)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Printf("code=%s\n", resp.Code)
// Output:
}
// ExampleClient_CreateSupplier 演示创建供应商。
func ExampleClient_CreateSupplier() {
ctx := context.Background()
client := NewClient(
"https://api.example.com",
"your-tenant-id",
"dd-ai-table",
"your-client-secret",
)
bizData := []SupplierBizData{
{
CorpID: "dingXXXXXX",
Creator: "04221***",
SupplierInfo: &SupplierInfo{
Name: "某某供应商",
CorpID: "dingXXXXXX",
Creator: "04221***",
ContactName: "张三",
ContactTelephone: "18888888888",
InvoiceName: "某某供应商",
InvoiceTaxNo: "91330100XXXXXXXXXX",
},
},
}
dataBytes, _ := json.Marshal(bizData)
req := &CreateSupplierRequest{
InvokeID: "REQ-001",
UserID: "04221***",
Data: string(dataBytes),
BizType: BizTypeCreateSupplier,
}
resp, err := client.CreateSupplier(ctx, req)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Printf("bizType=%s data=%s\n", resp.BizType, resp.Data)
// Output:
}
// ExampleClient_QuerySupplierByName 演示根据名称查询供应商。
func ExampleClient_QuerySupplierByName() {
ctx := context.Background()
client := NewClient(
"https://api.example.com",
"your-tenant-id",
"dd-ai-table",
"your-client-secret",
)
queries := []QueryByName{
{CorpID: "dingXXXXXX", Name: "某某供应商"},
}
dataBytes, _ := json.Marshal(queries)
req := &QuerySupplierByNameRequest{
InvokeID: "REQ-002",
UserID: "04221***",
Data: string(dataBytes),
BizType: BizTypeQuerySupplierByName,
}
resp, err := client.QuerySupplierByName(ctx, req)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Printf("success=%v result=%s\n", resp.Success, resp.Result)
// Output:
}
// ExampleClient_UpdateSupplier 演示更新供应商。
func ExampleClient_UpdateSupplier() {
ctx := context.Background()
client := NewClient(
"https://api.example.com",
"your-tenant-id",
"dd-ai-table",
"your-client-secret",
)
bizData := UpdateSupplierBizData{
SupplierID: "SUP_XXXXX",
Name: "某某供应商",
CorpID: "dingXXXXXX",
UserID: "04221***",
ContactName: "李四",
ContactTelephone: "18888888888",
AccountType: AccountTypeCorpBankCard,
}
dataBytes, _ := json.Marshal(bizData)
req := &UpdateSupplierRequest{
InvokeID: "REQ-003",
UserID: "04221***",
Data: string(dataBytes),
BizType: BizTypeUpdateSupplier,
}
resp, err := client.UpdateSupplier(ctx, req)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Printf("bizType=%s\n", resp.BizType)
// Output:
}
// ExampleClient_QuerySupplierByUserDefineCode 演示根据用户自定义编码查询供应商。
func ExampleClient_QuerySupplierByUserDefineCode() {
ctx := context.Background()
client := NewClient(
"https://api.example.com",
"your-tenant-id",
"dd-ai-table",
"your-client-secret",
)
bizData := QueryByUserDefineCode{
CorpID: "dingXXXXXX",
UserDefineCode: "SUP-CODE-001",
}
dataBytes, _ := json.Marshal(bizData)
req := &QuerySupplierByUserDefineCodeRequest{
InvokeID: "REQ-004",
UserID: "04221***",
Data: string(dataBytes),
BizType: BizTypeQuerySupplierByUserDefine,
}
resp, err := client.QuerySupplierByUserDefineCode(ctx, req)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Printf("bizType=%s data=%s\n", resp.BizType, resp.Data)
// Output:
}
// TestVerifyNotificationSignature 演示通知验签。
func TestVerifyNotificationSignature(t *testing.T) {
verifyKey := "customer-verify-secret"
rawBody := []byte(`{"bizType":"payment","bizId":"PAY-001","data":"{}"}`)
sign := HmacSHA256Base64(verifyKey, string(rawBody))
ok, err := VerifyNotificationSignature(verifyKey, rawBody, sign)
if err != nil {
t.Fatalf("verify error: %v", err)
}
if !ok {
t.Fatal("signature mismatch")
}
}
// TestParsePaymentNotify 演示解析支付完成通知。
func TestParsePaymentNotify(t *testing.T) {
body := []byte(`{
"code":"PAY-001",
"instanceId":"inst-001",
"corpId":"dingXXXXXX",
"paymentStatus":"SUCCESS",
"paymentTime":"2024-01-01 10:00:00",
"userId":"04221***",
"amount":"11300.00"
}`)
n, err := ParsePaymentNotify(body)
if err != nil {
t.Fatalf("parse error: %v", err)
}
if n.PaymentStatus != PaymentStatusSuccess {
t.Fatalf("unexpected status: %s", n.PaymentStatus)
}
}