fix(payment): 修复支付宝支付相关问题
parent
d460b542ce
commit
b3340340bd
|
@ -189,7 +189,7 @@ public class AliPayController extends BaseController {
|
|||
@ApiOperation(value = "提现")
|
||||
public R<String> fetch(@Valid
|
||||
@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 {
|
||||
|
||||
SysUserPayAccount sysUserPayAccount = sysUserPayAccountService.lambdaQuery()
|
||||
|
|
|
@ -11,19 +11,18 @@ import com.alipay.api.AlipayApiException;
|
|||
import com.alipay.api.AlipayClient;
|
||||
import com.alipay.api.AlipayConfig;
|
||||
import com.alipay.api.DefaultAlipayClient;
|
||||
import com.alipay.api.domain.AlipayFundTransUniTransferModel;
|
||||
import com.alipay.api.domain.AlipayTradeQueryModel;
|
||||
import com.alipay.api.domain.Participant;
|
||||
import com.alipay.api.domain.*;
|
||||
import com.alipay.api.request.AlipayFundTransUniTransferRequest;
|
||||
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
|
||||
import com.alipay.api.request.AlipayTradePrecreateRequest;
|
||||
import com.alipay.api.request.AlipayTradeQueryRequest;
|
||||
import com.alipay.api.response.AlipayFundTransUniTransferResponse;
|
||||
import com.alipay.api.response.AlipaySystemOauthTokenResponse;
|
||||
import com.alipay.api.response.AlipayTradePrecreateResponse;
|
||||
import com.alipay.api.response.AlipayTradeQueryResponse;
|
||||
import com.alipay.easysdk.factory.Factory;
|
||||
import com.alipay.easysdk.kernel.Config;
|
||||
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.core.domain.R;
|
||||
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 lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
@ -59,6 +57,7 @@ import java.io.FileNotFoundException;
|
|||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
|
@ -157,16 +156,17 @@ public class AliPayServiceImpl implements AliPayService {
|
|||
orderTradeService.save(tradeEntity);
|
||||
|
||||
//调用支付宝的接口
|
||||
AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
||||
.preCreate(memberLevel.getMemberName(),
|
||||
tradeEntity.getCode(),
|
||||
orderTradeDto.getAmount().toString());
|
||||
// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
||||
// .preCreate(memberLevel.getMemberName(),
|
||||
// tradeEntity.getCode(),
|
||||
// orderTradeDto.getAmount().toString());
|
||||
AlipayTradePrecreateResponse payResponse = getAlipayTradePrecreateResponse(tradeEntity);
|
||||
// 缓存到redis
|
||||
if (Objects.nonNull(orderTradeDto.getPromotionId())) {
|
||||
redisCache.setCacheObject(tradeEntity.getCode() + "_promotionId", orderTradeDto.getPromotionId(), 15, TimeUnit.MINUTES);
|
||||
}
|
||||
//参照官方文档响应示例,解析返回结果
|
||||
String httpBodyStr = payResponse.getHttpBody();
|
||||
String httpBodyStr = payResponse.getBody();
|
||||
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
||||
|
||||
PayVo payVo = new PayVo();
|
||||
|
@ -197,12 +197,13 @@ public class AliPayServiceImpl implements AliPayService {
|
|||
tradeEntity.setPayStatus(1);
|
||||
orderTradeService.save(tradeEntity);
|
||||
//调用支付宝的接口
|
||||
AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
||||
.preCreate(tradeEntity.getProductName(),
|
||||
tradeEntity.getCode(),
|
||||
paymentAmount.toString());
|
||||
// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
||||
// .preCreate(tradeEntity.getProductName(),
|
||||
// tradeEntity.getCode(),
|
||||
// paymentAmount.toString());
|
||||
AlipayTradePrecreateResponse payResponse = getAlipayTradePrecreateResponse(tradeEntity);
|
||||
//参照官方文档响应示例,解析返回结果
|
||||
String httpBodyStr = payResponse.getHttpBody();
|
||||
String httpBodyStr = payResponse.getBody();
|
||||
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
||||
|
||||
String url = jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
|
||||
|
@ -235,12 +236,14 @@ public class AliPayServiceImpl implements AliPayService {
|
|||
tradeEntity.setPayStatus(1);
|
||||
orderTradeService.save(tradeEntity);
|
||||
//调用支付宝的接口
|
||||
AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
||||
.preCreate(tradeEntity.getProductName(),
|
||||
tradeEntity.getCode(),
|
||||
paymentAmount.toString());
|
||||
// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
||||
// .preCreate(tradeEntity.getProductName(),
|
||||
// tradeEntity.getCode(),
|
||||
// paymentAmount.toString());
|
||||
AlipayTradePrecreateResponse payResponse = getAlipayTradePrecreateResponse(tradeEntity);
|
||||
|
||||
//参照官方文档响应示例,解析返回结果
|
||||
String httpBodyStr = payResponse.getHttpBody();
|
||||
String httpBodyStr = payResponse.getBody();
|
||||
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
||||
|
||||
String url = jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
|
||||
|
@ -557,6 +560,33 @@ public class AliPayServiceImpl implements AliPayService {
|
|||
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 {
|
||||
|
||||
AlipayConfig config = new AlipayConfig();
|
||||
|
|
Loading…
Reference in New Issue