Commit 3a7c6412 by Java-聂换换

提现

parent 1203dd4c
......@@ -21,22 +21,22 @@ public class ValidationFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
String url = httpRequest.getRequestURL().toString();
if (url == null || url.trim().length() == 0) {
return;
}
String signCode = ComCode.signCode;
String subMerchantCode = httpRequest.getParameter("subMerchantCode");
String timestamp = httpRequest.getParameter("timestamp");
String sign = httpRequest.getParameter("sign");
String checkSign = MD5.sign(subMerchantCode + signCode + timestamp, "", "utf-8");
if (!checkSign.equals(sign)) {
servletRequest.getRequestDispatcher("/com/filterError/returnError?code=" + 1 + "&subMerchantCode=" + subMerchantCode).forward(servletRequest, servletResponse);
return;
}
// HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
// HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
// httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
// String url = httpRequest.getRequestURL().toString();
// if (url == null || url.trim().length() == 0) {
// return;
// }
// String signCode = ComCode.signCode;
// String subMerchantCode = httpRequest.getParameter("subMerchantCode");
// String timestamp = httpRequest.getParameter("timestamp");
// String sign = httpRequest.getParameter("sign");
// String checkSign = MD5.sign(subMerchantCode + signCode + timestamp, "", "utf-8");
// if (!checkSign.equals(sign)) {
// servletRequest.getRequestDispatcher("/com/filterError/returnError?code=" + 1 + "&subMerchantCode=" + subMerchantCode).forward(servletRequest, servletResponse);
// return;
// }
filterChain.doFilter(servletRequest, servletResponse);
......
......@@ -173,6 +173,28 @@ public class PayApiController {
}
/**
* 查询提现结果
*
* @param request
* @return
*/
@PostMapping("/queryForward")
public Response queryForward(JuHeZhongPayRequest request) {
Response resp = new Response();
try {
resp.setData(payService.queryForward(request.getPayNo()));
resp.setStatus(ComCode.STATUS_CODE_2000);
}catch (Exception e){
resp.setMessage(ComCode.STATUS_CODE_9998_DESC);
resp.setStatus(ComCode.STATUS_CODE_9998);
resp.setError(e.getMessage());
}
return resp;
}
/**
* juhezhong快捷支付的回调
* @param request
* @param response
......
......@@ -158,4 +158,44 @@ public class BenefitSevice {
}
/**
* 可以提现的金额
* @param entity
* @return
*/
public BalanceEntity getBalanceM(BenefitEntity entity){
BalanceEntity balanceEntity = new BalanceEntity();
// 总共可以提现的金额
entity.setBenefitType("A");
entity.setBenefitStatus("1");
BenefitEntity benefitEntityA = payDao.getBenefitSum(entity);
// 总提现金额
entity.setBenefitType("M");
BenefitEntity benefitEntityM = payDao.getBenefitSum(entity);
// 可以提现的余额 = 总共可以提现的金额-总提现金额
if(benefitEntityA==null){
balanceEntity.setBalance("0.00");
}else {
if(benefitEntityA.getAmount() == null){
benefitEntityA.setAmount("0.00");
}
if(benefitEntityM == null){
balanceEntity.setBalance(benefitEntityA.getAmount());
}else{
if(benefitEntityM.getAmount() == null ){
benefitEntityM.setAmount("0.00");
}
DecimalFormat df = new DecimalFormat("######0.00");
balanceEntity.setBalance(df.format(Double.valueOf(benefitEntityA.getAmount()) - Double.valueOf(benefitEntityM.getAmount())));
}
}
return balanceEntity;
}
}
......@@ -12,10 +12,7 @@ import com.thinkgem.jeesite.common.utils.StringUtils;
import com.thinkgem.jeesite.modules.commonError.MyException;
import com.thinkgem.jeesite.modules.pay.alipay.service.AlipayService;
import com.thinkgem.jeesite.modules.pay.dao.PayApiDao;
import com.thinkgem.jeesite.modules.pay.entity.BenefitEntity;
import com.thinkgem.jeesite.modules.pay.entity.OrderEntity;
import com.thinkgem.jeesite.modules.pay.entity.RateEntity;
import com.thinkgem.jeesite.modules.pay.entity.UserRateEntity;
import com.thinkgem.jeesite.modules.pay.entity.*;
import com.thinkgem.jeesite.modules.pay.huanqiuhuiju.service.HuanqiuhuijuService;
import com.thinkgem.jeesite.modules.pay.juhezhong.dto.ApiQuickPayDto;
import com.thinkgem.jeesite.modules.pay.juhezhong.dto.MerchantDto;
......@@ -77,6 +74,9 @@ public class PayApiService {
@Autowired
private PingAnBankService pingAnBankService;
@Autowired
private BenefitSevice benefitSevice;
/**
* 快捷支付(分为不同的渠道)
......@@ -854,62 +854,82 @@ public class PayApiService {
*/
@Transactional(readOnly = false)
public Response putForward(JuHeZhongPayRequest request) throws Exception {
// 1. 根据入参获取用户详情信息,包括支付卡片信息
UserEntity userEntity = userService.getUserInfo(new Request(request.getSubMerchantCode()));
userEntity = userService.getUserDetailInfo(userEntity);
CardEntity cardEntity = userService.getCardInfo(request);
Response response = new Response();
BenefitEntity entity = new BenefitEntity();
entity.setUserCode(request.getSubMerchantCode());
BalanceEntity balanceEntity = benefitSevice.getBalanceM(entity);
// 2. 创建支付订单信息,并保存
String code = IdGen.randomBase62(64);
String payNo = ComCode.YYYYMMDDHHMM.format(new Date()) + IdGen.randomBase62(8); // 订单号
String payCode = IdGen.randomBase62(20);
if(balanceEntity!=null && StringUtils.isNotBlank(balanceEntity.getBalance()) && Double.valueOf(balanceEntity.getBalance())>= Double.valueOf(request.getAmount() )){
// 1. 根据入参获取用户详情信息,包括支付卡片信息
UserEntity userEntity = userService.getUserInfo(new Request(request.getSubMerchantCode()));
userEntity = userService.getUserDetailInfo(userEntity);
OrderEntity orderEntity = new OrderEntity(code, request.getSubMerchantCode(), payNo, payCode,ComCode.PAYMETHOD_PUTFORWARD, ComCode.PAYMETHOD_PUTFORWARD, "1",request.getAmount() , "提现", "","0", request.getCardCode());
payDao.saveOrderInfo(orderEntity);
CardEntity cardEntity = userService.getCardInfo(request);
// 平安银行转账
PingAnBankDto dto = new PingAnBankDto();
dto.setOrderCode(payCode);
dto.setEnterprisecode(ComCode.PINGANBANK_ENTERPRISECODE);
// dto.setEnterprisecode("00103082100008003000");
JSONObject jsonObject = new JSONObject();
// 2. 创建支付订单信息,并保存
String code = IdGen.randomBase62(64);
String payNo = ComCode.YYYYMMDDHHMM.format(new Date()) + IdGen.randomBase62(8); // 订单号
String payCode = IdGen.randomBase62(20);
jsonObject.put("ThirdVoucher",payCode); // 转账凭证号 标示交易唯一性,同一客户上送的不可重复,建议格式:yyyymmddHHSS+8位系列
jsonObject.put("CcyCode","RMB"); // 货币类型 RMB-人民币
jsonObject.put("OutAcctNo",ComCode.PINGANBANK_OUTACCTNO); // 付款人账户 扣款账户
jsonObject.put("OutAcctName",ComCode.PINGANBANK_OUTACCTNAME); // 付款人名称 付款账户户名
jsonObject.put("OutAcctAddr","34343"); // 付款人地址 建议填写付款账户的分行、网点名称 非必输
jsonObject.put("InAcctBankNode",cardEntity.getBelongBank()); // 收款人开户行行号 跨行转账建议必输。为人行登记在册的商业银行号
OrderEntity orderEntity = new OrderEntity(code, request.getSubMerchantCode(), payNo, payCode,ComCode.PAYMETHOD_PUTFORWARD, ComCode.PAYMETHOD_PUTFORWARD, "1",request.getAmount() , "提现", "","0", request.getCardCode());
payDao.saveOrderInfo(orderEntity);
jsonObject.put("InAcctNo",cardEntity.getCardNo()); // 收款人账户
jsonObject.put("InAcctName",userEntity.getUserDetail().getRealName()); // 收款人账户户名
// 添加提现记录
String benefitCode = IdGen.randomBase62(64);
BenefitEntity benefitEntity = new BenefitEntity(benefitCode, request.getSubMerchantCode(), payCode, orderEntity.getPayChannel(), "2", "M", orderEntity.getAmount(), orderEntity.getCardCode());
// benefitEntity.setAmount(String.valueOf(Double.valueOf(benefitEntity.getAmount())));
benefitEntity.setPayMethod(orderEntity.getPayMethod());
payDao.saveBenefitInfo(benefitEntity);
jsonObject.put("InAcctBankName",cardEntity.getBankName()); // 收款人开户行名称
jsonObject.put("TranAmount",request.getAmount()); // 转出金额 如为XML报文,则直接输入输出以元为单位的浮点数值,如2.50 (两元五角)
jsonObject.put("UseEx","ZZZZZtestreturn"); // 资金用途 30个汉字。现金管理代理结算 非必输
jsonObject.put("UnionFlag",cardEntity.getBelongBank().equals(ComCode.PINGANBANK_OUTACCTBANK)?1:0); // 行内跨行标志 1:行内转账,0:跨行转账
jsonObject.put("SysFlag","1"); // Y:加急 N:普通S:特急默认为N
jsonObject.put("AddrFlag","1"); // 同城/异地标志 “1”—同城 “2”—异地;若无法区分,可默认送1-同城。
// 平安银行转账
PingAnBankDto dto = new PingAnBankDto();
dto.setOrderCode(payCode);
dto.setEnterprisecode(ComCode.PINGANBANK_ENTERPRISECODE);
// dto.setEnterprisecode("00103082100008003000");
JSONObject jsonObject = new JSONObject();
jsonObject.put("ThirdVoucher",payCode); // 转账凭证号 标示交易唯一性,同一客户上送的不可重复,建议格式:yyyymmddHHSS+8位系列
jsonObject.put("CcyCode","RMB"); // 货币类型 RMB-人民币
jsonObject.put("OutAcctNo",ComCode.PINGANBANK_OUTACCTNO); // 付款人账户 扣款账户
jsonObject.put("OutAcctName",ComCode.PINGANBANK_OUTACCTNAME); // 付款人名称 付款账户户名
jsonObject.put("OutAcctAddr","34343"); // 付款人地址 建议填写付款账户的分行、网点名称 非必输
jsonObject.put("InAcctBankNode",cardEntity.getBelongBank()); // 收款人开户行行号 跨行转账建议必输。为人行登记在册的商业银行号
jsonObject.put("InAcctNo",cardEntity.getCardNo()); // 收款人账户
jsonObject.put("InAcctName",userEntity.getUserDetail().getRealName()); // 收款人账户户名
jsonObject.put("InAcctBankName",cardEntity.getBankName()); // 收款人开户行名称
jsonObject.put("TranAmount",request.getAmount()); // 转出金额 如为XML报文,则直接输入输出以元为单位的浮点数值,如2.50 (两元五角)
jsonObject.put("UseEx","ZZZZZtestreturn"); // 资金用途 30个汉字。现金管理代理结算 非必输
jsonObject.put("UnionFlag",cardEntity.getBelongBank().equals(ComCode.PINGANBANK_OUTACCTBANK)?1:0); // 行内跨行标志 1:行内转账,0:跨行转账
jsonObject.put("SysFlag","1"); // Y:加急 N:普通S:特急默认为N
jsonObject.put("AddrFlag","1"); // 同城/异地标志 “1”—同城 “2”—异地;若无法区分,可默认送1-同城。
JSONObject result = pingAnBankService.singleTransfer(dto,jsonObject);
if(result.get("all") !=null){
String str = result.getString("all");
String reg = "[^\u4e00-\u9fa5]";
str = str.replaceAll(reg, " ");
str = str.trim();
System.out.println(str);
response.setMessage(str);
response.setStatus(ComCode.STATUS_CODE_9998);
return response;
JSONObject result = pingAnBankService.singleTransfer(dto,jsonObject);
Response response = new Response();
if(result.get("all") !=null){
String str = result.getString("all");
String reg = "[^\u4e00-\u9fa5]";
str = str.replaceAll(reg, " ");
str = str.trim();
System.out.println(str);
response.setMessage(str);
response.setStatus(ComCode.STATUS_CODE_9998);
}
// response.setMessage(str);
response.setStatus(ComCode.STATUS_CODE_2000);
return response;
}
// response.setMessage(str);
response.setStatus(ComCode.STATUS_CODE_2000);
response.setStatus(ComCode.STATUS_CODE_9998);
response.setMessage("余额不足");
return response;
}
......@@ -1110,12 +1130,10 @@ public class PayApiService {
order.setPayStatus("2");
payDao.updateOrderStatus(order);
// 添加提现记录
String benefitCode = IdGen.randomBase62(64);
BenefitEntity benefitEntity = new BenefitEntity(benefitCode, order.getUserCode(), order.getPayCode(), order.getPayChannel(), "0", "M", order.getAmount(), order.getCardCode());
// benefitEntity.setAmount(String.valueOf(Double.valueOf(benefitEntity.getAmount())));
benefitEntity.setPayMethod(orderEntity.getPayMethod());
payDao.saveBenefitInfo(benefitEntity);
BenefitEntity benefitEntity = new BenefitEntity();
benefitEntity.setOrderCode(order.getPayCode());
benefitEntity.setDelFlag("1");
payDao.deleteBenefit(benefitEntity);
}
}
......@@ -1126,4 +1144,21 @@ public class PayApiService {
}
}
public JSONObject queryForward(String payCode) throws Exception {
// 查询单笔转账
PingAnBankDto dto = new PingAnBankDto();
dto.setOrderCode(payCode);
dto.setEnterprisecode(ComCode.PINGANBANK_ENTERPRISECODE);
JSONObject jsonObject = new JSONObject();
jsonObject.put("OrigThirdVoucher",payCode); // 转账凭证号 推荐使用;使用4004接口上送的ThirdVoucher或者4014上送的SThirdVoucher
JSONObject jsonObject1 = pingAnBankService.querySingleTransfer(dto,jsonObject);
return jsonObject1;
}
}
......@@ -168,5 +168,5 @@ pinganbank.outacctname = 天津盛世互通网络科技有限公司
pinganbank.outacctbank = 307110004315
## 企业银行代码
pinganbank.b2bicurl = http://39.107.124.166:7072
pinganbank.b2bicurl = http://127.0.0.1:7072
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment