|
@@ -10,13 +10,14 @@ import com.alipay.api.request.AlipayFundTransUniTransferRequest;
|
|
import com.alipay.api.response.AlipayFundTransUniTransferResponse;
|
|
import com.alipay.api.response.AlipayFundTransUniTransferResponse;
|
|
import com.travel.model.CaSh;
|
|
import com.travel.model.CaSh;
|
|
import com.travel.model.Supplier;
|
|
import com.travel.model.Supplier;
|
|
|
|
+import com.travel.model.User;
|
|
import com.travel.model.WxWithdrawal;
|
|
import com.travel.model.WxWithdrawal;
|
|
|
|
+import com.travel.service.LoginService;
|
|
import com.travel.service.ZFBPayService;
|
|
import com.travel.service.ZFBPayService;
|
|
import com.travel.util.ParsingToken;
|
|
import com.travel.util.ParsingToken;
|
|
import com.travel.util.SnowflakeUtil;
|
|
import com.travel.util.SnowflakeUtil;
|
|
import com.travel.zfb.ZfbPayUtils;
|
|
import com.travel.zfb.ZfbPayUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
-import org.springframework.util.ClassUtils;
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
@@ -35,6 +36,8 @@ public class ZfbCashController extends ZfbPayUtils {
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private ZFBPayService zfbPayService;
|
|
private ZFBPayService zfbPayService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private LoginService loginService;
|
|
//雪花算法
|
|
//雪花算法
|
|
private SnowflakeUtil snowflakeUtil = new SnowflakeUtil(1, 1, 1);
|
|
private SnowflakeUtil snowflakeUtil = new SnowflakeUtil(1, 1, 1);
|
|
|
|
|
|
@@ -106,6 +109,75 @@ public class ZfbCashController extends ZfbPayUtils {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 支付宝提现个人用户
|
|
|
|
+ * @param caSh 参数
|
|
|
|
+ * @param request 参数
|
|
|
|
+ * @return 返回结果
|
|
|
|
+ * @throws Exception 异常
|
|
|
|
+ */
|
|
|
|
+ @RequestMapping("cashUser")
|
|
|
|
+ @ResponseBody
|
|
|
|
+ public String cashUser(CaSh caSh, HttpServletRequest request) throws AlipayApiException {
|
|
|
|
+ //获取token
|
|
|
|
+ Map<String, Object> userMap = ParsingToken.tokenParsing(request);
|
|
|
|
+ //获取用户余额
|
|
|
|
+ User user = new User().setCode((String)userMap.get("code"));
|
|
|
|
+ User user1 = loginService.getUserVal(user);
|
|
|
|
+ if(null != user1){
|
|
|
|
+ if(Double.parseDouble(caSh.getMoney()) > Double.parseDouble(user1.getBalanceOf())){
|
|
|
|
+ return "提现余额不足";
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ return "未找到该用户";
|
|
|
|
+ }
|
|
|
|
+ CertAlipayRequest alipayConfig = new CertAlipayRequest();
|
|
|
|
+ alipayConfig.setPrivateKey(MERCHANTPRIVATEKEY);
|
|
|
|
+ alipayConfig.setServerUrl(GATEWAYURL);
|
|
|
|
+ alipayConfig.setAppId(APPID);
|
|
|
|
+ alipayConfig.setCharset(CHARSET);
|
|
|
|
+ alipayConfig.setSignType(SIGNTYPE);
|
|
|
|
+ alipayConfig.setEncryptor("");
|
|
|
|
+ alipayConfig.setFormat("json");
|
|
|
|
+ alipayConfig.setCertPath("C:\\java\\csr\\appCertPublicKey_2021003148600027.crt");
|
|
|
|
+ alipayConfig.setAlipayPublicCertPath("C:\\java\\csr\\alipayCertPublicKey_RSA2.crt");
|
|
|
|
+ alipayConfig.setRootCertPath("C:\\java\\csr\\alipayRootCert.crt");
|
|
|
|
+ //获得初始化的AlipayClient
|
|
|
|
+ AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
|
|
|
|
+ //设置请求参数
|
|
|
|
+ String out_trade_no = getOrderNo();//订单号
|
|
|
|
+ String uuid = snowflakeUtil.nextId() + "";//不重复编号
|
|
|
|
+ AlipayFundTransUniTransferRequest requestVal = new AlipayFundTransUniTransferRequest();
|
|
|
|
+ AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel();
|
|
|
|
+ model.setOutBizNo(out_trade_no);//提现编号
|
|
|
|
+ model.setRemark("用户" + user1.getName() + "提现" + caSh.getMoney() + "元");//备注
|
|
|
|
+ model.setBusinessParams("{\"payer_show_name_use_alias\":\"true\"}");//是否展示付款方别名
|
|
|
|
+ model.setBizScene("DIRECT_TRANSFER");//业务场景。单笔无密转账固定为 DIRECT_TRANSFER。
|
|
|
|
+ Participant payeeInfo = new Participant();//收款方信息
|
|
|
|
+ payeeInfo.setIdentity(caSh.getIdentity());//收款账号
|
|
|
|
+ payeeInfo.setIdentityType("ALIPAY_LOGON_ID");//收款类型 ALIPAY_LOGON_ID支付宝登录账号 ALIPAY_USER_ID 支付宝会员ID
|
|
|
|
+ payeeInfo.setName(caSh.getName());//真实姓名
|
|
|
|
+ model.setPayeeInfo(payeeInfo);
|
|
|
|
+ model.setTransAmount(caSh.getMoney());//提现金额
|
|
|
|
+ model.setProductCode("TRANS_ACCOUNT_NO_PWD");//销售产品码。单笔无密转账固定为 TRANS_ACCOUNT_NO_PWD
|
|
|
|
+ model.setOrderTitle("用户" + user1.getName() + "提现" + caSh.getMoney() + "元");//转账业务的标题,用于在支付宝用户的账单里显示。
|
|
|
|
+ requestVal.setBizModel(model);
|
|
|
|
+ AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(requestVal);
|
|
|
|
+ System.out.println(response.getBody());
|
|
|
|
+ if (response.isSuccess()) {
|
|
|
|
+ WxWithdrawal wxWithdrawal = new WxWithdrawal()
|
|
|
|
+ .setUuid(uuid)
|
|
|
|
+ .setAmount(caSh.getMoney())
|
|
|
|
+ .setOutTradeNo(out_trade_no)
|
|
|
|
+ .setCode(user1.getCode());
|
|
|
|
+ zfbPayService.zfbCash(wxWithdrawal);//存入提现记录
|
|
|
|
+ zfbPayService.minusBalanceOf(wxWithdrawal);//余额 - 提现额度
|
|
|
|
+ return "提现成功";
|
|
|
|
+ } else {
|
|
|
|
+ return "提现失败请联系途丫管理员";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 生成订单号
|
|
* 生成订单号
|
|
* @return 返回结果
|
|
* @return 返回结果
|