微信统一下单

// 
@ResponseBody
@RequestMapping(value = "red_user_pay")
public String fala_user_pay(ServletRequest request) throws Exception {


String userid = request.getParameter("user_id");
String money = request.getParameter("money");
String openid = request.getParameter("openid");
String content = request.getParameter("content");
String project_id = request.getParameter("project_id");
String signType  = "MD5";


if (StringUtils.isEmpty(userid)) {


new ApiException(Constant.RETURNCODE_2, "falaid为空");
}


if (StringUtils.isEmpty(money)) {


new ApiException(Constant.RETURNCODE_2, "sn为空");
}


if (StringUtils.isEmpty(openid)) {


new ApiException(Constant.RETURNCODE_2, "openid为空");
}
User user = iUserService.findOne(Integer.valueOf(userid));
if (user == null) {
new ApiException(Constant.RETURNCODE_2, "user为空");
}


double s_money = Double.valueOf(money)/100.0;

// 记录日志
ProjectSupport support = new ProjectSupport(Integer.valueOf(userid), content, new Date(),
s_money, Integer.valueOf(project_id), user.getPhoto(), user.getName());


support.setState(0);

ScanPayResData bean = weixinPay(openid, 200,support);
iProjectSupportService.save(support);
String prepay_id = bean.getPrepay_id();

String appId = "wxd1c9560a2bf42bf0";
String timeStamp = new Date().getTime()+"";
String nonceStr = "5K8276ILTKCH16CQ2502SI8ZNMTM98VS";
String packages = "prepay_id="
+ prepay_id;

Map<String, Object> map = new HashMap<String, Object>();
map.put("appId", appId);
map.put("timeStamp", timeStamp);
map.put("nonceStr", nonceStr);
map.put("package", packages);
map.put("signType", signType);


String sign =  Signature.getSign(map);

MapPaySign s = new MapPaySign(nonceStr, timeStamp, appId, signType, packages, sign);


return after(s);
}


public ScanPayResData weixinPay(String openid, Integer money, ProjectSupport support )
throws UnrecoverableKeyException, KeyManagementException, NoSuchAlgorithmException, KeyStoreException,
IOException, DocumentException, UnsupportedEncodingException {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");


Calendar cal = Calendar.getInstance();
// cal.setTime(format.parse(nowDate));
cal.add(Calendar.DAY_OF_YEAR, +1);
String nextDate = format.format(cal.getTime());


Date date = new Date();
String s = format.format(date);
int six = (int) ((Math.abs(new Random().nextInt())) % 9000 + 1000);
String req_id = s + six;// 20位订单号
support.setOrderno(req_id);


// int money = (int) (taocan.getMoney() * 100);


ScanPayReqData scanPayReqData = new ScanPayReqData("zhifu", "state=123", req_id, money, "WEB", "192.168.10.101",
format.format(new Date()), nextDate, "http://hongshizi.tunnel.2bdata.com/red/red/red_paycallback", openid,
"JSAPI");


// String body = WXPay.requestScanPayService(scanPayReqData);


HttpsRequest r = new HttpsRequest();


String xml = XMLParse.unifiedorder(scanPayReqData.getAppid(), scanPayReqData.getAttach(),
scanPayReqData.getBody(), scanPayReqData.getMch_id(), scanPayReqData.getNonce_str(),
scanPayReqData.getNotify_url(), scanPayReqData.getOpenid(), scanPayReqData.getOut_trade_no(),
scanPayReqData.getSpbill_create_ip(), scanPayReqData.getTotal_fee() + "",
scanPayReqData.getTrade_type(), scanPayReqData.getSign(), scanPayReqData.getDevice_info(),
scanPayReqData.getTime_start(), scanPayReqData.getTime_expire());
String body = r.sendPost(Configure.UNIFIED_ORDER, xml);
System.err.println(body);


ScanPayResData bean = new ScanPayResData();


String sign = "";


// 
SAXReader reader = new SAXReader();
Document document = reader.read(new ByteArrayInputStream(body.getBytes("utf-8")));
if (document != null) {


// 
Element root = document.getRootElement();


System.err.println(document.getRootElement());
// 
List<Element> elementList = root.elements();


// 
for (Element e : elementList) {
System.err.println(e.getName() + "---------" + e.getText());


if ("return_code".equals(e.getName())) {//


bean.setReturn_code(e.getText());


}


if ("return_msg".equals(e.getName())) {//


bean.setReturn_msg(e.getText());


}


if ("appid".equals(e.getName())) {//


bean.setAppid(e.getText());
}


if ("mch_id".equals(e.getName())) {//


bean.setMch_id(e.getText());
}


if ("device_info".equals(e.getName())) {//


bean.setDevice_info(e.getText());
}


if ("nonce_str".equals(e.getName())) {//


bean.setNonce_str(e.getText());
}


if ("sign".equals(e.getName())) {//


// bean.setSign(e.getText());
sign = e.getText();


}


if ("result_code".equals(e.getName())) {//


bean.setResult_code(e.getText());
}


if ("prepay_id".equals(e.getName())) {//


bean.setPrepay_id(e.getText());
}


if ("trade_type".equals(e.getName())) {//


bean.setTrade_type(e.getText());
}


}


}


if (sign.equals(bean.getSign_2())) {// sign鏍¢獙鎴愬姛


}


return bean;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值