<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="com.yc.multiData.SpObserver"%> <%@page import="com.yc.utils.SessionKey"%> <%@page import="com.github.binarywang.wxpay.exception.WxPayException"%> <%@page import="me.chanjar.weixin.mp.api.WxMpService"%> <%@page import="com.yc.factory.FactoryBean"%> <%@page import="java.io.IOException"%> <%@page import="com.yc.sdk.weixinmp.action.MpServiceInit"%> <%@page import="com.yc.sdk.shopping.util.SettingKey"%> <%@page import="me.chanjar.weixin.common.bean.WxJsapiSignature"%> <%@page import="com.yc.sdk.shopping.service.SettingIfc"%> <%@page import="com.yc.sdk.shopping.entity.SettingEntity"%> <%@page import="com.yc.sdk.shopping.service.department.DepartmentIfc"%> <%@page import="com.yc.sdk.shopping.entity.DepartmentEntity"%> <%@page import="org.springframework.dao.DataAccessException"%> <%@page import="com.yc.entity.DataSourceEntity"%> <%@page import="com.yc.multiData.MultiDataSource"%> <%@page import="com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderResult"%> <%@page import="com.github.binarywang.wxpay.config.WxPayConfig"%> <%@page import="com.github.binarywang.wxpay.service.WxPayService"%> <%@page import="com.github.binarywang.wxpay.service.impl.WxPayServiceImpl"%> <%@page import="com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest"%> <%@page import="com.yc.sdk.shopping.entity.OrderEntity"%> <%@page import="com.yc.sdk.shopping.service.order.OrderIfc"%> <%@page import="java.util.Date"%> <%@page import="java.util.Calendar"%> <%@page import="java.text.SimpleDateFormat"%> <%@page import="java.util.Map"%> <%@page import="com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult"%> <%@page import="redis.clients.jedis.JedisPool"%> <%@page import="com.yc.sdk.weixinopen.entity.OpenComponentAppSetting"%> <% //String queryString = request.getQueryString(); String hostUrl = SettingKey.getHostUrl(request) ; //将微信corpid组装成url String wxQueryString = SettingKey.getQueryStringByWx(request); boolean isMoblieBrowser = SettingKey.isMoblieBrowser(request); //参数设置 //String cccode = request.getParameter("cccode") ; String corpId = request.getParameter(SessionKey.WEIXIN_CORPID) ; String wx = request.getParameter(SessionKey.WEIXIN_FROM); String cltCode = (session.getAttribute(SettingKey.CLTCODE) == null ? "" : (String)session.getAttribute(SettingKey.CLTCODE)); if (cltCode == null || "".equals(cltCode) ) { String queryString = request.getQueryString(); String redirect = "/shopping/" + (isMoblieBrowser?"mobile/":"") + "account/order.jsp"+(queryString!=null?"?"+queryString:""); session.setAttribute(SettingKey.REDIRECT,redirect ); try { out.print(SettingKey.getRedirectUrl(hostUrl + "/shopping/" + (isMoblieBrowser?"mobile/":"") + "account/login.jsp" + (wxQueryString == null||"".equals(wxQueryString)?"":"?" + wxQueryString) )); } catch (IOException e) { // } return ; }else { session.removeAttribute(SettingKey.REDIRECT); } String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID); SettingEntity settingEntity = null ; DataSourceEntity mpEntity = null; if (wx!=null&& !"".equals(wx) && corpId != null && !"".equals(corpId)) { if (wx.equals("1")) { mpEntity = MultiDataSource.getDataSourceMapByCorpId(corpId) ; }else { mpEntity = MultiDataSource.getDataSourceMapByMpAppId(corpId) ; } }else { mpEntity = MultiDataSource.getDataSourceMap(dbId) ; //获取CorpId连接参数 } if (mpEntity == null|| "".equals(mpEntity.getMpSecret())) { System.out.println("未找到微信公众号的AppId的参数,请在数据源("+dbId+")中设置好"); try { out.println("未找到微信公众号的AppId的参数,请在数据源("+dbId+")中设置好"); } catch (IOException e) { e.printStackTrace(); }catch (Exception e) { e.printStackTrace(); } return ; } if (mpEntity.getMpMchId() == null||mpEntity.getMpMchId().equals("") || mpEntity.getMpMchKey() == null || "".equals(mpEntity.getMpMchKey())) { out.println("请在数据源中设置微信支付【商户号】和【API密钥】信息,同时上传【API证书】到服务器!"); return; } String url = hostUrl; url+=request.getRequestURI(); String queryString = request.getQueryString(); if (queryString !=null && !"".equals(queryString)) { url += "?"+queryString ; } WxMpService wxMpService = MpServiceInit.getWxMpServiceByOpenService(mpEntity.getMpAppId()); //WxMpService wxMpService = MpServiceInit.getWxMpService(mpEntity,jedisPool); try { WxJsapiSignature wxJsapiSignature = wxMpService.createJsapiSignature(url); if (wxJsapiSignature == null) { out.println("获取微信公众号jsapi签名失败,请检查数据源中的微信公众号参数设置!"); return; } }catch (me.chanjar.weixin.common.error.WxErrorException e) { e.printStackTrace(); out.println("微信错误编号:"+e.getError().getErrorCode() +",微信错误提示:" + e.getError().getErrorMsg()); return; } WxJsapiSignature wxJsapiSignature = wxMpService.createJsapiSignature(url); if (wxJsapiSignature == null) { out.println("获取微信公众号jsapi签名失败,请检查数据源中的微信公众号参数设置!"); return; } Date timeStart = new Date() ; Calendar timeExpire=Calendar.getInstance(); timeExpire.setTime(new Date()); timeExpire.set(Calendar.HOUR,timeExpire.get(Calendar.HOUR)+2);//让小时加2 SimpleDateFormat df=new SimpleDateFormat("yyyyMMddHHmmss"); String docCode = (request.getParameter(SettingKey.DOCCODE) == null ? "":(String)request.getParameter(SettingKey.DOCCODE)); String formId = (request.getParameter(SettingKey.FORMID) == null ? "":(String)request.getParameter(SettingKey.FORMID)); String REMOTE_ADDRS = SettingKey.getIpAddr(request) ; // request.getRemoteAddr(); String REMOTE_ADDR[] = REMOTE_ADDRS.split(","); OrderIfc orderIfc = (OrderIfc)FactoryBean.getBean("OrderImpl"); OrderEntity orderEntity = null ; //订单头信息 try { SpObserver.setDBtoInstance("_"+dbId);//切换数据源 //参数设置 SettingIfc settingIfc = (SettingIfc)FactoryBean.getBean("SettingImpl"); settingEntity = settingIfc.getSettingEntity(request) ; if (settingEntity == null) { out.println("未找到【维护导购系统设置】参数,请在 714001 功能号维护"); return ; } if (settingEntity.getWxPayAcctCode() == null || "".equals(settingEntity.getWxPayAcctCode())) { out.println("请在 714001【维护导购系统设置】功能号中预先维护【微信支付银行账户】参数"); return ; } String openid = (String)session.getAttribute(SessionKey.WEIXIN_OPENID); //订单头信息 orderEntity = orderIfc.getOrderHeaderEntity(cltCode,docCode,formId!=null&&!"".equals(formId)?Integer.parseInt(formId):null); if (orderEntity == null) { out.println("【"+docCode+"】订单不存在!"); return; } if (orderEntity.getCurrencyIsoCode() == null || "".equals(orderEntity.getCurrencyIsoCode())) { out.println("当前订单货币【"+orderEntity.getCurrency()+"】对应的【ISO国际货币代码】不存在,请在 110703 功能号中预先维护!"); return; } //WxPayService wxPayService = (WxPayService)FactoryBean.getBean("WxPayServiceImpl"); WxPayServiceImpl wxPayService = new WxPayServiceImpl() ; WxPayUnifiedOrderResult wxPayUnifiedOrderResult = null ; WxPayMpOrderResult wxPayMpOrderResult = null; if (orderEntity.getWeiXinPayAmount() != 0.0) { String notifyUrl = mpEntity.getCorpURL()+ SettingKey.WXPAY_ORDER_NOTICE_URL ; WxPayUnifiedOrderRequest wxPayUnifiedOrderRequest = WxPayUnifiedOrderRequest.newBuilder() .deviceInfo("WEB") .body(mpEntity.getMpMchName()) .outTradeNo(orderEntity.getDocCode()).detail("") .feeType(orderEntity.getCurrencyIsoCode()) .totalFee( (int)(orderEntity.getWeiXinPayAmount()*100.00) ) .spbillCreateIp(REMOTE_ADDR[0]) .timeStart(df.format(timeStart)) .timeExpire(df.format(timeExpire.getTime())) .notifyUrl(notifyUrl).openid(openid) .tradeType("JSAPI").build(); WxPayConfig payConfig = new WxPayConfig() ; payConfig.setAppId(mpEntity.getMpAppId()); payConfig.setMchId(mpEntity.getMpMchId()) ; payConfig.setNotifyUrl(notifyUrl) ; payConfig.setTradeType("JSAPI"); payConfig.setMchKey(mpEntity.getMpMchKey()) ; payConfig.setKeyPath(request.getContextPath()+ SettingKey.getWxPayCertPath(dbId)) ; //cjdhHcPekjMaWcmdjBBsPocMdewsePdj wxPayService.setConfig(payConfig); wxPayUnifiedOrderResult = wxPayService.unifiedOrder(wxPayUnifiedOrderRequest); wxPayMpOrderResult = wxPayService.createOrder(wxPayUnifiedOrderRequest) ; } %> " rel="stylesheet" media="screen" /> " rel="stylesheet" type="text/css" /> " rel="stylesheet" type="text/css" /> " rel="stylesheet"> 微信支付


<%= orderEntity.getCurrencySign() %><%= orderEntity.getWeiXinPayAmount() %>

  •   <%= (orderEntity.getFullAddress() != null&& !"".equals(orderEntity.getFullAddress())?orderEntity.getFullAddress():orderEntity.getPropertyAddress()) %>

  •   <%= orderEntity.getCltName() %>      <%= orderEntity.getTel() %>

  •   <%= orderEntity.getHdMemo() %>

  •   <%= orderEntity.getDocCode() %>   <%= (new SimpleDateFormat("yyyy-MM-dd")).format( orderEntity.getDocDate()) %>   <%= orderEntity.getDocStatus()!= null&&orderEntity.getDocStatus().equals(0)?"待支付": orderEntity.getDocStatusName() %>



<% if (orderEntity.getWeiXinPayAmount() != 0.0) { %> <% } %> <% //设置微信分享 //微信js api 列表 request.setAttribute(SettingKey.JSAPILIST,new String[]{"onMenuShareTimeline","onMenuShareAppMessage","onMenuShareQQ","onMenuShareQZone","previewImage"}); //图片缩放 //request.setAttribute(SettingKey.WXPREVIEWIMAGES,new String[]{".table img"}) ; %> <% }catch(DataAccessException e ) { e.printStackTrace(); out.println(SettingKey.getJsHint(e.getCause().getMessage())); }catch (WxPayException e) { if ("ORDERPAID".equalsIgnoreCase(e.getErrCode())) { out.println(""); }else { e.printStackTrace(); out.println(SettingKey.getJsHint("微信错误代码:" + e.getErrCode()+",错误信息:"+e.getErrCodeDes())); } return ; }catch(Exception e ) { e.printStackTrace(); out.println(SettingKey.getJsHint(e.getMessage())); }finally { SpObserver.setDBtoInstance(); } %>