fix(payment): 修复支付宝支付相关问题
parent
d460b542ce
commit
b3340340bd
|
@ -189,7 +189,7 @@ public class AliPayController extends BaseController {
|
||||||
@ApiOperation(value = "提现")
|
@ApiOperation(value = "提现")
|
||||||
public R<String> fetch(@Valid
|
public R<String> fetch(@Valid
|
||||||
@NotNull(message = "提现金额不能为空")
|
@NotNull(message = "提现金额不能为空")
|
||||||
@Pattern(regexp = "^(0|(?!0\\d)[1-9]\\d*)(\\.\\d{2})?$", message = "金额格式错误(必须保留两位小数)")
|
@Pattern(regexp = "^(0|(?!0\\d)[1-9]\\d*)(\\.\\d{1,2})?$", message = "金额格式错误(必须保留两位小数)")
|
||||||
String amount) throws Exception {
|
String amount) throws Exception {
|
||||||
|
|
||||||
SysUserPayAccount sysUserPayAccount = sysUserPayAccountService.lambdaQuery()
|
SysUserPayAccount sysUserPayAccount = sysUserPayAccountService.lambdaQuery()
|
||||||
|
|
|
@ -11,19 +11,18 @@ import com.alipay.api.AlipayApiException;
|
||||||
import com.alipay.api.AlipayClient;
|
import com.alipay.api.AlipayClient;
|
||||||
import com.alipay.api.AlipayConfig;
|
import com.alipay.api.AlipayConfig;
|
||||||
import com.alipay.api.DefaultAlipayClient;
|
import com.alipay.api.DefaultAlipayClient;
|
||||||
import com.alipay.api.domain.AlipayFundTransUniTransferModel;
|
import com.alipay.api.domain.*;
|
||||||
import com.alipay.api.domain.AlipayTradeQueryModel;
|
|
||||||
import com.alipay.api.domain.Participant;
|
|
||||||
import com.alipay.api.request.AlipayFundTransUniTransferRequest;
|
import com.alipay.api.request.AlipayFundTransUniTransferRequest;
|
||||||
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
|
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
|
||||||
|
import com.alipay.api.request.AlipayTradePrecreateRequest;
|
||||||
import com.alipay.api.request.AlipayTradeQueryRequest;
|
import com.alipay.api.request.AlipayTradeQueryRequest;
|
||||||
import com.alipay.api.response.AlipayFundTransUniTransferResponse;
|
import com.alipay.api.response.AlipayFundTransUniTransferResponse;
|
||||||
import com.alipay.api.response.AlipaySystemOauthTokenResponse;
|
import com.alipay.api.response.AlipaySystemOauthTokenResponse;
|
||||||
|
import com.alipay.api.response.AlipayTradePrecreateResponse;
|
||||||
import com.alipay.api.response.AlipayTradeQueryResponse;
|
import com.alipay.api.response.AlipayTradeQueryResponse;
|
||||||
import com.alipay.easysdk.factory.Factory;
|
import com.alipay.easysdk.factory.Factory;
|
||||||
import com.alipay.easysdk.kernel.Config;
|
import com.alipay.easysdk.kernel.Config;
|
||||||
import com.alipay.easysdk.payment.common.models.AlipayTradeCancelResponse;
|
import com.alipay.easysdk.payment.common.models.AlipayTradeCancelResponse;
|
||||||
import com.alipay.easysdk.payment.facetoface.models.AlipayTradePrecreateResponse;
|
|
||||||
import com.mcwl.common.constant.HttpStatus;
|
import com.mcwl.common.constant.HttpStatus;
|
||||||
import com.mcwl.common.core.domain.R;
|
import com.mcwl.common.core.domain.R;
|
||||||
import com.mcwl.common.core.domain.entity.SysUser;
|
import com.mcwl.common.core.domain.entity.SysUser;
|
||||||
|
@ -50,7 +49,6 @@ import com.mcwl.system.service.ISysUserPayAccountService;
|
||||||
import com.mcwl.system.service.ISysUserService;
|
import com.mcwl.system.service.ISysUserService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
@ -59,6 +57,7 @@ import java.io.FileNotFoundException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -157,16 +156,17 @@ public class AliPayServiceImpl implements AliPayService {
|
||||||
orderTradeService.save(tradeEntity);
|
orderTradeService.save(tradeEntity);
|
||||||
|
|
||||||
//调用支付宝的接口
|
//调用支付宝的接口
|
||||||
AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
||||||
.preCreate(memberLevel.getMemberName(),
|
// .preCreate(memberLevel.getMemberName(),
|
||||||
tradeEntity.getCode(),
|
// tradeEntity.getCode(),
|
||||||
orderTradeDto.getAmount().toString());
|
// orderTradeDto.getAmount().toString());
|
||||||
|
AlipayTradePrecreateResponse payResponse = getAlipayTradePrecreateResponse(tradeEntity);
|
||||||
// 缓存到redis
|
// 缓存到redis
|
||||||
if (Objects.nonNull(orderTradeDto.getPromotionId())) {
|
if (Objects.nonNull(orderTradeDto.getPromotionId())) {
|
||||||
redisCache.setCacheObject(tradeEntity.getCode() + "_promotionId", orderTradeDto.getPromotionId(), 15, TimeUnit.MINUTES);
|
redisCache.setCacheObject(tradeEntity.getCode() + "_promotionId", orderTradeDto.getPromotionId(), 15, TimeUnit.MINUTES);
|
||||||
}
|
}
|
||||||
//参照官方文档响应示例,解析返回结果
|
//参照官方文档响应示例,解析返回结果
|
||||||
String httpBodyStr = payResponse.getHttpBody();
|
String httpBodyStr = payResponse.getBody();
|
||||||
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
||||||
|
|
||||||
PayVo payVo = new PayVo();
|
PayVo payVo = new PayVo();
|
||||||
|
@ -197,12 +197,13 @@ public class AliPayServiceImpl implements AliPayService {
|
||||||
tradeEntity.setPayStatus(1);
|
tradeEntity.setPayStatus(1);
|
||||||
orderTradeService.save(tradeEntity);
|
orderTradeService.save(tradeEntity);
|
||||||
//调用支付宝的接口
|
//调用支付宝的接口
|
||||||
AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
||||||
.preCreate(tradeEntity.getProductName(),
|
// .preCreate(tradeEntity.getProductName(),
|
||||||
tradeEntity.getCode(),
|
// tradeEntity.getCode(),
|
||||||
paymentAmount.toString());
|
// paymentAmount.toString());
|
||||||
|
AlipayTradePrecreateResponse payResponse = getAlipayTradePrecreateResponse(tradeEntity);
|
||||||
//参照官方文档响应示例,解析返回结果
|
//参照官方文档响应示例,解析返回结果
|
||||||
String httpBodyStr = payResponse.getHttpBody();
|
String httpBodyStr = payResponse.getBody();
|
||||||
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
||||||
|
|
||||||
String url = jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
|
String url = jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
|
||||||
|
@ -235,12 +236,14 @@ public class AliPayServiceImpl implements AliPayService {
|
||||||
tradeEntity.setPayStatus(1);
|
tradeEntity.setPayStatus(1);
|
||||||
orderTradeService.save(tradeEntity);
|
orderTradeService.save(tradeEntity);
|
||||||
//调用支付宝的接口
|
//调用支付宝的接口
|
||||||
AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
||||||
.preCreate(tradeEntity.getProductName(),
|
// .preCreate(tradeEntity.getProductName(),
|
||||||
tradeEntity.getCode(),
|
// tradeEntity.getCode(),
|
||||||
paymentAmount.toString());
|
// paymentAmount.toString());
|
||||||
|
AlipayTradePrecreateResponse payResponse = getAlipayTradePrecreateResponse(tradeEntity);
|
||||||
|
|
||||||
//参照官方文档响应示例,解析返回结果
|
//参照官方文档响应示例,解析返回结果
|
||||||
String httpBodyStr = payResponse.getHttpBody();
|
String httpBodyStr = payResponse.getBody();
|
||||||
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
||||||
|
|
||||||
String url = jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
|
String url = jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
|
||||||
|
@ -557,6 +560,33 @@ public class AliPayServiceImpl implements AliPayService {
|
||||||
sysUserPayAccountLogService.save(sysUserPayAccountLog);
|
sysUserPayAccountLogService.save(sysUserPayAccountLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AlipayTradePrecreateResponse getAlipayTradePrecreateResponse(OrderTrade tradeEntity) throws Exception {
|
||||||
|
// 初始化SDK
|
||||||
|
AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
|
||||||
|
|
||||||
|
// 构造请求参数以调用接口
|
||||||
|
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
|
||||||
|
AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();
|
||||||
|
|
||||||
|
// 设置商户订单号
|
||||||
|
model.setOutTradeNo(tradeEntity.getCode());
|
||||||
|
|
||||||
|
// 设置订单总金额
|
||||||
|
model.setTotalAmount(tradeEntity.getTotalAmount().toString());
|
||||||
|
|
||||||
|
// 设置订单标题
|
||||||
|
model.setSubject(tradeEntity.getProductName());
|
||||||
|
|
||||||
|
// 设置产品码
|
||||||
|
model.setProductCode("QR_CODE_OFFLINE");
|
||||||
|
|
||||||
|
request.setBizModel(model);
|
||||||
|
// 第三方代调用模式下请设置app_auth_token
|
||||||
|
// request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
|
||||||
|
|
||||||
|
return alipayClient.certificateExecute(request);
|
||||||
|
}
|
||||||
|
|
||||||
public AlipayConfig getAlipayConfig() throws FileNotFoundException {
|
public AlipayConfig getAlipayConfig() throws FileNotFoundException {
|
||||||
|
|
||||||
AlipayConfig config = new AlipayConfig();
|
AlipayConfig config = new AlipayConfig();
|
||||||
|
|
Loading…
Reference in New Issue