威富通对账单下载并且解析为对象列表展示

博客介绍了项目的目录结构,提供了源代码链接。包含Bill对象类、JSP请求后台主方法、config配置文件解释、返回数据设值、WEB.xml配置文件、请求页面及结果展示页面等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 项目目录结构为:

此案例提供源代码链接为:https://download.youkuaiyun.com/download/weixin_38948287/11253757

一、Bill对象类

package com.swiftpass.entity;

public class Bill {
	private String date;//交易时间
    private String appId;//公众账号ID
    private String mch_id;//商户号
    private String thirdMch_id;// 第三方商户号,如微信商户号
    private String subMch_id;//子商户号
    private String device_info;//设备号
    private String platOrderNo;//平台订单号
    private String thirdOrderNo;//第三方订单号,如微信订单号
    private String mchOrderNo;//商户订单号
    private String userId;//用户标识
    private String type;//交易类型
    private String status;//交易状态
    private String bank;//付款银行
    private String currency;//货币种类
    private String amount;//总金额
    private String envelopeAmount;//企业红包金额 代金券金额
    private String platRefundOrderNo;//平台退款单号	
    private String mchRefundOrderNo;//商户退款单号	
    private String refundAmount;//   退款金额	单位:元
    private String envelopeRefundAmount; // 企业红包退款金额
    private String refundType;//退款类型
    private String refundStatu;//退款状态 
    private String name;//商品名称
    private String packet;//商户数据包
    private String poundage;//手续费
    private String rate;//费率
    private String termtyp;//终端类型 POS,ERP,SPAY_AND,SPAY_IOS,SPAY_POS,SPAY_PC
    private String billFlag;//对账标识
    private String storesNo;//门店编号
    private String mch_name;//商户名称
    private String cashier;//收银员
    private String subMch_sid;//子商户ID	
    private String coupon;//免充值券金额,	订单享受免充值券优惠的金额
    private String orderAmount; //订单金额,实收金额,	实收金额=订单金额-免充值券金额
    private String settleAmount; //结算金额,结算金额=实收金额-手续费
    private String extend2;//扩展字段2,预留字段
    private String extend3;//扩展字段3,预留字段
    private String extend4;//扩展字段4,预留字段
	public String getDate() {
		return date;
	}
	public void setDate(String date) {
		this.date = date;
	}
	public String getAppId() {
		return appId;
	}
	public void setAppId(String appId) {
		this.appId = appId;
	}
	public String getMch_id() {
		return mch_id;
	}
	public void setMch_id(String mch_id) {
		this.mch_id = mch_id;
	}
	public String getSubMch_id() {
		return subMch_id;
	}
	public void setSubMch_id(String subMch_id) {
		this.subMch_id = subMch_id;
	}
	public String getDevice_info() {
		return device_info;
	}
	public void setDevice_info(String device_info) {
		this.device_info = device_info;
	}
	public String getPlatOrderNo() {
		return platOrderNo;
	}
	public void setPlatOrderNo(String platOrderNo) {
		this.platOrderNo = platOrderNo;
	}
	public String getThirdOrderNo() {
		return thirdOrderNo;
	}
	public void setThirdOrderNo(String thirdOrderNo) {
		this.thirdOrderNo = thirdOrderNo;
	}
	public String getMchOrderNo() {
		return mchOrderNo;
	}
	public void setMchOrderNo(String mchOrderNo) {
		this.mchOrderNo = mchOrderNo;
	}
	public String getUserId() {
		return userId;
	}
	public void setUserId(String userId) {
		this.userId = userId;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public String getStatus() {
		return status;
	}
	public void setStatus(String status) {
		this.status = status;
	}
	public String getBank() {
		return bank;
	}
	public void setBank(String bank) {
		this.bank = bank;
	}
	public String getCurrency() {
		return currency;
	}
	public void setCurrency(String currency) {
		this.currency = currency;
	}
	public String getAmount() {
		return amount;
	}
	public void setAmount(String amount) {
		this.amount = amount;
	}
	public String getEnvelopeAmount() {
		return envelopeAmount;
	}
	public void setEnvelopeAmount(String envelopeAmount) {
		this.envelopeAmount = envelopeAmount;
	}
	public String getRefundType() {
		return refundType;
	}
	public void setRefundType(String refundType) {
		this.refundType = refundType;
	}
	public String getRefundStatu() {
		return refundStatu;
	}
	public void setRefundStatu(String refundStatu) {
		this.refundStatu = refundStatu;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPacket() {
		return packet;
	}
	public void setPacket(String packet) {
		this.packet = packet;
	}
	public String getPoundage() {
		return poundage;
	}
	public void setPoundage(String poundage) {
		this.poundage = poundage;
	}
	public String getRate() {
		return rate;
	}
	public void setRate(String rate) {
		this.rate = rate;
	}
	public String getTermtyp() {
		return termtyp;
	}
	public void setTermtyp(String termtyp) {
		this.termtyp = termtyp;
	}
	public String getBillFlag() {
		return billFlag;
	}
	public void setBillFlag(String billFlag) {
		this.billFlag = billFlag;
	}
	public String getStoresNo() {
		return storesNo;
	}
	public void setStoresNo(String storesNo) {
		this.storesNo = storesNo;
	}
	public String getMch_name() {
		return mch_name;
	}
	public void setMch_name(String mch_name) {
		this.mch_name = mch_name;
	}
	public String getCashier() {
		return cashier;
	}
	public void setCashier(String cashier) {
		this.cashier = cashier;
	}
	public String getSubMch_sid() {
		return subMch_sid;
	}
	public void setSubMch_sid(String subMch_sid) {
		this.subMch_sid = subMch_sid;
	}
	public String getCoupon() {
		return coupon;
	}
	public void setCoupon(String coupon) {
		this.coupon = coupon;
	}
	public String getOrderAmount() {
		return orderAmount;
	}
	public void setOrderAmount(String orderAmount) {
		this.orderAmount = orderAmount;
	}
	public String getSettleAmount() {
		return settleAmount;
	}
	public void setSettleAmount(String settleAmount) {
		this.settleAmount = settleAmount;
	}
	public String getExtend2() {
		return extend2;
	}
	public void setExtend2(String extend2) {
		this.extend2 = extend2;
	}
	public String getExtend3() {
		return extend3;
	}
	public void setExtend3(String extend3) {
		this.extend3 = extend3;
	}
	public String getExtend4() {
		return extend4;
	}
	public void setExtend4(String extend4) {
		this.extend4 = extend4;
	}
	
	public String getThirdMch_id() {
		return thirdMch_id;
	}
	public void setThirdMch_id(String thirdMch_id) {
		this.thirdMch_id = thirdMch_id;
	}
	public String getPlatRefundOrderNo() {
		return platRefundOrderNo;
	}
	public void setPlatRefundOrderNo(String platRefundOrderNo) {
		this.platRefundOrderNo = platRefundOrderNo;
	}
	public String getMchRefundOrderNo() {
		return mchRefundOrderNo;
	}
	public void setMchRefundOrderNo(String mchRefundOrderNo) {
		this.mchRefundOrderNo = mchRefundOrderNo;
	}
	public String getRefundAmount() {
		return refundAmount;
	}
	public void setRefundAmount(String refundAmount) {
		this.refundAmount = refundAmount;
	}
	public String getEnvelopeRefundAmount() {
		return envelopeRefundAmount;
	}
	public void setEnvelopeRefundAmount(String envelopeRefundAmount) {
		this.envelopeRefundAmount = envelopeRefundAmount;
	}
	public Bill() {
		super();
	}
	public Bill(String date, String appId, String mch_id, String thirdMch_id,
			String subMch_id, String device_info, String platOrderNo,
			String thirdOrderNo, String mchOrderNo, String userId, String type,
			String status, String bank, String currency, String amount,
			String envelopeAmount, String platRefundOrderNo,
			String mchRefundOrderNo, String refundAmount,
			String envelopeRefundAmount, String refundType, String refundStatu,
			String name, String packet, String poundage, String rate,
			String termtyp, String billFlag, String storesNo, String mch_name,
			String cashier, String subMch_sid, String coupon,
			String orderAmount, String settleAmount, String extend2,
			String extend3, String extend4) {
		super();
		this.date = date;
		this.appId = appId;
		this.mch_id = mch_id;
		this.thirdMch_id = thirdMch_id;
		this.subMch_id = subMch_id;
		this.device_info = device_info;
		this.platOrderNo = platOrderNo;
		this.thirdOrderNo = thirdOrderNo;
		this.mchOrderNo = mchOrderNo;
		this.userId = userId;
		this.type = type;
		this.status = status;
		this.bank = bank;
		this.currency = currency;
		this.amount = amount;
		this.envelopeAmount = envelopeAmount;
		this.platRefundOrderNo = platRefundOrderNo;
		this.mchRefundOrderNo = mchRefundOrderNo;
		this.refundAmount = refundAmount;
		this.envelopeRefundAmount = envelopeRefundAmount;
		this.refundType = refundType;
		this.refundStatu = refundStatu;
		this.name = name;
		this.packet = packet;
		this.poundage = poundage;
		this.rate = rate;
		this.termtyp = termtyp;
		this.billFlag = billFlag;
		this.storesNo = storesNo;
		this.mch_name = mch_name;
		this.cashier = cashier;
		this.subMch_sid = subMch_sid;
		this.coupon = coupon;
		this.orderAmount = orderAmount;
		this.settleAmount = settleAmount;
		this.extend2 = extend2;
		this.extend3 = extend3;
		this.extend4 = extend4;
	}
	@Override
	public String toString() {
		return "Bill [date=" + date + ", appId=" + appId + ", mch_id=" + mch_id
				+ ", thirdMch_id=" + thirdMch_id + ", subMch_id=" + subMch_id
				+ ", device_info=" + device_info + ", platOrderNo="
				+ platOrderNo + ", thirdOrderNo=" + thirdOrderNo
				+ ", mchOrderNo=" + mchOrderNo + ", userId=" + userId
				+ ", type=" + type + ", status=" + status + ", bank=" + bank
				+ ", currency=" + currency + ", amount=" + amount
				+ ", envelopeAmount=" + envelopeAmount + ", platRefundOrderNo="
				+ platRefundOrderNo + ", mchRefundOrderNo=" + mchRefundOrderNo
				+ ", refundAmount=" + refundAmount + ", envelopeRefundAmount="
				+ envelopeRefundAmount + ", refundType=" + refundType
				+ ", refundStatu=" + refundStatu + ", name=" + name
				+ ", packet=" + packet + ", poundage=" + poundage + ", rate="
				+ rate + ", termtyp=" + termtyp + ", billFlag=" + billFlag
				+ ", storesNo=" + storesNo + ", mch_name=" + mch_name
				+ ", cashier=" + cashier + ", subMch_sid=" + subMch_sid
				+ ", coupon=" + coupon + ", orderAmount=" + orderAmount
				+ ", settleAmount=" + settleAmount + ", extend2=" + extend2
				+ ", extend3=" + extend3 + ", extend4=" + extend4 + "]";
	}
}

二、JSP请求后台主方法

package com.swiftpass.action;

import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import com.alibaba.fastjson.JSON;
import com.swiftpass.config.SwiftpassConfig;
import com.swiftpass.entity.Bill;
import com.swiftpass.util.MD5;
import com.swiftpass.util.SignUtil;
import com.swiftpass.util.SignUtils;
import com.swiftpass.util.XmlUtils;
import com.swiftpass.util.AnalyzeBill;

/**
 * <一句话功能简述>
 * <功能详细描述>下载对账单
 * 
 * @author  Administrator
 * @version  [版本号, 2018-2-01]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class TestBillDownloadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        List<Bill> listBill=new ArrayList<Bill>();
        SortedMap<String,String> map = XmlUtils.getParameterMap(req);
        	map.put("mch_id", SwiftpassConfig.mch_id);
            map.put("nonce_str", String.valueOf(new Date().getTime()));
            Map<String,String> params = SignUtils.paraFilter(map);
            StringBuilder buf = new StringBuilder((params.size() +1) * 10);
            SignUtils.buildPayParams(buf,params,false);
            String preStr = buf.toString();       
            String sign_type ="MD5";// map.get("sign_type");
            map.put("sign", SignUtil.getSign(sign_type, preStr));
            String reqUrl = "https://download.swiftpass.cn/gateway";
            System.out.println("reqParams:" + XmlUtils.parseXML(map));
            CloseableHttpResponse response = null;
            CloseableHttpClient client = null;
            String res = null;
            try {
                HttpPost httpPost = new HttpPost(reqUrl);
                StringEntity entityParams = new StringEntity(XmlUtils.parseXML(map),"utf-8");
                httpPost.setEntity(entityParams);
                httpPost.setHeader("Content-Type", "text/xml;charset=utf-8");
                client = HttpClients.createDefault();
                response = client.execute(httpPost);
                if(response != null && response.getEntity() != null){
                	res = new String(EntityUtils.toByteArray(response.getEntity()),"utf-8");
                    listBill=AnalyzeBill.analyze(res,"2017-12-28");
                }else{
                    res = "操作失败!";
                }
            } catch (Exception e) {
                e.printStackTrace();
                res = "系统异常";
            } finally {
                if(response != null){
                    response.close();
                }
                if(client != null){
                    client.close();
                }
            }
            /*resp.setContentType("text/html; charset=UTF-8");
            resp.getWriter().print(res);
             */

    	    /* 
            resp.setContentType("application/json; charset=utf-8");
    	  	String userJson = JSON.toJSONString(listBill);
    		OutputStream out = resp.getOutputStream();
    		out.write(userJson.getBytes("UTF-8"));
    		out.flush();
    		*/
            
            req.setAttribute("listBill", listBill);
            RequestDispatcher dispatcher = req.getRequestDispatcher("/index-result.jsp");    // 使用req对象获取RequestDispatcher对象
            try {
            	 dispatcher.forward(req, resp);// 使用RequestDispatcher对象在服务器端向目的路径跳转   
			} catch (Exception e) {
				e.printStackTrace();
			}
           
    }
}

