package com.stylefeng.guns.modular.api;
|
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.stylefeng.guns.core.util.ToolUtil;
|
import com.stylefeng.guns.modular.account.controller.AppOrderController;
|
import com.stylefeng.guns.modular.account.model.TEnterpriseWithdrawal;
|
import com.stylefeng.guns.modular.account.server.ITEnterpriseWithdrawalService;
|
import com.stylefeng.guns.modular.account.server.UserWithdrawalService;
|
import com.stylefeng.guns.modular.cloudPayment.example.DepositExample;
|
import com.stylefeng.guns.modular.cloudPayment.req.DepositReq;
|
import com.stylefeng.guns.modular.enums.PaymentTypeEnum;
|
import com.stylefeng.guns.modular.system.model.Company;
|
import com.stylefeng.guns.modular.system.model.UserInfo;
|
import com.stylefeng.guns.modular.system.model.UserWithdrawal;
|
import com.stylefeng.guns.modular.system.service.ICompanyService;
|
import com.stylefeng.guns.modular.system.service.IUserInfoService;
|
import com.stylefeng.guns.modular.system.util.PayMoneyUtil;
|
import com.unionpay.upyzt.resp.DepositResp;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.PrintWriter;
|
import java.math.BigDecimal;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.Map;
|
|
|
/**
|
* 支付回调
|
*/
|
@RestController
|
@RequestMapping("/base")
|
public class UserCallbackController {
|
|
@Autowired
|
private IUserInfoService userInfoService;
|
|
@Autowired
|
private PayMoneyUtil payMoneyUtil;
|
|
|
|
@Autowired
|
private UserWithdrawalService userWithdrawalService;
|
@Autowired
|
private AppOrderController appOrderController;
|
|
|
/**
|
* 微信余额充值回调函数
|
* @param request
|
*/
|
@ResponseBody
|
@PostMapping("/wxCancelUserBalance")
|
public void wxCancelUserBalance(HttpServletRequest request, HttpServletResponse response){
|
try {
|
System.out.println("微信余额充值回调函数");
|
Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
|
String id = map.get("out_trade_no");
|
String order_id = map.get("transaction_id");
|
String uid = map.get("attach");
|
String result = map.get("result");
|
userInfoService.payCancelUserBalance(Integer.valueOf(uid), order_id, Integer.valueOf(id), 1);
|
appOrderController.createAllocationReqUser(1,Integer.valueOf(uid),1,new BigDecimal(map.get("total_fee")).divide(new BigDecimal(100)).doubleValue());
|
// cloudPay(Integer.valueOf(uid),map.get("total_fee"),map.get("transaction_id"),1);
|
PrintWriter out = response.getWriter();
|
out.write(result);
|
out.flush();
|
out.close();
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
}
|
|
|
/**
|
* 支付宝余额充值回调
|
* @param request
|
*/
|
@ResponseBody
|
@PostMapping("/aliCancelUserBalance")
|
public void aliCancelUserBalance(HttpServletRequest request, HttpServletResponse response){
|
try {
|
System.out.println("支付宝余额充值回调");
|
Map<String, String> map = payMoneyUtil.alipayCallback(request);
|
String id = map.get("out_trade_no");
|
String order_id = map.get("trade_no");
|
String uid = map.get("passback_params");
|
userInfoService.payCancelUserBalance(Integer.valueOf(uid), order_id, Integer.valueOf(id), 2);
|
appOrderController.createAllocationReqUser(1,Integer.valueOf(uid),1,new BigDecimal(map.get("total_amount")).doubleValue());
|
// cloudPay(Integer.valueOf(uid),map.get("total_amount"),map.get("trade_no"),0);
|
PrintWriter out = response.getWriter();
|
out.print("success");
|
out.flush();
|
out.close();
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
}
|
|
public void cloudPay(Integer uid,String total_fee,String transaction_id,int type) {
|
if(type==1){
|
BigDecimal divide = new BigDecimal(total_fee).divide(new BigDecimal(100));
|
total_fee=divide.toString();
|
}
|
System.out.println("回调参数:"+total_fee+"---"+transaction_id);
|
UserInfo userInfo = userInfoService.selectById(uid);
|
UserWithdrawal driverWith = userWithdrawalService.selectOne(new EntityWrapper<UserWithdrawal>()
|
.eq("phone", userInfo.getPhone())
|
.last("LIMIT 1"));
|
DepositReq depositReq = new DepositReq();
|
depositReq.setOutOrderNo(ToolUtil.getRandomString(32));
|
depositReq.setTotalAmount(new BigDecimal(total_fee).multiply(new BigDecimal(100)).intValue()); // 总金额
|
depositReq.setAmount(new BigDecimal(total_fee).multiply(new BigDecimal(100)).intValue()); // 支付金额
|
depositReq.setDiscountAmount(0); // 优惠金额
|
depositReq.setBalanceAcctId(driverWith.getBalanceAcctId());
|
depositReq.setDepositType("1");
|
depositReq.setPaymentType(PaymentTypeEnum.CUP_APP.getCode());
|
depositReq.setPaymentTradeNo(transaction_id); // 系统交易流水号
|
depositReq.setPaymentSucceededAt(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").format(new Date()));
|
depositReq.setOrderNo(transaction_id);
|
depositReq.setOrderAmount(new BigDecimal(total_fee).multiply(new BigDecimal(100)).longValue());
|
depositReq.setProductName("用户支付充值");
|
depositReq.setProductCount(1);
|
try {
|
DepositResp depositResp = DepositExample.create(depositReq);
|
System.err.println(depositResp);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
}
|
|
}
|