Search in sources :

Example 11 with PayConfig

use of com.itrus.portal.db.PayConfig in project portal by ixinportal.

the class ClientWebController method zhifuPage.

/**
 * 进入增值订单支付页面,若未配置支付且订单价格为0,则不需要支付
 *
 * @param billId
 *            ,增值订单id
 * @param request
 * @param uiModel
 * @return
 */
@RequestMapping("/zhifu/{billId}")
public String zhifuPage(@PathVariable("billId") Long billId, HttpServletRequest request, Model uiModel) {
    HttpSession session = request.getSession();
    String ip = request.getRemoteAddr();
    UserInfo currentUserInfo = (UserInfo) session.getAttribute("webuserInfo");
    uiModel.addAttribute("ip", ip);
    // 增值订单
    ExtraBill bill = extraBillService.selectByPrimaryKey(billId);
    if (null == bill || !currentUserInfo.getId().equals(bill.getUniqueId())) {
        return "resourceNotFound";
    }
    // 增值产品
    ExtraProduct product = extraProductService.selectByPrimaryKey(bill.getExtraProduct());
    if (null == product) {
        // 产品不存在
        uiModel.addAttribute("errorMsg", "您购买的产品不存在");
        return "client/errorpage";
    }
    // 未配置支付方式,或者订单价格为0,则不用支付
    if (StringUtils.isBlank(product.getBankPay()) && StringUtils.isBlank(product.getOnlinePay()) && (null == bill.getBillSum() || bill.getBillSum().equals(0))) {
        // 跳转到订单支付成功页面,并将订单状态设置为3已支付 待审核
        bill.setBillStatus(ComNames.EXTRA_BILL_STATUS_3);
        // TODO 跳转到支付成功或者订单列表页面
        return "client/zhifuchenggong";
    }
    // 获取产品对应的线上支付服务
    if (product.getOnlinePay() != null && product.getOnlinePay() != "") {
        List<Long> onlinepays = new ArrayList<Long>();
        String[] onpay = (product.getOnlinePay()).split(",");
        Map<Integer, String> map = new HashMap<Integer, String>();
        for (int i = 0; i < onpay.length; i++) {
            OnlinePay op = sqlSession.selectOne("com.itrus.portal.db.OnlinePayMapper.selectByPrimaryKey", onpay[i]);
            map.put(op.getSort(), onpay[i]);
        }
        Set<Integer> set = map.keySet();
        Object[] obj = set.toArray();
        Arrays.sort(obj);
        for (int i = (onpay.length - 1); i >= 0; i--) {
            String a = map.get(obj[i]);
            onlinepays.add(Long.parseLong(a));
        }
        Map<Long, OnlinePay> opMap = sqlSession.selectMap("com.itrus.portal.db.OnlinePayMapper.selectByExample", "id");
        uiModel.addAttribute("opMap", opMap);
        uiModel.addAttribute("onlinepays", onlinepays);
        Map<Long, PayConfig> pcMap = sqlSession.selectMap("com.itrus.portal.db.PayConfigMapper.selectByExample", "id");
        uiModel.addAttribute("pcMap", pcMap);
    }
    // 获取产品对应的银行汇款服务
    if (!StringUtils.isBlank(product.getBankPay())) {
        Transfer transfer = sqlSession.selectOne("com.itrus.portal.db.TransferMapper.selectByPrimaryKey", Long.parseLong(product.getBankPay()));
        uiModel.addAttribute("transfer", transfer);
    }
    if (null != product.getBankRemarks()) {
        product.setBankRemarks(product.getBankRemarks().replace("\r\n", "<br/><span ></span>"));
    }
    uiModel.addAttribute("product", product);
    session.setAttribute("webbill", bill);
    if (null != bill.getExtraProductSpec()) {
        uiModel.addAttribute("productSpec", extraProductSpecService.selectByPrimaryKey(bill.getExtraProductSpec()));
    }
    if (currentUserInfo != null) {
        currentUserInfo = userInfoService.getUserInfoById(currentUserInfo.getId());
        EnterpriseQqExample enterpriseE = new EnterpriseQqExample();
        EnterpriseQqExample.Criteria qqEx = enterpriseE.createCriteria();
        qqEx.andProjectIdEqualTo(currentUserInfo.getProject());
        EnterpriseQq enterpriseqq = sqlSession.selectOne("com.itrus.portal.db.EnterpriseQqMapper.selectByExample", enterpriseE);
        if (enterpriseqq != null && enterpriseqq.getEnterpriseQqLinks() != null) {
            uiModel.addAttribute("enterpriseqq", enterpriseqq.getEnterpriseQqLinks());
            session.setAttribute("enterpriseqqE", enterpriseqq.getEnterpriseQqLinks());
        }
    }
    // TODO 跳转到支付页面
    return "client/zhifu";
}
Also used : PayConfig(com.itrus.portal.db.PayConfig) HashMap(java.util.HashMap) HttpSession(javax.servlet.http.HttpSession) ExtraBill(com.itrus.portal.db.ExtraBill) ArrayList(java.util.ArrayList) UserInfo(com.itrus.portal.db.UserInfo) ExtraProduct(com.itrus.portal.db.ExtraProduct) EnterpriseQq(com.itrus.portal.db.EnterpriseQq) Transfer(com.itrus.portal.db.Transfer) EnterpriseQqExample(com.itrus.portal.db.EnterpriseQqExample) OnlinePay(com.itrus.portal.db.OnlinePay) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 12 with PayConfig

