添加文件: intelligence_finance_v1_ga/example_test.go
This commit is contained in:
parent
efdea027f8
commit
9e5c8be1bf
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue