党费收缴管理系统(十三) 微信支付手续费的处理

   目前按照微信最新的政策,党费缴纳可以免手续费的。如果是免手续费那么就没有需要处理了。笔者所在公司党委建制,八十年代成立的党委,且公司几经易名提交了多轮资料总算解决了党委成立文件的问题,又碰到党委专户证明, 银行不给出这个证明,提供了N年前手写开户申请文件,结果审核又说不清楚,总之最后折腾没给免手续费,看来千分之六的费用是免不了的。说说我考虑的几种处理手续费的思路。

1. 每笔直接按照千分之六提手续费,支付成功后直接写入到流水单据上去。这种方式需要注意计算出来的数据有时候分需要四舍五入,另外还存在一种情况如果缴纳者使用了支付优惠,目前还没整明白这个是如何处理的,感觉是存在问题。

2. 设置定时任务,每天10点以后提取昨天的微信资金流水账单,在账单扣除交易手续费类型业务就是手续费的扣除,资金流水单号就是对应支付记录, 这样可以知道每一笔微信准确的扣除手续费的数据了。可以回写到具体单据上去。然后每天增加一笔支出的流水,金额是扣除手续费的金额。

        以上两种思路来处理微信支付的手续费。当然第二种是比较准确的,我自己也打算是如此处理。读取账单文件我是直接读取

   先定义一个单据的实体行的类

 public class BillData
 {
     //账单日期
     public DateTime? BillDate { get; set; }
     //微信支付业务单号
     public string WeiXinPayBillNO { get; set; }
     //资金流水单号
     public string WeiXinMoneyTransBillNo {  get; set; }
     //业务名称
     public string Name { get; set; }
     //业务类型
     public string Type { get; set; }
     //收支类型
     public string InOrOut { get; set; }
     //收支金额(元)
     public decimal Money { get; set; }
     //账户余额
     public decimal AccountBalance { get; set; }
     //资金变动操作者  默认system
     public string Operator { get; set; }
     //备注
     public string Note { get; set; }    
     //业务单据号
     public string BusinessVoucherNo { get; set; }   

 }

按行读取解压缩出来的csv文件了,第一行的数据是表头,所以第一次调用readline数据可以不用,通过while循环,每次调用readline来读取数据,如果数据是空或者是行开头不是· 字符,那么就跳出循环。如果type是扣除交易手续费那么就做合计手续费。

   FileStream fs2 = new FileStream(csvFileName, FileMode.Open, FileAccess.Read);
     StreamReader streamReader = new StreamReader(fs2, Encoding.Default);
    fs2.Seek(0, SeekOrigin.Begin);
     string content = streamReader.ReadLine();   //第一行数据是无用的
     List < BillData>  BillLines = new List < BillData>();
    
     while (true) { 
         content = streamReader.ReadLine();
         if (content != null)
         {
             
                //逗号作为分隔符
             if (content.StartsWith("`"))
             {
                 content = content.Replace("`", "");
                 string[] lineArray = content.Split(',');
                 BillData bd = new BillData();
                 bd.BillDate = Convert.ToDateTime(lineArray[0]); 
                 bd.WeiXinPayBillNO = lineArray[1];
                 bd.WeiXinMoneyTransBillNo = lineArray[2];
                 bd.Name = lineArray[3]; 
                 bd.Type = lineArray[4]; 
                 bd.InOrOut = lineArray[5];
                 bd.Money = Convert.ToDecimal(lineArray[6]);
                 bd.AccountBalance = Convert.ToDecimal(lineArray[7]);
                 bd.Operator = lineArray[8];
                 bd.Note = lineArray[9]; 
                 bd.BusinessVoucherNo = lineArray[10];   
                 BillLines.Add(bd);
                 if (bd.Type == "扣除交易手续费") {
                     Commission += Convert.ToDecimal(lineArray[6]);   //手续费合计
                 }
                
             }
             else {

                 break;
             }
 
         }
         else {
             //读取不到内容的时候跳出循环
             break;
         }

     
     }
    

 }

以上就是手续费处理的思路以及处理的核心逻辑了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT大灰狼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值