添加文件: types.go
This commit is contained in:
parent
6384e7eb4f
commit
c047aae7e7
|
|
@ -0,0 +1,357 @@
|
||||||
|
package intelligence_finance
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// General API Response
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
// APIResponse is the general response wrapper returned by the platform APIs.
|
||||||
|
type APIResponse struct {
|
||||||
|
Code int `json:"code"`
|
||||||
|
Msg string `json:"msg,omitempty"`
|
||||||
|
Data map[string]interface{} `json:"data,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// Interface 1: 订单开票接口 (Invoice Create)
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
// InvoiceCreateRequest is the request for creating an invoice order.
|
||||||
|
type InvoiceCreateRequest struct {
|
||||||
|
CompanyCode string `json:"companyCode,omitempty"`
|
||||||
|
OrderID string `json:"orderId"`
|
||||||
|
InvoiceType int `json:"invoiceType"`
|
||||||
|
Products []InvoiceProduct `json:"products"`
|
||||||
|
Remark string `json:"remark,omitempty"`
|
||||||
|
Purchaser string `json:"purchaser"`
|
||||||
|
TaxNum string `json:"taxnum,omitempty"`
|
||||||
|
PurchaserAddr string `json:"purchaserAddress,omitempty"`
|
||||||
|
PurchaserTel string `json:"purchaserTel,omitempty"`
|
||||||
|
BankName string `json:"bankName,omitempty"`
|
||||||
|
BankAccount string `json:"bankAccount,omitempty"`
|
||||||
|
Phone string `json:"phone,omitempty"`
|
||||||
|
Email string `json:"email,omitempty"`
|
||||||
|
ApplyPerson string `json:"applyPerson,omitempty"`
|
||||||
|
Payee string `json:"payee,omitempty"`
|
||||||
|
Reviewer string `json:"reviewer,omitempty"`
|
||||||
|
InvoiceRemark string `json:"invoiceRemark,omitempty"`
|
||||||
|
NaturalPerson string `json:"naturalPerson,omitempty"`
|
||||||
|
AdditionInfo string `json:"additionInfo,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// InvoiceProduct represents a single product/service line item in an invoice.
|
||||||
|
type InvoiceProduct struct {
|
||||||
|
ProductName string `json:"productName"`
|
||||||
|
RevenueCode string `json:"revenueCode"`
|
||||||
|
AmountIncludeTax float64 `json:"amountIncludeTax"`
|
||||||
|
Specs string `json:"specs,omitempty"`
|
||||||
|
Unit string `json:"unit,omitempty"`
|
||||||
|
Quantity float64 `json:"quantity"`
|
||||||
|
Discount float64 `json:"discount,omitempty"`
|
||||||
|
TaxSign int `json:"taxSign,omitempty"`
|
||||||
|
TaxRate float64 `json:"taxRate,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// InvoiceCreateResponse is the response for creating an invoice order.
|
||||||
|
type InvoiceCreateResponse struct {
|
||||||
|
Status int `json:"status"`
|
||||||
|
ErrorMsg string `json:"errorMsg,omitempty"`
|
||||||
|
DataList []InvoiceData `json:"dataList"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// InvoiceData contains detailed information about a single invoice.
|
||||||
|
type InvoiceData struct {
|
||||||
|
DeviceCode string `json:"deviceCode"`
|
||||||
|
Drawer string `json:"drawer"`
|
||||||
|
Email string `json:"email"`
|
||||||
|
InvoiceType string `json:"invoiceType"`
|
||||||
|
IssueType string `json:"issueType"`
|
||||||
|
ListFlag string `json:"listFlag"`
|
||||||
|
Mobile string `json:"mobile"`
|
||||||
|
OriginalInvCode string `json:"originalInvCode,omitempty"`
|
||||||
|
OriginalInvNo string `json:"originalInvNo,omitempty"`
|
||||||
|
AdditionInfo string `json:"additionInfo,omitempty"`
|
||||||
|
Payee string `json:"payee"`
|
||||||
|
PurchaserAddress string `json:"purchaserAddress"`
|
||||||
|
PurchaserBankAcct string `json:"purchaserBankAccount"`
|
||||||
|
PurchaserBankName string `json:"purchaserBankName"`
|
||||||
|
PurchaserName string `json:"purchaserName"`
|
||||||
|
PurchaserTaxNo string `json:"purchaserTaxNo"`
|
||||||
|
PurchaserTel string `json:"purchaserTel"`
|
||||||
|
NaturalPerson string `json:"naturalPerson,omitempty"`
|
||||||
|
Remark string `json:"remark"`
|
||||||
|
Reviewer string `json:"reviewer"`
|
||||||
|
SellerAddress string `json:"sellerAddress,omitempty"`
|
||||||
|
SellerBankAcct string `json:"sellerBankAccount"`
|
||||||
|
SellerBankName string `json:"sellerBankName"`
|
||||||
|
SellerName string `json:"sellerName"`
|
||||||
|
CheckCode string `json:"checkCode"`
|
||||||
|
CipherText string `json:"cipherText"`
|
||||||
|
DrewDate string `json:"drewDate,omitempty"`
|
||||||
|
InvoiceCode string `json:"invoiceCode"`
|
||||||
|
InvoiceNo string `json:"invoiceNo"`
|
||||||
|
InvoiceStatus string `json:"invoiceStatus"`
|
||||||
|
LayoutFileURL string `json:"layoutFileUrl,omitempty"`
|
||||||
|
PDFURL string `json:"pdfUrl,omitempty"`
|
||||||
|
OFDURL string `json:"ofdUrl,omitempty"`
|
||||||
|
XMLURL string `json:"xmlUrl,omitempty"`
|
||||||
|
TotalExcludeTax string `json:"totalExcludeTax"`
|
||||||
|
TotalIncludeTax string `json:"totalIncludeTax"`
|
||||||
|
TotalTaxAmount string `json:"totalTaxAmount"`
|
||||||
|
LevyingType string `json:"levyingType"`
|
||||||
|
Details []InvoiceDetail `json:"details"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// InvoiceDetail represents a product detail line within an invoice.
|
||||||
|
type InvoiceDetail struct {
|
||||||
|
Amount string `json:"amount,omitempty"`
|
||||||
|
Quantity string `json:"quantity,omitempty"`
|
||||||
|
DeductionAmount string `json:"deductionAmount,omitempty"`
|
||||||
|
TaxAmount string `json:"taxAmount,omitempty"`
|
||||||
|
ItemTitle string `json:"itemTitle"`
|
||||||
|
TaxCode string `json:"taxCode"`
|
||||||
|
ItemType string `json:"itemType"`
|
||||||
|
ItemName string `json:"itemName"`
|
||||||
|
Specs string `json:"specs,omitempty"`
|
||||||
|
TaxFreePolicy string `json:"taxFreePolicy"`
|
||||||
|
PreferentialPolicy string `json:"preferentialPolicy"`
|
||||||
|
TaxRate string `json:"taxRate"`
|
||||||
|
TaxSign string `json:"taxSign"`
|
||||||
|
Unit string `json:"unit,omitempty"`
|
||||||
|
UnitPrice string `json:"unitPrice,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// Interface 2: 开票状态查询 (Invoice Status Query)
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
// InvoiceStatusQueryRequest is the request for querying invoice status.
|
||||||
|
type InvoiceStatusQueryRequest struct {
|
||||||
|
OrderID string `json:"orderId"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// InvoiceStatusQueryResponse is the response for querying invoice status.
|
||||||
|
type InvoiceStatusQueryResponse struct {
|
||||||
|
Status int `json:"status"`
|
||||||
|
Message string `json:"message,omitempty"`
|
||||||
|
Data []InvoiceData `json:"data"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// Interface 3: 创建付款单据 (Create Payment Order)
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
// CreatePaymentOrderRequest is the request for creating a payment order.
|
||||||
|
type CreatePaymentOrderRequest struct {
|
||||||
|
Code string `json:"code"`
|
||||||
|
YidaAppType string `json:"yidaAppType,omitempty"`
|
||||||
|
EmpAccountUserID string `json:"empAccountUserId,omitempty"`
|
||||||
|
Department *Department `json:"department,omitempty"`
|
||||||
|
Usage string `json:"usage,omitempty"`
|
||||||
|
PaymentUserID string `json:"paymentUserId,omitempty"`
|
||||||
|
Customer *Customer `json:"customer,omitempty"`
|
||||||
|
PrincipalID string `json:"principalId,omitempty"`
|
||||||
|
Remark string `json:"remark,omitempty"`
|
||||||
|
Supplier *Supplier `json:"supplier,omitempty"`
|
||||||
|
Title string `json:"title,omitempty"`
|
||||||
|
Project *Project `json:"project,omitempty"`
|
||||||
|
PaymentUserIDListStr string `json:"paymentUserIdListStr,omitempty"`
|
||||||
|
NeedPayment bool `json:"needPayment,omitempty"`
|
||||||
|
PaymentDetailListJSONStr string `json:"paymentDetailListJsonStr,omitempty"`
|
||||||
|
PaymentDetailList []PaymentDetail `json:"paymentDetailList,omitempty"`
|
||||||
|
Company *Company `json:"company,omitempty"`
|
||||||
|
Amount string `json:"amount,omitempty"`
|
||||||
|
RecipientAccountInfo *RecipientAccount `json:"recipientAccountInfo,omitempty"`
|
||||||
|
EnterpriseAccount *EnterpriseAccount `json:"enterpriseAccount,omitempty"`
|
||||||
|
Category []Category `json:"category,omitempty"`
|
||||||
|
UserID string `json:"userId"`
|
||||||
|
OccurDate int64 `json:"occurDate,omitempty"`
|
||||||
|
Product *Product `json:"product,omitempty"`
|
||||||
|
YidaFormUUID string `json:"yidaFormUuid,omitempty"`
|
||||||
|
CanEditPaymentInfo bool `json:"canEditPaymentInfo,omitempty"`
|
||||||
|
PaymentUserIDList []string `json:"paymentUserIdList,omitempty"`
|
||||||
|
YidaProcInsID string `json:"yidaProcInsId,omitempty"`
|
||||||
|
SyncPaymentOrder bool `json:"syncPaymentOrder,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Department represents department information.
|
||||||
|
type Department struct {
|
||||||
|
Code string `json:"code,omitempty"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Customer represents customer information.
|
||||||
|
type Customer struct {
|
||||||
|
Code string `json:"code,omitempty"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Supplier represents supplier information.
|
||||||
|
type Supplier struct {
|
||||||
|
Code string `json:"code,omitempty"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Project represents project information.
|
||||||
|
type Project struct {
|
||||||
|
Code string `json:"code,omitempty"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Category represents income/expense category information.
|
||||||
|
type Category struct {
|
||||||
|
Code string `json:"code,omitempty"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Product represents product information.
|
||||||
|
type Product struct {
|
||||||
|
Code string `json:"code,omitempty"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Company represents enterprise entity information.
|
||||||
|
type Company struct {
|
||||||
|
Code string `json:"code,omitempty"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnterpriseAccount represents enterprise account information.
|
||||||
|
type EnterpriseAccount struct {
|
||||||
|
EnterpriseAccountCode string `json:"enterpriseAccountCode,omitempty"`
|
||||||
|
AccountCategory string `json:"accountCategory"`
|
||||||
|
AccountType string `json:"accountType,omitempty"`
|
||||||
|
CardNo string `json:"cardNo,omitempty"`
|
||||||
|
AccountName string `json:"accountName,omitempty"`
|
||||||
|
OfficialNumber string `json:"officialNumber,omitempty"`
|
||||||
|
OfficialName string `json:"officialName,omitempty"`
|
||||||
|
Name string `json:"name,omitempty"`
|
||||||
|
Code string `json:"code,omitempty"`
|
||||||
|
City string `json:"city,omitempty"`
|
||||||
|
Province string `json:"province,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// RecipientAccount represents recipient account information.
|
||||||
|
type RecipientAccount struct {
|
||||||
|
AccountCategory string `json:"accountCategory"`
|
||||||
|
AccountType string `json:"accountType,omitempty"`
|
||||||
|
CardNo string `json:"cardNo,omitempty"`
|
||||||
|
AccountName string `json:"accountName,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PaymentDetail represents a payment detail line item.
|
||||||
|
type PaymentDetail struct {
|
||||||
|
Amount string `json:"amount,omitempty"`
|
||||||
|
InvoiceInfo *InvoiceInfo `json:"invoiceInfo,omitempty"`
|
||||||
|
ProductCode string `json:"productCode,omitempty"`
|
||||||
|
ProjectCode string `json:"projectCode,omitempty"`
|
||||||
|
Remark string `json:"remark,omitempty"`
|
||||||
|
PrincipalID string `json:"principalId,omitempty"`
|
||||||
|
Tax string `json:"tax,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// InvoiceInfo represents invoice information within a payment detail.
|
||||||
|
type InvoiceInfo struct {
|
||||||
|
InvoiceNo string `json:"invoiceNo,omitempty"`
|
||||||
|
InvoiceCode string `json:"invoiceCode,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreatePaymentOrderResponse is the response for creating a payment order.
|
||||||
|
type CreatePaymentOrderResponse struct {
|
||||||
|
Code string `json:"code"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// Interface 4: 支付完成通知 (Payment Notification - Callback)
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
// PaymentNotificationData represents the payment notification data sent by the platform.
|
||||||
|
type PaymentNotificationData struct {
|
||||||
|
Code string `json:"code"`
|
||||||
|
InstanceID string `json:"instanceId"`
|
||||||
|
CorpID string `json:"corpId"`
|
||||||
|
PaymentStatus string `json:"paymentStatus"`
|
||||||
|
PaymentTime string `json:"paymentTime"`
|
||||||
|
UserID string `json:"userId"`
|
||||||
|
FailReason string `json:"failReason,omitempty"`
|
||||||
|
PayerAccountInfo *PayerAccountInfo `json:"payerAccountInfo,omitempty"`
|
||||||
|
PayeeAccountInfo *PayeeAccountInfo `json:"payeeAccountInfo,omitempty"`
|
||||||
|
RelatedRowNumberList []string `json:"relatedRowNumberList,omitempty"`
|
||||||
|
Source string `json:"source,omitempty"`
|
||||||
|
Template string `json:"template,omitempty"`
|
||||||
|
Amount string `json:"amount,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PayerAccountInfo represents the payer's account information.
|
||||||
|
type PayerAccountInfo struct {
|
||||||
|
BankOpenDTO *BankOpenDTO `json:"bankOpenDTO,omitempty"`
|
||||||
|
EnterpriseAccountCode string `json:"enterpriseAccountCode,omitempty"`
|
||||||
|
AccountType string `json:"accountType,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PayeeAccountInfo represents the payee's account information.
|
||||||
|
type PayeeAccountInfo struct {
|
||||||
|
BankOpenDTO *BankOpenDTO `json:"bankOpenDTO,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// BankOpenDTO represents bank account information.
|
||||||
|
type BankOpenDTO struct {
|
||||||
|
BankCode string `json:"bankCode,omitempty"`
|
||||||
|
BankName string `json:"bankName,omitempty"`
|
||||||
|
BankBranchCode string `json:"bankBranchCode,omitempty"`
|
||||||
|
BankBranchName string `json:"bankBranchName,omitempty"`
|
||||||
|
AccountName string `json:"accountName,omitempty"`
|
||||||
|
BankCardNo string `json:"bankCardNo,omitempty"`
|
||||||
|
Type string `json:"type,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PaymentStatus constants.
|
||||||
|
const (
|
||||||
|
PaymentStatusSuccess = "SUCCESS"
|
||||||
|
PaymentStatusFail = "FAIL"
|
||||||
|
PaymentStatusTerminate = "TERMINATE"
|
||||||
|
PaymentStatusWaitPay = "WAIT_PAY"
|
||||||
|
PaymentStatusPaying = "PAYING"
|
||||||
|
PaymentStatusPartSucc = "PART_SUCCESS"
|
||||||
|
PaymentStatusRefund = "REFUND"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Source constants for payment notifications.
|
||||||
|
const (
|
||||||
|
SourceApproval = "approval"
|
||||||
|
SourceOpenAPI = "openapi"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AccountType constants.
|
||||||
|
const (
|
||||||
|
AccountTypeAlipay = "ALIPAY"
|
||||||
|
AccountTypeBankCard = "BANKCARD"
|
||||||
|
AccountTypeCorpBankCard = "CORP_BANK_CARD"
|
||||||
|
AccountTypePersonalBankCard = "PERSONAL_BANK_CARD"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// Interface 5: 支付状态查询 (Payment Status Query)
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
// PaymentStatusQueryRequest is the request for querying payment status.
|
||||||
|
type PaymentStatusQueryRequest struct {
|
||||||
|
Code string `json:"code"`
|
||||||
|
UserID string `json:"userId"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PaymentStatusQueryResponse is the response for querying payment status,
|
||||||
|
// which has the same structure as PaymentNotificationData.
|
||||||
|
type PaymentStatusQueryResponse struct {
|
||||||
|
PaymentNotificationData
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// Generic Notification (Business Notification)
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
// NotificationRequest represents a generic notification request from the platform.
|
||||||
|
type NotificationRequest struct {
|
||||||
|
BizType string `json:"bizType"`
|
||||||
|
BizID string `json:"bizId"`
|
||||||
|
Data string `json:"data,omitempty"`
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue