生成二维码及根据订单号查询工具类

package exam.common;


import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import exam.entity.JianHangQrCodeResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;

import static java.nio.charset.StandardCharsets.UTF_8;


public class JianHangQrCodeUtils {

   static Logger logger = LoggerFactory.getLogger(JianHangQrCodeUtils.class);
    /**
     * 商户代码  换成建行给的
     */
    private static final String MERCHANT_ID="";
    /**
     * 商户柜台代码 换成建行给的
     */
    private static final String  POS_ID="";
    /**
     * 分行代码 换成建行给的
     */
    private  static final String   BRANCH_ID="";
    /**
     * 公钥  后30位 换成建行给的
     */
    private static final String PUB_KEY= "";

    /**
     * 币种 01
     */
    private static final String CUR_CODE="01";
    /**
     * 交易码
     */
    private static final String TX_CODE = "530550";
    /**
     * 备注1
     */
    private static final String REMARK_1 = "";
    /**
     * 备注2
     */
    private static final String REMARK_2 = "";
    /**
     * 返回类型
     * 0或空:返回二维码页面,只支持建行龙支付;
     * 1:返回JSON格式【二维码信息串】,只支持建行龙支付;
     * 2:返回聚合扫码二维码页面;
     * 3:返回聚合扫码JSON格式【二维码信息串】
     * 聚合扫码只能上送2或3
     * 4:返回聚合银联二维码信息串
     */
    private static final String RETURN_TYPE="3";
    /**
     * 超时时间
     * 若送空值则不判断超时
     */
    private static final String TIME_OUT ="";

    private static  final String BANK_URL="https://ibsbjstar.ccb.com.cn/CCBIS/ccbMain";




    /**
     * 订单时间   元素必须有,但值可为空
     */
    private static final String ORDER_DATE="";

    /**
     * 起始时间   元素必须有,但值可为空
     */
    private static final String BEG_ORDER_TIME="";
    /**
     * 订单截止时间  元素必须有,但值可为空
     */
    private static final String END_ORDER_TIME="";


    /**
     * 查询密码    必输项,主管或操作员的登录密码  换成建行给的
     */
    private static final  String QU_PWD="";
    /**
     * 流水类型 TYPE   必输项  0支付流水   1退款流水
     */
    private static final  String TYPE="0";
    /**
     * 交易码
     */
    private static final  String SEARCH_TX_CODE="410408";
    /**
     * 流水状态  必须项    0未结算流水    1已结算流水
     */
    private static final  String KIND="0";
    /**
     * 交易状态    必须项   0失败   1成功   2不确定   3全部    已结算流水查询不支持全部
     */
    private static final  String STATUS="1";
    /**
     *  查询方式 SEL_TYPE     必输项   1页面形式   2文件返回形式   3xml页面形式
     */
    private static final  String SEL_TYPE="3";
    /**
     * 页码page
     */
    private static final  String PAGE = "1";
    /**
     * 操作员 换成建行给的
     */
    private static final  String OPERATOR="";

    private static final  String BEG_ORDER_ID="";

    private static final  String END_ORDER_ID="";
    //预留字段
    private static final  String CHANNEL = "";
    private static final  String BANK_SEARCH_URL="https://ibsbjstar.ccb.com.cn/app/ccbMain";



    /**
     * 生成二维码
     * @param ORDERID  订单号
     * @param PAYMENT   金额
     */
    public static String  createQrCode(String ORDERID,  String  PAYMENT) {
        logger.info("==================================生成二维码===================================");

        String decode="";

        //验签字段
        StringBuffer tmp = new StringBuffer();
        tmp.append("MERCHANTID=");
        tmp.append(MERCHANT_ID);
        tmp.append("&POSID=");
        tmp.append(POS_ID);
        tmp.append("&BRANCHID=");
        tmp.append(BRANCH_ID);
        tmp.append("&ORDERID=");
        tmp.append(ORDERID);
        tmp.append("&PAYMENT=");
        tmp.append(PAYMENT);
        tmp.append("&CURCODE=");
        tmp.append(CUR_CODE);
        tmp.append("&TXCODE=");
        tmp.append(TX_CODE);
        tmp.append("&REMARK1=");
        tmp.append(REMARK_1);
        tmp.append("&REMARK2=");
        tmp.append(REMARK_2);
        tmp.append("&RETURNTYPE=");
        tmp.append(RETURN_TYPE);
        tmp.append("&TIMEOUT=");
        tmp.append(TIME_OUT);
        tmp.append("&PUB=");
        tmp.append(PUB_KEY);

        Map<String, Object> map = new HashMap();
        map.put("CCB_IBSVersion","V6");
        map.put("MERCHANTID",MERCHANT_ID);
        map.put("BRANCHID",BRANCH_ID);
        map.put("POSID",POS_ID);
        map.put("ORDERID",ORDERID);
        map.put("PAYMENT",PAYMENT);
        map.put("CURCODE",CUR_CODE);
        map.put("TXCODE",TX_CODE);
        map.put("REMARK1",REMARK_1);
        map.put("REMARK2",REMARK_2);
        map.put("RETURNTYPE",RETURN_TYPE);
        map.put("TIMEOUT",TIME_OUT);
        map.put("MAC", MD5.md5Str(tmp.toString()));

        //请求二维码生成链接串
        try {
            logger.info("入参:"+map);
            String postResponse = HttpUtil.post(BANK_URL, map);
            JianHangQrCodeResponse jianHangQrCodeResponse= JSONObject.parseObject(postResponse, JianHangQrCodeResponse.class);
            if(jianHangQrCodeResponse.getSUCCESS()!=null&&jianHangQrCodeResponse.getSUCCESS().equals("true") ) {
                String  payUrl = jianHangQrCodeResponse.getPAYURL();
                String  getResponse = HttpUtil.get(payUrl, UTF_8);
                String  qrurl = JSONObject.parseObject(getResponse).getString("QRURL");
                decode = URLDecoder.decode(qrurl, "utf-8");
            }
        }catch (Exception e){
            e.printStackTrace();
            decode= e.getMessage();
        }
        logger.info("二维码信息:"+decode);
        return decode;
    }


    /**
     * 查询支付是否成功
     * @param ORDERID   订单号码
     */

    public  static Document  searchPayStatus(String ORDERID) throws UnsupportedEncodingException {
        logger.info("===========================================查询商户是否支付成功====================");
        Document document=null;
        //验签字段


        String tmp ="MERCHANTID="+MERCHANT_ID+"&BRANCHID="+BRANCH_ID+"&POSID="+POS_ID+"&ORDERDATE="+ORDER_DATE+"&BEGORDERTIME="+BEG_ORDER_TIME
                +"&ENDORDERTIME="+END_ORDER_TIME+"&BEGORDERID="+BEG_ORDER_ID+"&ENDORDERID="+END_ORDER_ID+"&QUPWD=&TXCODE="+SEARCH_TX_CODE
                +"&SEL_TYPE="+SEL_TYPE+"&OPERATOR="+OPERATOR;

        if("410408".equals(SEARCH_TX_CODE)){
            tmp ="MERCHANTID="+MERCHANT_ID+"&BRANCHID="+BRANCH_ID+"&POSID="+POS_ID+"&ORDERDATE="
                    +ORDER_DATE+"&BEGORDERTIME="+BEG_ORDER_TIME+"&ENDORDERTIME="+END_ORDER_TIME+"&ORDERID="
                    +ORDERID+"&QUPWD=&TXCODE="+SEARCH_TX_CODE+"&TYPE="+TYPE+"&KIND="+KIND+"&STATUS="+STATUS+
                    "&SEL_TYPE="+SEL_TYPE+"&PAGE="+PAGE+"&OPERATOR="+OPERATOR+"&CHANNEL="+CHANNEL;
        }

        Map<String, Object> map = new HashMap();
        map.put("MERCHANTID",MERCHANT_ID);
        map.put("BRANCHID",BRANCH_ID);
        map.put("POSID",POS_ID);
        map.put("ORDERDATE",ORDER_DATE);
        map.put("BEGORDERTIME",BEG_ORDER_TIME);
        map.put("ENDORDERTIME",END_ORDER_TIME);
        map.put("QUPWD",QU_PWD);
        map.put("TXCODE",SEARCH_TX_CODE);
        map.put("TYPE",TYPE);
        map.put("KIND",KIND);
        map.put("STATUS",STATUS);
        map.put("ORDERID",ORDERID);
        map.put("PAGE",PAGE);
        map.put("CHANNEL",CHANNEL);
        map.put("SEL_TYPE",SEL_TYPE);
        map.put("OPERATOR",OPERATOR);

        map.put("MAC",MD5.md5Str(tmp.toString()));
        logger.info("入参"+MD5.md5Str(tmp.toString()));
        String ret = HttpUtil.post(BANK_SEARCH_URL, map);

        ret = ret.replaceAll("\\n", "").
                replaceAll("\\t", "").
                replaceAll("\\r", "");

        logger.info(ret);
        if(ret !=null   &&  !ret.equals("")){
            JAXBContext jaxbContext=null;
            Unmarshaller unmarshaller=null;
            try {
                logger.info("ret::"+ret);
                jaxbContext = JAXBContext.newInstance(Document.class);
                unmarshaller = jaxbContext.createUnmarshaller();
                document= (Document)unmarshaller.unmarshal(new StringReader(ret));
                logger.info("document==={}"+document);


            }catch (Exception   e){
                e.printStackTrace();
            }
        }

        return document;
    }


    public static void main(String[] args) throws UnsupportedEncodingException {
        //createQrCode("53032219051","0.1");
        searchPayStatus("10024_1679912790819");
    }

}

 

查询返回的实体类

package exam.common;



import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import java.util.ArrayList;
import java.util.List;


@XmlRootElement(name = "DOCUMENT")
public class Document {
    /**
     * 返回码   交易返回码,成功时总为 000000
     */
    @XmlElement(name = "RETURN_CODE")
    private String   RETURN_CODE;
    /**
     * 响应信息
     */
    @XmlElement(name = "RETURN_MSG")
    private   String   RETURN_MSG;
    /**
     * 当前页
     */
    @XmlElement(name = "CURPAGE")
    private String    CURPAGE;
    /**
     * 总页数
     */
    @XmlElement(name = "PAGECOUNT")
    private   String   PAGECOUNT;
    /**
     * 总笔数
     */
    @XmlElement(name = "TOTAL")
    private   String   TOTAL;
    /**
     * 支付总金额
     */
    @XmlElement(name = "PAYAMOUNT")
    private   String    PAYAMOUNT;
    /**
     * 退款总金额
     */
    @XmlElement(name = "REFUNDAMOUNT")
    private   String    REFUNDAMOUNT;

    @XmlElement(name = "QUERYORDER")
    private List<QueryOrder>  queryOrders=new ArrayList<>();
    @XmlTransient
    public String getRETURN_CODE() {
        return RETURN_CODE;
    }

    public void setRETURN_CODE(String RETURN_CODE) {
        this.RETURN_CODE = RETURN_CODE;
    }
    @XmlTransient
    public String getRETURN_MSG() {
        return RETURN_MSG;
    }

    public void setRETURN_MSG(String RETURN_MSG) {
        this.RETURN_MSG = RETURN_MSG;
    }
    @XmlTransient
    public String getCURPAGE() {
        return CURPAGE;
    }

    public void setCURPAGE(String CURPAGE) {
        this.CURPAGE = CURPAGE;
    }
    @XmlTransient
    public String getPAGECOUNT() {
        return PAGECOUNT;
    }

    public void setPAGECOUNT(String PAGECOUNT) {
        this.PAGECOUNT = PAGECOUNT;
    }
    @XmlTransient
    public String getTOTAL() {
        return TOTAL;
    }

    public void setTOTAL(String TOTAL) {
        this.TOTAL = TOTAL;
    }
    @XmlTransient
    public String getPAYAMOUNT() {
        return PAYAMOUNT;
    }

    public void setPAYAMOUNT(String PAYAMOUNT) {
        this.PAYAMOUNT = PAYAMOUNT;
    }
    @XmlTransient
    public String getREFUNDAMOUNT() {
        return REFUNDAMOUNT;
    }

    public void setREFUNDAMOUNT(String REFUNDAMOUNT) {
        this.REFUNDAMOUNT = REFUNDAMOUNT;
    }
    @XmlTransient
    public List<QueryOrder> getQueryOrders() {
        return queryOrders;
    }

    public void setQueryOrders(List<QueryOrder> queryOrders) {
        this.queryOrders = queryOrders;
    }

    @Override
    public String toString() {
        return "Document{" +
                "RETURN_CODE='" + RETURN_CODE + '\'' +
                ", RETURN_MSG='" + RETURN_MSG + '\'' +
                ", CURPAGE='" + CURPAGE + '\'' +
                ", PAGECOUNT='" + PAGECOUNT + '\'' +
                ", TOTAL='" + TOTAL + '\'' +
                ", PAYAMOUNT='" + PAYAMOUNT + '\'' +
                ", REFUNDAMOUNT='" + REFUNDAMOUNT + '\'' +
                ", queryOrders=" + queryOrders +
                '}';
    }

    /**
     * 子类   详细信息
     */
    public static class  QueryOrder{
        /**
         * 商户代码
         */
        @XmlElement(name = "MERCHANTID")
        private   String    MERCHANTID;
        /**
         * 分行代码
         */
        @XmlElement(name = "BRANCHID")
        private   String   BRANCHID;
        /**
         * 柜台号码
         */
        @XmlElement(name = "POSID")
        private   String   POSID;
        /**
         * 订单号
         */
        @XmlElement(name = "ORDERID")
        private   String  ORDERID;
        /**
         * 支付/退款交易时间
         */
        @XmlElement(name = "ORDERDATE")
        private   String  ORDERDATE;
        /**
         * 记录日期
         */
        @XmlElement(name = "ACCDATE")
        private   String    ACCDATE;
        /**
         * 支付金额
         */
        @XmlElement(name = "AMOUNT")
        private   String   AMOUNT;
        /**
         * 状态码
         */
        @XmlElement(name = "STATUSCODE")
        private  String   STATUSCODE;
        /**
         * 支付状态
         */
        @XmlElement(name = "STATUS")
        private  String  STATUS;
        /**
         * 签名串
         */
        @XmlElement(name = "SIGN")
        private String   SIGN;

        @XmlTransient
        public String getMERCHANTID() {
            return MERCHANTID;
        }

        public void setMERCHANTID(String MERCHANTID) {
            this.MERCHANTID = MERCHANTID;
        }
        @XmlTransient
        public String getBRANCHID() {
            return BRANCHID;
        }

        public void setBRANCHID(String BRANCHID) {
            this.BRANCHID = BRANCHID;
        }
        @XmlTransient
        public String getPOSID() {
            return POSID;
        }

        public void setPOSID(String POSID) {
            this.POSID = POSID;
        }
        @XmlTransient
        public String getORDERID() {
            return ORDERID;
        }

        public void setORDERID(String ORDERID) {
            this.ORDERID = ORDERID;
        }
        @XmlTransient
        public String getORDERDATE() {
            return ORDERDATE;
        }

        public void setORDERDATE(String ORDERDATE) {
            this.ORDERDATE = ORDERDATE;
        }
        @XmlTransient
        public String getACCDATE() {
            return ACCDATE;
        }

        public void setACCDATE(String ACCDATE) {
            this.ACCDATE = ACCDATE;
        }
        @XmlTransient
        public String getAMOUNT() {
            return AMOUNT;
        }

        public void setAMOUNT(String AMOUNT) {
            this.AMOUNT = AMOUNT;
        }
        @XmlTransient
        public String getSTATUSCODE() {
            return STATUSCODE;
        }

        public void setSTATUSCODE(String STATUSCODE) {
            this.STATUSCODE = STATUSCODE;
        }
        @XmlTransient
        public String getSTATUS() {
            return STATUS;
        }

        public void setSTATUS(String STATUS) {
            this.STATUS = STATUS;
        }
        @XmlTransient
        public String getSIGN() {
            return SIGN;
        }