use of com.itrus.portal.db.PayConfig in project portal by ixinportal.

the class UnlockKeyBillController method zhifuPage.

/**
 * 3进入支付页面
 *
 * @param billId
 * @param request
 * @param uiModel
 * @return
 */
@RequestMapping("/zhifu/{billId}")
public String zhifuPage(@PathVariable("billId") Long billId, @RequestParam(value = "certSn", required = false) String certSn, @RequestParam(value = "keySn", required = false) String keySn, @RequestParam(value = "enterpriseName", required = false) String enterpriseName, HttpServletRequest request, Model uiModel) {
    HttpSession session = request.getSession();
    String ip = request.getRemoteAddr();
    uiModel.addAttribute("ip", ip);
    Bill bill = sqlSession.selectOne("com.itrus.portal.db.BillMapper.selectByPrimaryKey", billId);
    if (null == bill) {
        return "resourceNotFound";
    }
    // 产品
    Product product = sqlSession.selectOne("com.itrus.portal.db.ProductMapper.selectByPrimaryKey", bill.getProduct());
    if (null == product) {
        // 产品不存在
        uiModel.addAttribute("errorMsg", "您购买的产品不存在");
        return ComNames.CLIENTFW_ERRORPAGE;
    }
    if (null == product.getOnpay() && StringUtils.isBlank(product.getPay()) && bill.getBillSum().equals(0.00)) {
        // 跳转到订单支付成功页面,并将订单状态设置为3已支付 待审核
        if (null != product.getKeyUnlockType()) {
            bill = unLockKeyBillService.updateBillStatusWhileHasPay(bill, product);
        } else {
            bill.setBillStatus(ComNames.BILL_STATUS_3);
        }
        sqlSession.update("com.itrus.portal.db.BillMapper.updateByPrimaryKey", bill);
        session.setAttribute("webbill", bill);
        if (null != product.getKeyUnlockType()) {
            UserCert userCert = userCertService.selectByPrimaryKey(bill.getUnlockUserCert());
            Enterprise enterprise = enterpriseService.getEnterpriseById(bill.getEnterprise());
            return "redirect:/doUnlockKey/toUnlockKeyPage?" + "billId=" + billId + "&certSn=" + userCert.getCertSn() + "&keySn=" + userCert.getKeySn() + "&enterpriseName=" + enterprise.getEnterpriseName();
        } else {
            return "redirect:/billClient";
        }
    }
    // 获取产品对应的线上支付服务
    if (product.getOnpay() != null && product.getOnpay() != "") {
        List<Long> onlinepays = new ArrayList<Long>();
        String[] onpay = (product.getOnpay()).split(",");
        // 过滤掉不是服务型客户的在线支付
        onpay = onlinePayService.removeOnlinePayWithOutClientFw(onpay);
        Map<Integer, String> map = new HashMap<Integer, String>();
        for (int i = 0; i < onpay.length; i++) {
            OnlinePay op = sqlSession.selectOne("com.itrus.portal.db.OnlinePayMapper.selectByPrimaryKey", onpay[i]);
            map.put(op.getSort(), onpay[i]);
        }
        Set<Integer> set = map.keySet();
        Object[] obj = set.toArray();
        Arrays.sort(obj);
        for (int i = (onpay.length - 1); i >= 0; i--) {
            String a = map.get(obj[i]);
            onlinepays.add(Long.parseLong(a));
        }
        Map<Long, OnlinePay> opMap = sqlSession.selectMap("com.itrus.portal.db.OnlinePayMapper.selectByExample", "id");
        uiModel.addAttribute("opMap", opMap);
        uiModel.addAttribute("onlinepays", onlinepays);
        Map<Long, PayConfig> pcMap = sqlSession.selectMap("com.itrus.portal.db.PayConfigMapper.selectByExample", "id");
        uiModel.addAttribute("pcMap", pcMap);
    }
    // 获取产品对应的银行汇款服务
    if (!StringUtils.isBlank(product.getPay())) {
        Transfer transfer = sqlSession.selectOne("com.itrus.portal.db.TransferMapper.selectByPrimaryKey", Long.parseLong(product.getPay()));
        uiModel.addAttribute("transfer", transfer);
    }
    if (null != product.getTransferNotes()) {
        product.setTransferNotes(product.getTransferNotes().replace("\r\n", "<br/><span ></span>"));
    }
    // 解锁订单,返回keysn,certsn,enterprisename
    if (null != product.getKeyUnlockType() && (StringUtils.isBlank(keySn) || StringUtils.isBlank(certSn) || StringUtils.isBlank(enterpriseName))) {
        Enterprise enterprise = enterpriseService.getEnterpriseById(bill.getEnterprise());
        enterpriseName = enterprise.getEnterpriseName();
        UserCert userCert = userCertService.selectByPrimaryKey(bill.getUnlockUserCert());
        if (null != userCert && StringUtils.isNotBlank(userCert.getKeySn())) {
            keySn = userCert.getKeySn();
        }
        if (null != userCert && StringUtils.isNotBlank(userCert.getCertSn())) {
            certSn = userCert.getCertSn();
        }
    }
    uiModel.addAttribute("product", product);
    uiModel.addAttribute("certSn", certSn);
    uiModel.addAttribute("keySn", keySn);
    uiModel.addAttribute("enterpriseName", enterpriseName);
    session.setAttribute("webbill", bill);
    if (null != product.getCert()) {
        // 产品关联的数字证书
        DigitalCert digitalCert = sqlSession.selectOne("com.itrus.portal.db.DigitalCertMapper.selectByPrimaryKey", product.getCert());
        // 用于获取产品期限(数字证书的期限)
        uiModel.addAttribute("digitalCert", digitalCert);
    }
    return "clientFW/pay";
}
Also used : PayConfig(com.itrus.portal.db.PayConfig) HashMap(java.util.HashMap) HttpSession(javax.servlet.http.HttpSession) ArrayList(java.util.ArrayList) Product(com.itrus.portal.db.Product) DigitalCert(com.itrus.portal.db.DigitalCert) Bill(com.itrus.portal.db.Bill) Enterprise(com.itrus.portal.db.Enterprise) UserinfoEnterprise(com.itrus.portal.db.UserinfoEnterprise) Transfer(com.itrus.portal.db.Transfer) UserCert(com.itrus.portal.db.UserCert) OnlinePay(com.itrus.portal.db.OnlinePay) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 13 with PayConfig

use of com.itrus.portal.db.PayConfig in project portal by ixinportal.

the class PayWebController method notifyUrl.

/**
 * 客户服务器回调页面
 * [callback]<xml>
 *     <nonce_str><![CDATA[1639324264]]></nonce_str>
 *     <out_trade_no><![CDATA[TWCX20160629144115177012]]></out_trade_no>
 *     <return_code><![CDATA[SUCCESS]]></return_code>
 *     <return_msg><![CDATA[姣浠瀹氦骀]]></return_msg>
 *     <total_fee><![CDATA[0.01]]></total_fee>
 *     <transaction_id><![CDATA[2016071521001004860279928780]]></transaction_id>
 *     <sign>321D99F194DE952B6699C3E23361C06C</sign>
 *     <nonce_str>1639324264</nonce_str>
 * </xml>
 *
 * @param request
 * @param response
 * @return
 */
@RequestMapping(value = "/notifyUrl")
public String notifyUrl(HttpServletRequest request, HttpServletResponse response) {
    String line = null;
    String notifyXml = "";
    // DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    // def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
    // TransactionStatus s = null;
    Map<String, String> m = null;
    try {
        if ((line = request.getReader().readLine()) != null) {
            notifyXml += line;
        }
        m = PayUtil.parseXmlToList2(notifyXml);
        String sign = m.get("sign");
        PayConfigExample pce = new PayConfigExample();
        PayConfigExample.Criteria pcc = pce.createCriteria();
        pcc.andAppIdEqualTo(m.get("appid"));
        PayConfig pc = sqlSession.selectOne("com.itrus.portal.db.PayConfigMapper.selectByExample", pce);
        APP_SECRET_KEY = pc.getSecretKey();
        boolean validate = PayUtil.validate(sign, m, APP_SECRET_KEY);
        if (validate) {
            if (("SUCCESS").equals(m.get("return_code"))) {
                // m.get("return_msg");//返回信息
                // m.get("out_trade_no");//交易订单号
                // s = transactionManager.getTransaction(def);
                BillExample be = new BillExample();
                BillExample.Criteria bc = be.createCriteria();
                bc.andBillIdEqualTo(m.get("out_trade_no"));
                Bill bill = sqlSession.selectOne("com.itrus.portal.db.BillMapper.selectByExample", be);
                bill.setBillStatus(3);
                bill.setPayTime(new Date());
                sqlSession.update("com.itrus.portal.db.BillMapper.updateByPrimaryKeySelective", bill);
                OnPayInfo payInfo = sqlSession.selectOne("com.itrus.portal.db.OnPayInfoMapper.selectByPrimaryKey", bill.getOnPayInfo());
                payInfo.setPayStatus(1);
                payInfo.setWcTime(bill.getPayTime());
                payInfo.setPayNo(m.get("transaction_id"));
                OnlinePayExample ope = new OnlinePayExample();
                OnlinePayExample.Criteria opc = ope.createCriteria();
                opc.andPayConfigEqualTo(pc.getId());
                // 1支付宝 2微信
                opc.andWayEqualTo((Integer.parseInt(m.get("pay_type")) == 0 ? 2 : 1));
                OnlinePay onlinePay = sqlSession.selectOne("com.itrus.portal.db.OnlinePayMapper.selectByExample", ope);
                payInfo.setOnlinePay(onlinePay.getId());
                // payInfo.setComment(m.get("return_msg"));
                sqlSession.update("com.itrus.portal.db.OnPayInfoMapper.updateByPrimaryKeySelective", payInfo);
                // transactionManager.commit(s);
                // 标示成功接收到
                PayUtil.sendToCFT(response, "SUCCESS");
            // m.get("total_fee");//金额
            // m.get("attach");//附加数据 在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
            } else if (("FAIL").equals(m.get("return_code"))) {
                // 第三方返回支付失败的情况
                PayUtil.sendToCFT(response, "SUCCESS");
                LogUtil.syslog(sqlSession, "在线支付", m.get("out_trade_no") + "回调错误:[callback FAIL]FAIL" + notifyXml);
            } else {
                // 标示没接收到
                PayUtil.sendToCFT(response, "FAIL");
                LogUtil.syslog(sqlSession, "在线支付", m.get("out_trade_no") + "回调错误:[callback FAIL]" + notifyXml);
            }
        // if("FAIL".equals(m.get("result_code"))) {
        // m.get("err_code");//错误码 有:SYSTEMERROR\SIGNERROR\LACK_PARAMS\PARAMS_ERROR\WECHAT_EMPTY\WECHAT_SIGNERROR\ALI_EMPTY\ALI_SIGNERROR
        // m.get("err_code_des");//错误描述 有:系统错误\平台签名失败\缺少参数\参数不合规范或域名不匹配\微信报文为空\微信签名错误\支付宝报文为空\支付宝验签失败
        // }
        }
    // for (Entry<String, String> s : m.entrySet()) {
    // System.out.println(s.getKey()+"#################"+s.getValue());
    // }
    } catch (Exception e) {
        LogUtil.syslog(sqlSession, "在线支付", m.get("out_trade_no") + "回调错误:" + e.toString() + notifyXml);
        log.error(m.get("out_trade_no") + "[callback FAIL]" + e.toString());
        e.printStackTrace();
    }
    // }
    return null;
}
Also used : PayConfig(com.itrus.portal.db.PayConfig) OnlinePayExample(com.itrus.portal.db.OnlinePayExample) PayConfigExample(com.itrus.portal.db.PayConfigExample) Date(java.util.Date) BillExample(com.itrus.portal.db.BillExample) OnPayInfo(com.itrus.portal.db.OnPayInfo) Bill(com.itrus.portal.db.Bill) OnlinePay(com.itrus.portal.db.OnlinePay) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

PayConfig (com.itrus.portal.db.PayConfig)13 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)13 OnlinePay (com.itrus.portal.db.OnlinePay)5 PayConfigExample (com.itrus.portal.db.PayConfigExample)4 HashMap (java.util.HashMap)4 ResponseBody (org.springframework.web.bind.annotation.ResponseBody)3 Bill (com.itrus.portal.db.Bill)2 OnlinePayExample (com.itrus.portal.db.OnlinePayExample)2 Transfer (com.itrus.portal.db.Transfer)2 ArrayList (java.util.ArrayList)2 Date (java.util.Date)2 TreeMap (java.util.TreeMap)2 HttpSession (javax.servlet.http.HttpSession)2 BillExample (com.itrus.portal.db.BillExample)1 DigitalCert (com.itrus.portal.db.DigitalCert)1 Enterprise (com.itrus.portal.db.Enterprise)1 EnterpriseQq (com.itrus.portal.db.EnterpriseQq)1 EnterpriseQqExample (com.itrus.portal.db.EnterpriseQqExample)1 ExtraBill (com.itrus.portal.db.ExtraBill)1 ExtraProduct (com.itrus.portal.db.ExtraProduct)1