、解释config配置文件,获取商户号信息

package com.swiftpass.config;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;


/**
 * <一句话功能简述>
 * <功能详细描述>配置信息
 * 
 * @author  Administrator
 * @version  [版本号, 2018-2-1]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class SwiftpassConfig {
    
    /**
     * 交易密钥
     */
    public static String key;
    
    public static String mchPrivateKey;
    
    public static String platPublicKey;
    
    /**
     * 商户号
     */
    public static String mch_id;
    
    /**
     * 请求url
     */
    public static String req_url;
    
    /**
     * 通知url
     */
    public static String notify_url;
    
    static{
        Properties prop = new Properties();   
        InputStream in = SwiftpassConfig.class.getResourceAsStream("/config.properties");   
        try {   
            prop.load(in);   
            key = prop.getProperty("key").trim();
           // mchPrivateKey = prop.getProperty("mchPrivateKey").trim();
           // platPublicKey = prop.getProperty("platPublicKey").trim();
            mch_id = prop.getProperty("mch_id").trim();   
            req_url = prop.getProperty("req_url").trim();   
            notify_url = prop.getProperty("notify_url").trim();   
        } catch (IOException e) {   
            e.printStackTrace();   
        } 
    }
}

四、解释返回数据为bill对象设值

package com.swiftpass.util;

import java.util.ArrayList;
import java.util.List;

import com.swiftpass.entity.Bill;

public class AnalyzeBill {
	//date 为账单时间 格式 2018-12-25
    //result  接口返回数据
    public static List<Bill> analyze(String result ,String date){
        List<Bill> bills = new ArrayList<Bill>();
        String tradeMsg = result.substring(result.indexOf("`")); //去标题
        String tradeInfo = tradeMsg.substring(0, tradeMsg.indexOf("总")).replaceFirst(date, "").replaceAll("`","");;// 去掉汇总数据
        String[] tradeArray = tradeInfo.split(date); //通过交易时间分隔   订单数
        for(String trade : tradeArray){
            String[] order = trade.split(",");
            Bill bill = new Bill();
            bill.setDate(date+order[0]); 
            bill.setAppId(order[1]);
            bill.setThirdMch_id(order[2]);
            bill.setMch_id(order[3]);
            bill.setSubMch_id(order[4]);
            bill.setDevice_info(order[5]);
            bill.setPlatOrderNo(order[6]);
            bill.setThirdOrderNo(order[7]);
            bill.setMchOrderNo(order[8]);
            bill.setUserId(order[9]);
            bill.setType(order[10]);
            bill.setStatus(order[11]);
            bill.setBank(order[12]);
            bill.setCurrency(order[13]);
            bill.setAmount(order[14]);
            bill.setEnvelopeAmount(order[15]);
            bill.setPlatRefundOrderNo(order[16]);
            bill.setMchRefundOrderNo(order[17]);
            bill.setRefundAmount(order[18]);
            bill.setEnvelopeRefundAmount(order[19]);
            bill.setRefundType(order[20]);
            bill.setRefundStatu(order[21]);
            bill.setName(order[22]);
            bill.setPacket(order[23]);
            bill.setPoundage(order[24]);
            bill.setRate(order[25]);
            bill.setTermtyp(order[26]);
            bill.setBillFlag(order[27]);
            bill.setStoresNo(order[28]);
            bill.setMch_name(order[29]);
            bill.setCashier(order[30]);
            bill.setSubMch_sid(order[31]);
            bill.setCoupon(order[32]);
            bill.setOrderAmount(order[33]);
            bill.setSettleAmount(order[34]);
            bill.setExtend2(order[35]);
            bill.setExtend3(order[36]);
            bill.setExtend4(order[37]);
            bills.add(bill);
        }
        return bills;
    }
}

五、WEB.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>js_jsp_utf8</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>TestBillDownload</servlet-name>
    <servlet-class>com.swiftpass.action.TestBillDownloadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestBillDownload</servlet-name>
    <url-pattern>/testBillDownload</url-pattern>
  </servlet-mapping>
</web-app>

六、config配置文件

 

 七:请求页面index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
	<title>支付测试页面</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<link href="css/index.css" rel="stylesheet" type="text/css">
	<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
	<script type="text/javascript">		
		function getCurrentDate(){
			var date = new Date();
			return date.getFullYear() + '' + formatString(date.getMonth() + 1) + formatString(date.getDay()) + formatString(date.getHours()) + formatString(date.getMinutes()) + formatString(date.getSeconds()); 
		}
		function formatString(value){
			if(parseInt(value) < 10){
				return  0 + '' + value; 
			}
			return value;
		}
		
		function doSubmit(){
			var service = $.trim($('input[name=service]').val());
			if(service == ''){
				alert('接口类型不能为空');
				return false;
			}
			var bill_date = $.trim($('input[name=bill_date]').val());
			if(bill_date == ''){
				alert('账单日期不能为空');   
				return false; 
			}
			var bill_type = $.trim($('input[name=bill_type]').val());
			if(bill_type == ''){
				alert('账单类型不能为空');
				return false;
			}
			$('form').submit();
		}
	</script>
</head>
<body text=#000000 bgColor="#ffffff" leftMargin=0  topMargin=4>
	<div id="main">
        <div class="cashier-nav">
            <ol>
				<li class="current">下载对账单测试 </li> 
            </ol>
        </div>
        <form action="testBillDownload" method="post"  target="_blank" id="form">
            <div id="body" style="clear:left">
                <dl class="content">
                    <dt class="hideClass">接口类型:</dt>
					<dd class="hideClass">
						<input name="service" value="pay.bill.merchant" readonly="readonly" maxlength="32"  placeholder="长度32"/>
						<span class="null-star">(长度32)*</span>
						<span></span>
					</dd>
                    <dt>账单日期:</dt>
                    <dd>
                        <span class="null-star"></span>
                        <input name="bill_date" value="20171228" maxlength="32" size="30"  placeholder="长度32"/>
                        <span class="null-star">(长度8)*</span>
                        <span></span>
                    </dd>
                    <dt>账单类型:</dt>
                    <dd>
                        <span class="null-star"></span>
                        <input name="bill_type" value="ALL" maxlength="127" size="30"  placeholder="长度127"/>
                        <span class="null-star">(长度8)*</span>
                        <span></span>
                    </dd>
                    <dd>
                        <span class="new-btn-login-sp">
                            <button class="new-btn-login" type="button" onclick="doSubmit()" style="text-align:center;">确 认</button>
                        </span>
                    </dd>
                </dl>
            </div>
		</form>
        <div id="foot">
			<ul class="foot-ul">
				<li><font class="note-help">如果您点击“确认”按钮,即表示您同意该次的执行操作。 </font></li>
				
			</ul>
		</div>
	</div>
