tysk/tysk_test.go

494 lines
14 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package tysk
import (
"encoding/json"
"fmt"
"gitea.cdlsxd.cn/self-tools/tysk/tysk_constant"
"gitea.cdlsxd.cn/self-tools/tysk/tysk_entity"
"testing"
"time"
)
const (
UserName = "LSXDWL003_ZL"
RcvPyAccNm = "成都蓝色兄弟网络科技有限公司ERP"
)
var (
g = NewTysk(UserName, WithEnvTest())
RcvPartyDepbnkId = stringPtr("中信银行北京朝阳支行")
LinkPayFlag = tysk_constant.CommonBoolFalse
boolFalse = tysk_constant.CommonBoolFalse
BankId = stringPtr("302100011114")
)
func Test_GetAccountBalance(t *testing.T) {
req := tysk_entity.GetAccountBalanceReq{
AccountNo: []tysk_constant.AccountNo{"8110701013301269598", "8110701012401269599", "8110701013801269600"},
}
res, err := g.GetAccountBalance(req)
t.Log(res, err)
}
func Test_GetTodayTransHis(t *testing.T) {
req := tysk_entity.TodayTransHisReq{
AccountNo: []tysk_constant.AccountNo{"8110701013301269598", "8110701012401269599", "8110701013801269600"},
TranType: tysk_constant.TranType("01"),
StartRecord: 1,
PageNumber: 10,
}
res, err := g.GetTodayTransHis(req)
t.Log(res, err)
}
func Test_GetAccountInfo(t *testing.T) {
req := tysk_entity.AccountInfoReq{
StartRecord: 1,
PageNumber: 10,
}
res, err := g.GetAccountInfo(req)
t.Log(res, err)
}
func Test_ReceiptApply(t *testing.T) {
req := tysk_entity.ReceiptApplyReq{
ClientID: "test123123",
AccountNo: "8110701012401269599",
StartDate: "20250730",
EndDate: "20250801",
}
res, err := g.ReceiptApply(req)
t.Log(res, err)
}
func Test_ReceiptQuery(t *testing.T) {
req := tysk_entity.ReceiptQueryReq{
ClientID: "test123123",
StartRecord: 1,
PageNumber: 10,
}
res, err := g.ReceiptQuery(req)
t.Log(res, err)
}
func Test_ReceiptDownload(t *testing.T) {
req := tysk_entity.ReceiptDownloadReq{
FileType: tysk_constant.FileTypePDF,
RcptNums: []string{"8110701012401269599_20250730SG0D0000084253000001"},
}
res, err := g.ReceiptDownload(req)
t.Log(res, err)
}
func Test_TransHisQueryApply(t *testing.T) {
req := tysk_entity.TransHisQueryApplyReq{
ClientID: "123456",
AccountNo: "8110701013301269598",
StartDate: "20250729",
EndDate: "20250803",
}
res, err := g.TransHisQueryApply(req)
t.Log(res, err)
}
func Test_TransHisQuery(t *testing.T) {
req := tysk_entity.TransHisQueryReq{
ClientID: "123456",
TranType: tysk_constant.TranTypeAll,
StartRecord: 1,
PageNumber: 10,
}
res, err := g.TransHisQuery(req)
t.Log(res, err)
}
func Test_BalanceHisQueryApply(t *testing.T) {
req := tysk_entity.BalanceHisQueryApplyReq{
ClientID: "123456",
AccountNo: []tysk_constant.AccountNo{"8110701013301269598", "8110701012401269599", "8110701013801269600"},
StartDate: "20250728",
EndDate: "20250803",
}
res, err := g.BalanceHisQueryApply(req)
t.Log(res, err)
}
func Test_BalanceHisQuery(t *testing.T) {
req := tysk_entity.BalanceHisQueryReq{
ClientID: "123456",
StartRecord: 1,
PageNumber: 10,
}
res, err := g.BalanceHisQuery(req)
t.Log(res, err)
}
func Test_AccountsTransHisQuery(t *testing.T) {
req := tysk_entity.AccountsTransHisQueryReq{
TranType: tysk_constant.TranTypeAll,
StartDate: "20250728",
EndDate: "20250803",
StartRecord: 1,
PageNumber: 10,
AccountNo: []tysk_constant.AccountNo{"8110701013301269598", "8110701012401269599", "8110701013801269600"},
}
res, err := g.AccountsTransHisQuery(req)
t.Log(res, err)
}
func Test_SinglePay(t *testing.T) {
// 模拟常量值
isCheck := tysk_constant.IsCheckRcvpartyDepbnkIdNot
txnType := tysk_constant.TxnCntprTpCus // 客户类型
accType := tysk_constant.PyAccTpPub // 对公账户
isInterbnk := tysk_constant.CommonBoolFalse
urgntFlag := tysk_constant.CommonBoolFalse
pyTmlnsFlag := tysk_constant.CommonBoolTrue
req := tysk_entity.SinglePayReq{
ExternalNum: "MOCK123456789",
LinkPayFlag: &LinkPayFlag,
PypPartyAccnum: "8110701013301269598",
RcvPyAccnum: "8110701012401269599",
RcvPyAccnm: RcvPyAccNm,
IsCheckRcvpartyDepbnkId: &isCheck,
RcvPartyDepbnkId: RcvPartyDepbnkId,
//RcvpartyBnkgId: stringPtr("10140"),
TxnCntprTp: &txnType,
PyAccTp: accType,
Amt: 1000.50,
CurrencyID: "CNY",
IsInterbnk: &isInterbnk,
UrgntAprvFlag: &urgntFlag,
PyTmlnsFlag: &pyTmlnsFlag,
RsrvtnTms: stringPtr(time.Now().Add(120 * time.Second).Format("2006-01-02 15:04")),
Pscpt: "测试付款附言",
Rmrk: stringPtr("测试备注"),
Rmrk1: stringPtr("备用字段1"),
Rmrk2: stringPtr("备用字段2"),
}
res, err := g.SinglePay(req)
//{"dealMode":"1","externalNum":"MOCK123456789","failReason":"","status":"AAAAAAA","statusText":"交易成功"}
t.Log(res, err)
}
func Test_SinglePayQuery(t *testing.T) {
req := tysk_entity.SinglePayQueryReq{
ExternalNum: "MOCK123456789",
}
res, err := g.SinglePayQuery(req)
t.Log(res, err)
}
func Test_BatchPay(t *testing.T) {
urgntFlag := tysk_constant.CommonBoolFalse
rsrvtnFlag := tysk_constant.CommonBoolTrue
checkMode := tysk_constant.CheckModeBatch
isInterbnk := tysk_constant.CommonBoolFalse
isCheckDepBnk := tysk_constant.IsCheckRcvpartyDepbnkIdNot
txnType := tysk_constant.TxnCntprTpCus // 客户类型
accType := tysk_constant.PyAccTpPub // 对公账户
rsvTime := time.Now().Add(2 * time.Minute).Format("2006-01-02 15:04")
List := []tysk_entity.BatchPayList{
{
ExternalNum: "BATCH001",
RcvPyAccNum: "8110701012401269599",
RcvPyAccNm: RcvPyAccNm,
IsInterBnk: &isInterbnk,
IsCheckRcvPartyDepBnkId: &isCheckDepBnk,
RcvPartyDepBnkId: RcvPartyDepbnkId,
// RcvPartyBnkgId: stringPtr("105100000017"),
TxnCntprTp: &txnType,
PyAccTp: accType,
DebitAmt: 500.75,
Pscpt: "货款支付",
Rmrk: stringPtr("月度结算"),
},
{
ExternalNum: "BATCH002",
RcvPyAccNum: "8110701013801269600",
RcvPyAccNm: RcvPyAccNm,
IsInterBnk: &isInterbnk,
IsCheckRcvPartyDepBnkId: &isCheckDepBnk,
RcvPartyDepBnkId: stringPtr("中信银行北京朝阳支行"),
TxnCntprTp: &txnType, // 客户
PyAccTp: "00", // 对公
DebitAmt: 500,
Pscpt: "服务费",
},
}
req := tysk_entity.BatchPayReq{
ExternalBatNum: "MOCK123456789BATCH1",
LinkPayFlag: &LinkPayFlag,
PyPartyAccNum: "8110701013301269598",
CurrencyID: "CNY",
TotNbr: len(List),
Amt: List[0].DebitAmt + List[1].DebitAmt,
UrgntAprvFlag: &urgntFlag,
RsrvtnFlag: &rsrvtnFlag,
RsrvtnTms: stringPtr(rsvTime),
CheckMode: &checkMode,
List: List,
}
res, err := g.BatchPay(req)
t.Log(res, err)
}
func Test_BatchPayQuery(t *testing.T) {
req := tysk_entity.BatchPayQueryReq{
ExternalBatNum: "MOCK123456789BATCH",
}
res, err := g.BatchPayQuery(req)
t.Log(res, err)
}
var fndarBatNum = "PayArrangeBatch123456"
func Test_PayArrange(t *testing.T) {
payAcc := "8110701013301269598"
recAcc := tysk_entity.AccountList{"8110701012401269599", "8110701013801269600"}
// 模拟结算方式
settlementMode := tysk_constant.SettlementModePayTrans
// 生成模拟的交易明细列表
var list = make([]tysk_entity.PayArrangeList, 0)
for k, v := range recAcc {
list = append(list, *MockPayArrangeList(fmt.Sprintf("%s-%d", fndarBatNum, k), v))
}
req := tysk_entity.PayArrangeReq{
FndarBatNum: fndarBatNum,
PypartyAccnum: tysk_constant.AccountNo(payAcc),
BusinessType: stringPtr("测试类型"), // 业务类型
SettlementMode: &settlementMode, // 结算方式
//PayRat: stringPtr(JsonStringIgonErr([]tysk_entity.PayRatItem{{Pcode: "01", Pamt: "100", PayAccNum: "8110701013301269598"}})), // 模拟排款份额JSON
PayDt: time.Now().Format("2006-01-02"), // 未来30天内随机日期
LinkPayFlag: &LinkPayFlag, // 联动支付标志
List: list, // 交易明细列表
}
res, err := g.PayArrange(req)
t.Log(res, err)
}
// MockPayArrangeList 生成模拟的 PayArrangeList 数据
func MockPayArrangeList(lisName string, acc tysk_constant.AccountNo) *tysk_entity.PayArrangeList {
// 模拟交易对手类型
txnCntprTps := tysk_constant.TxnCntprTpOther
// 模拟付款种类
pyAccTps := tysk_constant.PyAccTpPri
// 模拟币种这里固定为CNY根据实际需求调整
return &tysk_entity.PayArrangeList{
FndarNum: lisName, // 模拟流水号
RcvpyAccnum: acc, // 模拟收方账号
RcvpyAccnm: RcvPyAccNm, // 模拟收方户名
//RcvpartyDepbnkId: RcvPartyDepbnkId, // 模拟开户行
RcvpartyBnkgId: BankId, // 模拟联行号
TxnCntprTp: &txnCntprTps, // 交易对手类型
PyAccTp: pyAccTps, // 付款种类
Amt: 100,
CurrencyID: "CNY", // 币种
Pscpt: "测试附言", // 模拟附言
Rmrk: stringPtr("备注"), // 模拟备注
Rmrk1: stringPtr("备用1"), // 模拟备用字段1
Rmrk2: stringPtr("备用2"), // 模拟备用字段2
Rmrk3: stringPtr("备用3"), // 模拟备用字段3
Rmrk4: stringPtr("备用4"), // 模拟备用字段4
}
}
func Test_PayArrangeQuery(t *testing.T) {
req := tysk_entity.PayArrangeQueryReq{
FndarBatNum: fndarBatNum,
}
res, err := g.PayArrangeQuery(req)
t.Log(res, err)
}
func Test_PayArrangeBillQuery(t *testing.T) {
req := tysk_entity.PayArrangeBillQueryReq{
FndarBatNum: fndarBatNum,
StartRecord: 1,
PageNumber: 10,
}
res, err := g.PayArrangeBillQuery(req)
t.Log(res, err)
}
func Test_BatchesPayArrangeBillQuery(t *testing.T) {
req := tysk_entity.BatchesPayArrangeBillQueryReq{
StartRecord: 1,
PageNumber: 10,
StartDate: "20250730",
EndDate: "20250829",
}
res, err := g.BatchesPayArrangeBillQuery(req)
t.Log(res, err)
}
var (
TGBPayExternalBatNum = "BATCH202306150001"
)
func Test_TGBPay(t *testing.T) {
List := []tysk_entity.TGBPayReqRow{
{
ExternalNum: fmt.Sprintf("%s-%d", TGBPayExternalBatNum, 0),
RcvpyAccnum: tysk_constant.AccountNo("8110701012401269599"),
RcvpyAccnm: "张三",
DebitAmt: 1500.00,
Pscpt: "工资发放",
},
{
ExternalNum: fmt.Sprintf("%s-%d", TGBPayExternalBatNum, 1),
RcvpyAccnum: tysk_constant.AccountNo("8110701013801269600"),
RcvpyAccnm: "李四",
DebitAmt: 500.00,
Pscpt: "奖金",
Rmrk: stringPtr("季度奖金"),
},
}
req := tysk_entity.TGBPayReq{
ExternalBatNum: TGBPayExternalBatNum,
LinkPayFlag: &LinkPayFlag,
PypartyAccnum: tysk_constant.AccountNo("8110701013301269598"),
CurrencyID: "CNY",
TotNbr: len(List),
Amt: List[0].DebitAmt + List[1].DebitAmt,
ItlgPayrollType: tysk_constant.CommonBool("01"),
ItlgPreparType: tysk_constant.ItlgPreparType("1"),
ItlgRefundFlag: tysk_constant.ItlgRefundFlag("0"),
UrgntAprvFlag: &boolFalse,
RsrvtnFlag: &boolFalse,
RsrvtnTms: stringPtr(time.Now().Add(24 * time.Hour).Format("2006-01-02 15:04:05")),
BatPscpt: "测试批次附言",
BatRmrk: stringPtr("测试批次备注"),
List: List,
}
res, err := g.TGBPay(req)
t.Log(res, err)
}
func Test_RefundTransQuery(t *testing.T) {
req := tysk_entity.RefundTransQueryReq{
AccountNo: []tysk_constant.AccountNo{"8110701013301269598", "8110701012401269599", "8110701013801269600"},
StartDate: "20250728",
EndDate: "20250803",
StartRecord: 1,
PageNumber: 10,
}
res, err := g.RefundTransQuery(req)
t.Log(res, err)
}
var (
BatchSalarySendExternalBatNum = "BatchSalary202306150001"
)
func Test_BatchSalarySend(t *testing.T) {
payrollDt := time.Now().Format("200601")
//rsvTime := time.Now().Add(24 * time.Hour).Format("2006-01-02 15:04:05")
List := []tysk_entity.BatchSalarySendRow{
{
ExternalNum: fmt.Sprintf("%s-%d", BatchSalarySendExternalBatNum, 0),
RcvpyAccnum: tysk_constant.AccountNo("8110701012401269599"),
RcvpyAccnm: "张三",
DebitAmt: 1.00,
Pscpt: "6月工资",
Rmrk: "正式员工",
RcvpartyBnkgId: BankId,
},
{
ExternalNum: fmt.Sprintf("%s-%d", BatchSalarySendExternalBatNum, 1),
RcvpyAccnum: tysk_constant.AccountNo("8110701013801269600"),
RcvpyAccnm: "李四",
DebitAmt: 2.00,
Pscpt: "6月工资+奖金",
//RcvpartyDepbnkId: "中国建设银行上海分行",
RcvpartyBnkgId: BankId,
},
}
req := tysk_entity.BatchSalarySendReq{
ExternalBatNum: BatchSalarySendExternalBatNum,
LinkPayFlag: &LinkPayFlag,
PypartyAccnum: tysk_constant.AccountNo("8110701013301269598"),
CurrencyID: "CNY",
TotNbr: len(List),
Amt: List[0].DebitAmt + List[1].DebitAmt,
PayrollDt: payrollDt,
UrgntAprvFlag: &boolFalse,
RsrvtnFlag: &boolFalse,
//RsrvtnTms: &rsvTime,
BatPscpt: "6月工资发放",
PayrollUse: stringPtr("1"),
ExtField1: stringPtr("PROTO1234567890"),
List: List,
}
res, err := g.BatchSalarySend(req)
t.Log(res, err)
}
func Test_BankInfoQuery(t *testing.T) {
req := tysk_entity.BankInfoQueryReq{
AreaID: "10056",
SkRecordNum: 10,
SkStartNo: 1,
}
res, err := g.BankInfoQuery(req)
t.Log(res, err)
}
func Test_BillList(t *testing.T) {
//endDate := time.Now().Format("2006-01-02")
//startDate := time.Now().AddDate(0, 0, -30).Format("2006-01-02")
//
//// Set random amount range
//minAmt := 1.00
//maxAmt := minAmt + 1000000.00
req := tysk_entity.BillListReq{
QueryType: tysk_constant.QueryTypeHad,
//BsnTp: stringPtr("17,18,51,52"),
//List: []tysk_entity.BillListReqRow{
// {
// SignAcc: "1",
// BillPkgId: "BILLPKG",
// },
//},
//MinAmt: float64Ptr(minAmt),
//MaxAmt: float64Ptr(maxAmt),
//ExpDtStart: stringPtr(startDate),
//ExpDtEnd: stringPtr(endDate),
StartRecord: 1,
PageNumber: 50,
}
res, err := g.BillList(req)
t.Log(res, err)
}
func Test_BillDetail(t *testing.T) {
req := tysk_entity.BillDetailReq{}
res, err := g.BillDetail(req)
t.Log(res, err)
}
// stringPtr 辅助函数:生成字符串指针
func stringPtr(s string) *string {
return &s
}
func float64Ptr(s float64) *float64 {
return &s
}
func JsonStringIgonErr(data interface{}) string {
dataByte, _ := json.Marshal(data)
return string(dataByte)
}