use of com.github.binarywang.wxpay.bean.entpay.EntPayRequest in project summer by foxsugar.
the class MenuHandler method handle_clear.
private WxMpXmlOutMessage handle_clear(WxMpXmlMessage wxMessage, WxMpService wxService) {
WxMpUser wxMpUser = null;
try {
wxMpUser = wxService.getUserService().userInfo(wxMessage.getFromUser());
String unionId = wxMpUser.getUnionId();
String openId = wxMpUser.getOpenId();
Long agentId = gameAgentService.getGameAgentDao().getUserIdByUnionId(unionId);
if (agentId == null || agentId == 0) {
return new TextBuilder().build("代理不存在", wxMessage, wxService);
}
// gameAgent 是否已经生成ticket
AgentBean agentBean = RedisManager.getAgentRedisService().getAgentBean(agentId);
// 金额小于 100 不能提
if (agentBean.getRebate() < 100) {
return new TextBuilder().build("金额小于100,不能提现", wxMessage, wxService);
}
double rebate = agentBean.getRebate();
// 不能大于20000
if (rebate > 20000) {
rebate = 20000;
}
Double amount = rebate * 100;
DecimalFormat df = new DecimalFormat("######0.00");
// 到账金额
double amountInt = Double.valueOf(df.format(amount / 100));
// 手续费
// double poundage = Double.valueOf(df.format((rebate *100 - amountInt *100)/100));
double poundage = 0;
long tradeId = createOrderId();
String ip = Utils.getLocalIp();
EntPayRequest wxEntPayRequest = new EntPayRequest();
wxEntPayRequest.setAppid(wechatConfig.getMpAppId());
wxEntPayRequest.setMchId(wechatConfig.getMchId());
wxEntPayRequest.setNonceStr(Sha1Util.getNonceStr());
wxEntPayRequest.setPartnerTradeNo("" + tradeId);
wxEntPayRequest.setOpenid(openId);
wxEntPayRequest.setCheckName("NO_CHECK");
// 金额 为分
wxEntPayRequest.setAmount(amount.intValue());
wxEntPayRequest.setDescription("提现");
wxEntPayRequest.setSpbillCreateIp(ip);
try {
EntPayResult wxEntPayResult = payService.getEntPayService().entPay(wxEntPayRequest);
if ("SUCCESS".equals(wxEntPayResult.getResultCode().toUpperCase()) && "SUCCESS".equals(wxEntPayResult.getReturnCode().toUpperCase())) {
this.logger.info("企业对个人付款成功!\n付款信息:\n" + wxEntPayResult.toString());
RedisManager.getAgentRedisService().addRebate(agentId, -rebate, null, null);
// 充值记录
Charge charge = new Charge();
charge.setOrderId("" + tradeId);
charge.setUserid(agentId);
charge.setMoney(rebate);
charge.setMoney_point(rebate);
charge.setStatus(1);
charge.setSp_ip(ip);
charge.setRecharge_source("11");
// 充值类型
charge.setChargeType(0);
charge.setCreatetime(new Date());
chargeService.save(charge);
// redis 提现记录
RedisManager.getLogRedisService().logTakeOutNum(rebate);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder().toUser(wxMpUser.getOpenId()).templateId("fT9wgjkN5Wfm8dtbPQiozDg7uftEaE6AoMq3YLDeUxc").url("").build();
String date = dateFormat.format(new Date());
templateMessage.addData(new WxMpTemplateData("first", "您申请的提现金额已到帐.")).addData(new WxMpTemplateData("keyword1", date)).addData(new WxMpTemplateData("keyword2", "提现到零钱")).addData(new WxMpTemplateData("keyword3", "" + amountInt)).addData(new WxMpTemplateData("remark", "感谢您的使用"));
wxService.getTemplateMsgService().sendTemplateMsg(templateMessage);
// 发送消息
return null;
// {{first.DATA}}{{fi
// 申请时间:{{keyword1.DATA}}
// 提现方式:{{keyword2.DATA}}
// 提现金额:{{keyword3.DATA}}
// 手续费用:{{keyword4.DATA}}
// 到账金额:{{keyword5.DATA}}
// {{remark.DATA}}
} else {
this.logger.error("err_code: " + wxEntPayResult.getErrCode() + " err_code_des: " + wxEntPayResult.getErrCodeDes());
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (WxErrorException e) {
logger.error("提现出错", e);
return new TextBuilder().build(e.getMessage(), wxMessage, wxService);
} catch (SocketException e) {
e.printStackTrace();
}
return null;
}
Aggregations