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: "BCM", 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) }