</body>
</html>

 八:请求页面index-result.jsp结果展示页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
	<title>支付测试结果页面</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<link href="js/bootstrap-3.3.7/css/bootstrap.min.css" rel="stylesheet" type="text/css">
	<link href="css/index.css" rel="stylesheet" type="text/css">
	<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
	<script type="text/javascript" src="js/bootstrap-3.3.7/js/bootstrap.min.js"></script>
	<script type="text/javascript">
		
		function getCurrentDate(){
			var date = new Date();
			return date.getFullYear() + '' + formatString(date.getMonth() + 1) + formatString(date.getDay()) + formatString(date.getHours()) + formatString(date.getMinutes()) + formatString(date.getSeconds()); 
		}
		function formatString(value){
			if(parseInt(value) < 10){
				return  0 + '' + value; 
			}
			return value;
		}
		
		
	</script>
</head>
<body text=#000000 bgColor="#ffffff" leftMargin=0  topMargin=4>
	
<table class="table table-bordered">
	<thead>
		<tr>
			<th>平台订单号</th>
			<th>收银员</th>
			
			<th>总金额</th>
            <th>实收金额</th>
            
			<th>终端类型</th>
			<th>付款银行</th>
			
			<th>手续费</th>
			<th>费率</th>
			
			<th>付款日期</th>
			<th>交易状态</th>
			
			<th>商品名称</th>
			<th>商户名称</th>	
		</tr>
	</thead>
	<tbody>
	<c:forEach var="bill" items="${listBill}" varStatus="status">
		<tr>
			<td>${bill.platOrderNo}</td>
			<td>${bill.cashier}</td>
			
			<td>${bill.amount}</td>
			<td>${bill.settleAmount}</td>
			
			<td>${bill.termtyp}</td>
			<td>${bill.bank}</td>
			
			<td>${bill.poundage}</td>
			<td>${bill.rate}</td>
			
			<td>${bill.date}</td>
			<td>${bill.status}</td>
			
			<td>${bill.name}</td>
			<td>${bill.mch_name}</td>
		</tr>
	</c:forEach>	
	</tbody>
</table>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值