        public void setSIGN(String SIGN) {
            this.SIGN = SIGN;
        }

        @Override
        public String toString() {
            return "QueryOrder{" +
                    "MERCHANTID='" + MERCHANTID + '\'' +
                    ", BRANCHID='" + BRANCHID + '\'' +
                    ", POSID='" + POSID + '\'' +
                    ", ORDERID='" + ORDERID + '\'' +
                    ", ORDERDATE='" + ORDERDATE + '\'' +
                    ", ACCDATE='" + ACCDATE + '\'' +
                    ", AMOUNT='" + AMOUNT + '\'' +
                    ", STATUSCODE='" + STATUSCODE + '\'' +
                    ", STATUS='" + STATUS + '\'' +
                    ", SIGN='" + SIGN + '\'' +
                    '}';
        }
    }
}

  

 

 

生成二维码业务层

 

  @Override
    @Transactional
    public ServiceResult saveOrder(ExamineePayOrder examineePayOrder) {
        ServiceResult serviceResult=new ServiceResult();
        try {
        //1、把未支付的订单删除
            String hql=" from ExamineePayOrder where examineeNo=:examineeNo and createTime<:createTime order by createTime desc";
            Map<String, Object> queryParams = new HashMap<String, Object>();
            queryParams.put("examineeNo", examineePayOrder.getExamineeNo());
            queryParams.put("createTime", examineePayOrder.getCreateTime());
            List<ExamineePayOrder> list = examineePayOrderDao.findByHql(hql, queryParams);
            if (CollUtil.isNotEmpty(list)){
                for (ExamineePayOrder payOrder : list) {
                    payOrder.setIsDeleted(1);
                    examineePayOrderDao.saveorupdate(payOrder);
                }
            }
       //2、保存订单并生成支付二维码 examineePayOrderDao.save(examineePayOrder); PayConfig payConfig = payConfigDao.getPayConfig(); BigDecimal payAmount = payConfig.getPayAmount(); String qrCode = JianHangQrCodeUtils.createQrCode(examineePayOrder.getOrderId(), String.valueOf(payAmount)); serviceResult.setCode("0000"); serviceResult.setMessage("订单保存成功"); Map<String,Object> map=new HashMap(); map.put("orderId",examineePayOrder.getOrderId());//订单id map.put("payAmount",String.valueOf(payAmount));//支付金额 map.put("payStatus",examineePayOrder.getPayStatus());//支付状态 map.put("qrCode",qrCode);//二维码链接 serviceResult.setObject(map); return serviceResult; }catch (Exception e){ e.printStackTrace(); serviceResult.setCode("9999"); serviceResult.setMessage("订单保存失败"+e.getMessage()); serviceResult.setObject(null); return serviceResult; } }

  

根据订单查询是否支付成功 查询时需要建行维护IP地址

 

@Transactional
    @Override
    public ServiceResult getOrderPayStatus(ExamineeInfo examineeInfo,String orderId) throws UnsupportedEncodingException {
        ServiceResult serviceResult=new ServiceResult();
        String hql=" from ExamineePayOrder where examineeNo=:examineeNo and orderId=:orderId and isDeleted=:isDeleted order by createTime desc";
        Map<String, Object> queryParams = new HashMap<String, Object>();
        queryParams.put("examineeNo", examineeInfo.getExamineeNo());
        queryParams.put("orderId", orderId);//有效订单
        queryParams.put("isDeleted", 0);//有效订单
        List<ExamineePayOrder> list = examineePayOrderDao.findByHql(hql, queryParams);//只能查出一条记录

        Document document = JianHangQrCodeUtils.searchPayStatus(orderId);//只能查出一条记录
        if ("000000".equals(document.getRETURN_CODE())){
            List<Document.QueryOrder> queryOrders = document.getQueryOrders();
            for (Document.QueryOrder queryOrder : queryOrders) {
                if ("成功".equals(queryOrder.getSTATUS())&&"1".equals(queryOrder.getSTATUSCODE())){//支付成功
                    //更新订单表
                    if (CollUtil.isNotEmpty(list)){
                        for (ExamineePayOrder examineePayOrder : list) {
                            examineePayOrder.setPayStatus(1);//已支付
                            examineePayOrder.setUpdateTime(DateUtil.parse(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")));
                            examineePayOrder.setAccDate(queryOrder.getACCDATE());
                            examineePayOrder.setSign(queryOrder.getSIGN());
                            examineePayOrderService.updateExamineePayOrderService(examineePayOrder);
                        }
                    }
                    //更新ExamineeStatus支付状态
                    ExamineeStatus examineeStatus=examineeStatusDao.getExamineeStatusById(examineeInfo.getExamineeId());
                    if (ObjectUtil.isNotEmpty(examineeStatus)){
                        examineeStatus.setPayStatus(1);
                        examineeStatus.setPayTime(DateUtil.parse(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")));
                        examineeStatus.setPayDesc("支付成功");
                        examineeStatus.setExamineeVerifyDesc("已交费成功!");
                        examineeStatusService.updateExamineeStatus(examineeStatus);

                    }

                }
            }
            serviceResult.setObject(true);//已支付
        }else {
            serviceResult.setObject(false);//还未支付
        }
        return serviceResult;

    }

  

 

前端展示二维码使用qrcode.js 自行下载

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<!DOCTYPE html>
<html>
<body>
<body class="layui-layout-body">
	<div class="layui-layout layui-layout-admin">
		<!-- 引入头部文件 -->
		<jsp:include page="../homeHeader.jsp" flush="true" />
		<!-- 引入左侧导航 -->
		<jsp:include page="leftNav.jsp" flush="true" />
		<div class="layui-body"
			style="right: 0px; bottom: 0px; background-color: #FFFFFF">

			<div style="padding: 10px 20px;height:300px;">
				<div id="paymentEd" class="layui-hide" style="border:2px solid;height:150px;background:#FFE1FF; margin:0px 60px;font-size:18px;text-align: center;">
					<table class="paymentInfoTable" style="margin-left:50px;margin-bottom:40px;">
						<tr>
							<th>订单编号:</th>
							<td id="orderId2"></td>
						</tr>
						<tr>
							<th >订单金额:</th>
							<td id="payAmount2"></td>
						</tr>
						<tr>
							<th>订单支付状态:</th>
							<td id="payStatus2"></td>
						</tr>
					</table>
				</div>
				<div style="text-align: center" id="payBtn">
					<div id="paymentTable" class="layui-hide" >
						未缴费,请点击缴费按钮,使用微信或支付宝扫码二维码缴费
						<div style="padding: 10px 20px;height:300px;">
							<button id="QRBtn" type="button"  data-type="auto"  class="btn btn-primary layui-btn " >缴费按钮</button>
						</div>
					</div>
				</div>

			</div>

			<div>
				<div id="model" style="display: none;">
					<div style="margin-top: 20px;text-align: center;" >
						<table class="paymentInfoTable" style="margin-left:50px;margin-bottom:40px;">
							<tr>
								<th>订单编号:</th>
								<td id="orderId"></td>
							</tr>
							<tr>
								<th>订单金额:</th>
								<td id="payAmount"></td>
							</tr>
							<tr>
								<th>订单支付状态:</th>
								<td id="status"></td>
							</tr>
						</table>
						<div style="text-align: center;display: inline-table"  id="qrcode"></div>
					</div>
				</div>
			</div>

			<!-- 引入底部文件 -->
			<jsp:include page="../homeFooter.jsp" flush="true" />
		</div>

	</div>
</body>
<script type="text/javascript" src="<%=basePath%>resources/layui/layui.js"></script>
<script src="<%=basePath%>resources/js/common/qrcode.js"></script>
<script>
	var $;
	var form;
	var layer;
	var timeInterval=''
	layui.use(["form", "jquery","layer"], function() { //独立版的layer无需执行这一句
		 $ = layui.jquery, form = layui.form, layer = layui.layer;

		$(function(){
			//查询缴费状态
			getPayStatus()
		});


		$("#QRBtn").click(function(){
			layer.open({
				type: 1,
				title:"支付二维码",
				id: 'layerDemo', //防止重复弹出
				content: $('#model'),
				area: ['700px', '500px'],//定义宽和高
				btnAlign: 'c', //按钮居中
				shade: 0, //不显示遮罩
				success:function (layero, index){    //弹出层加载成功后执行
					getQRCode()
				},
				cancel: function(){
					layer.closeAll();
					clearQRCode()
					clearInterval(timeInterval)
				}
			});
		});
	});

	function getQRCode() {
		$.ajax({
			url : "getQRCodeByOrderId",
			type : "POST",
			dataType : "json",
			success : function(jsonResult) {
				if (jsonResult.code === "0000") {
					var retObject=jsonResult['object'];
					$("#payStatus").text('未支付');
					$("#orderId").text(retObject.orderId);
					$("#payAmount").text(retObject.payAmount);

					let text=retObject.qrCode
					var qrcodetwo = new QRCode("qrcode", {
						render : "table",
						width: 128,
						height: 128,
						text: text //返回的路径
					});
                        //轮询查询是否支付成功 timeInterval=window.setInterval("getOrderPayStatus('"+retObject.orderId+"')",1500) }else{ alert(jsonResult.message); } } }); } //清除生成的二维码防止二维码重叠 function clearQRCode() { const codeHtml = document.getElementById("qrcode"); codeHtml.innerHTML = ""; } function getPayStatus() { $.ajax({ // 几个参数需要注意一下 url : "getPayStatus", type : "POST",// 方法类型 dataType : "json",// 预期服务器返回的数据类型 success : function(jsonResult) { var noPaymentDiv=$('#noPayment'); var paymentEdDiv=$('#paymentEd'); var paymentTable=$('#paymentTable'); var payBtn=$('#payBtn'); if (jsonResult.code == "000") { var retObject=jsonResult['object']; //如果有支付信息 if (retObject!=null){ if (!noPaymentDiv.hasClass("layui-hide")){ noPaymentDiv.addClass("layui-hide"); } if (paymentTable.hasClass("layui-hide")){ paymentTable.removeClass("layui-hide"); } var payStatus=retObject['payStatus']; if (payStatus=='0'){//未支付才显示支付按钮 if (payBtn.hasClass("layui-hide")){ payBtn.removeClass("layui-hide"); } } if (payStatus=='1'){//已支付显示支付结果                                  if (!payBtn.hasClass("layui-hide")){ payBtn.addClass("layui-hide"); } $("#orderId2").text(retObject.orderId); $("#payAmount2").text(retObject.payAmount); $("#payStatus2").text('支付成功'); if (paymentEdDiv.hasClass("layui-hide")){ paymentEdDiv.removeClass("layui-hide"); } } }else{ if (noPaymentDiv.hasClass("layui-hide")){ noPaymentDiv.removeClass("layui-hide"); } if (!paymentTable.hasClass("layui-hide")){ paymentTable.addClass("layui-hide"); } $("#payDesc").text("尚未产生支付信息,请在报考审核后查看!"); } }else{ if (noPaymentDiv.hasClass("layui-hide")){ noPaymentDiv.removeClass("layui-hide"); } if (!paymentTable.hasClass("layui-hide")){ paymentTable.addClass("layui-hide"); } $("#payDesc").text(jsonResult.message); } }, error : function() { alert("异常!"); } }); } function getOrderPayStatus(orderID){ $.ajax({ // 几个参数需要注意一下 url : "getOrderPayStatus", type:"GET",// 方法类型 dataType : "json",// 预期服务器返回的数据类型 data : {"orderId":orderID}, success : function(jsonResult) { if (jsonResult.code === "0000") { layer.open({ type: 1 ,title:'提示' ,id: 'postSuccess' //防止重复弹出 ,content: '<div style="padding: 20px 100px;">'+ jsonResult.message +'</div>' ,btn: '确定' ,btnAlign: 'c' //按钮居中 ,shade: 0.5 //不显示遮罩 ,yes: function(index,layero){ layer.close(index); window.location.href='payment'; } }); } } }); } </script> </html>

  

 

posted on 2023-03-28 10:46  西门夜说  阅读(156)  评论(0编辑  收藏  举报