494 lines
14 KiB
Go
494 lines
14 KiB
Go
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)
|
||
}
|