|
|
|
@ -8,10 +8,13 @@ import com.alipay.api.AlipayClient; |
|
|
|
import com.alipay.api.AlipayConstants; |
|
|
|
import com.alipay.api.DefaultAlipayClient; |
|
|
|
import com.alipay.api.domain.AlipayTradeAppPayModel; |
|
|
|
import com.alipay.api.domain.AlipayTradeQueryModel; |
|
|
|
import com.alipay.api.internal.util.AlipaySignature; |
|
|
|
import com.alipay.api.msg.MsgConstants; |
|
|
|
import com.alipay.api.request.AlipayTradeAppPayRequest; |
|
|
|
import com.alipay.api.request.AlipayTradeQueryRequest; |
|
|
|
import com.alipay.api.response.AlipayTradeAppPayResponse; |
|
|
|
import com.alipay.api.response.AlipayTradeQueryResponse; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.bnyer.common.core.domain.AlipayConfig; |
|
|
|
import com.bnyer.common.core.enums.EnumPayType; |
|
|
|
@ -19,6 +22,7 @@ import com.bnyer.common.core.enums.EnumTimeUnit; |
|
|
|
import com.bnyer.common.core.enums.ResponseEnum; |
|
|
|
import com.bnyer.common.core.exception.ServiceException; |
|
|
|
import com.bnyer.common.core.utils.DateUtils; |
|
|
|
import com.bnyer.common.core.utils.SpringUtils; |
|
|
|
import com.bnyer.common.core.utils.StringUtils; |
|
|
|
import com.bnyer.pay.bo.QueryOrderBo; |
|
|
|
import com.bnyer.pay.constant.AliPayConstant; |
|
|
|
@ -27,6 +31,7 @@ import com.bnyer.pay.dto.PayNotifyCheckDto; |
|
|
|
import com.bnyer.pay.bo.UnifiedOrderBo; |
|
|
|
import com.bnyer.pay.enums.EnumPayChannel; |
|
|
|
import com.bnyer.pay.enums.EnumPayConfigStatus; |
|
|
|
import com.bnyer.pay.manager.AliPayManager; |
|
|
|
import com.bnyer.pay.mapper.AlipayConfigMapper; |
|
|
|
import com.bnyer.pay.service.PayInfoService; |
|
|
|
import com.bnyer.pay.vo.ThirdInOrderVo; |
|
|
|
@ -36,6 +41,7 @@ import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Component; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
@ -49,20 +55,34 @@ import java.util.Map; |
|
|
|
@Component |
|
|
|
public class AliPayStrategy extends AbstractPayStrategy { |
|
|
|
|
|
|
|
@Resource |
|
|
|
private AlipayConfigMapper alipayConfigMapper; |
|
|
|
private static AliPayManager aliPayManager; |
|
|
|
|
|
|
|
private static PayInfoService payInfoService; |
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
private PayInfoService payInfoService; |
|
|
|
public void setUserServer(AliPayManager aliPayManager,PayInfoService payInfoService) { |
|
|
|
AliPayStrategy.aliPayManager = aliPayManager; |
|
|
|
AliPayStrategy.payInfoService = payInfoService; |
|
|
|
} |
|
|
|
|
|
|
|
// /**
|
|
|
|
// * 查询支付配置
|
|
|
|
// * @return
|
|
|
|
// */
|
|
|
|
// private AlipayConfig getAlipayConfig() {
|
|
|
|
// List<AlipayConfig> alipayConfigList = alipayConfigMapper.selectList(new LambdaQueryWrapper<AlipayConfig>().eq(AlipayConfig::getStatus, EnumPayConfigStatus.ENABLE.getCode()));
|
|
|
|
// if (CollUtil.isEmpty(alipayConfigList)){
|
|
|
|
// throw new ServiceException(ResponseEnum.PAY_CONFIG_ERROR);
|
|
|
|
// }
|
|
|
|
// AlipayConfig alipayConfig = alipayConfigList.get(0);
|
|
|
|
// return alipayConfig;
|
|
|
|
// }
|
|
|
|
|
|
|
|
@Override |
|
|
|
public ThirdInOrderVo unifiedOrder(UnifiedOrderBo bo) { |
|
|
|
log.info("支付宝支付:统一下单接口调用开始,AliPayStrategy.unifiedOrder bo:{}", JSON.toJSONString(bo)); |
|
|
|
List<AlipayConfig> alipayConfigList = alipayConfigMapper.selectList(new LambdaQueryWrapper<AlipayConfig>().eq(AlipayConfig::getStatus, EnumPayConfigStatus.ENABLE.getCode())); |
|
|
|
if (CollUtil.isEmpty(alipayConfigList)){ |
|
|
|
throw new ServiceException(ResponseEnum.PAY_CONFIG_ERROR); |
|
|
|
} |
|
|
|
AlipayConfig alipayConfig = alipayConfigList.get(0); |
|
|
|
AlipayConfig alipayConfig = aliPayManager.getAlipayConfig(); |
|
|
|
String appid = alipayConfig.getAppid(); |
|
|
|
String alipayPublicKey = alipayConfig.getAlipayPublicKey(); |
|
|
|
String appPrivateKey = alipayConfig.getAppPrivateKey(); |
|
|
|
@ -89,8 +109,9 @@ public class AliPayStrategy extends AbstractPayStrategy { |
|
|
|
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); |
|
|
|
if(response.isSuccess()){ |
|
|
|
ThirdInOrderVo vo = new ThirdInOrderVo(); |
|
|
|
vo.setOutStr(response.getBody()); |
|
|
|
vo.setAppid(appid); |
|
|
|
ThirdInOrderVo.AliThirdInOrderVo aliThirdInOrderVo = new ThirdInOrderVo.AliThirdInOrderVo(); |
|
|
|
aliThirdInOrderVo.setOutStr(response.getBody()); |
|
|
|
vo.setAliThirdInOrderVo(aliThirdInOrderVo); |
|
|
|
vo.setOutOrderNo(bo.getPayId()); |
|
|
|
return vo; |
|
|
|
}else{ |
|
|
|
@ -123,13 +144,13 @@ public class AliPayStrategy extends AbstractPayStrategy { |
|
|
|
//订单金额(元)
|
|
|
|
String totalAmount = inMap.get("total_amount"); |
|
|
|
//通过appid查询配置的密钥:用于校验签名
|
|
|
|
List<AlipayConfig> alipayConfigList = alipayConfigMapper.selectList(new LambdaQueryWrapper<AlipayConfig>() |
|
|
|
.eq(AlipayConfig::getAppid,appId).eq(AlipayConfig::getStatus, EnumPayConfigStatus.ENABLE.getCode())); |
|
|
|
if (CollUtil.isEmpty(alipayConfigList)){ |
|
|
|
log.error(ResponseEnum.PAY_CONFIG_ERROR.getMsg()); |
|
|
|
return MsgConstants.FAIL; |
|
|
|
} |
|
|
|
AlipayConfig alipayConfig = alipayConfigList.get(0); |
|
|
|
// List<AlipayConfig> alipayConfigList = alipayConfigMapper.selectList(new LambdaQueryWrapper<AlipayConfig>()
|
|
|
|
// .eq(AlipayConfig::getAppid,appId).eq(AlipayConfig::getStatus, EnumPayConfigStatus.ENABLE.getCode()));
|
|
|
|
// if (CollUtil.isEmpty(alipayConfigList)){
|
|
|
|
// log.error(ResponseEnum.PAY_CONFIG_ERROR.getMsg());
|
|
|
|
// return MsgConstants.FAIL;
|
|
|
|
// }
|
|
|
|
AlipayConfig alipayConfig = aliPayManager.getAlipayConfig(appId); |
|
|
|
//-----------------------2.签名校验---------------------------
|
|
|
|
String alipayPublicKey = alipayConfig.getAlipayPublicKey(); |
|
|
|
boolean flag = AlipaySignature.rsaCheckV1(inMap, alipayPublicKey, AlipayConstants.CHARSET_UTF8,AlipayConstants.SIGN_TYPE_RSA2); |
|
|
|
@ -172,7 +193,46 @@ public class AliPayStrategy extends AbstractPayStrategy { |
|
|
|
|
|
|
|
@Override |
|
|
|
public ThirdQueryOrderVo queryOrder(QueryOrderBo bo) { |
|
|
|
return null; |
|
|
|
AlipayConfig alipayConfig = aliPayManager.getAlipayConfig(); |
|
|
|
String appPrivateKey = alipayConfig.getAppPrivateKey(); |
|
|
|
String alipayPublicKey = alipayConfig.getAlipayPublicKey(); |
|
|
|
String signType = alipayConfig.getKeyType(); |
|
|
|
String appid = alipayConfig.getAppid(); |
|
|
|
//调用支付宝接口查询
|
|
|
|
AlipayClient alipayClient = new DefaultAlipayClient(AliPayConstant.aliUrl, appid,appPrivateKey, AlipayConstants.FORMAT_JSON, AlipayConstants.CHARSET_UTF8, alipayPublicKey, signType); |
|
|
|
//查询
|
|
|
|
AlipayTradeQueryRequest alipayTradeQueryRequest = new AlipayTradeQueryRequest(); |
|
|
|
AlipayTradeQueryModel alipayTradeQueryModel = new AlipayTradeQueryModel(); |
|
|
|
alipayTradeQueryModel.setOutTradeNo(bo.getPayId()); |
|
|
|
alipayTradeQueryRequest.setBizModel(alipayTradeQueryModel); |
|
|
|
try { |
|
|
|
//通过alipayClient调用API,获得对应的response类
|
|
|
|
AlipayTradeQueryResponse response = alipayClient.execute(alipayTradeQueryRequest); |
|
|
|
log.info("=================================="); |
|
|
|
log.info("支付宝订单查询result{}", response.getBody()); |
|
|
|
log.info("=================================="); |
|
|
|
// 签名认证了
|
|
|
|
if(response.isSuccess()){ |
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
String tradeStatus = response.getTradeStatus(); |
|
|
|
String totalAmount = response.getTotalAmount(); |
|
|
|
String payDate = sdf.format(response.getSendPayDate()); |
|
|
|
String tradeNo = response.getTradeNo(); |
|
|
|
ThirdQueryOrderVo alipayTradeQueryVo = new ThirdQueryOrderVo(); |
|
|
|
alipayTradeQueryVo.setOutOrderNo(bo.getPayId()); |
|
|
|
alipayTradeQueryVo.setPayTime(payDate); |
|
|
|
alipayTradeQueryVo.setTotalAmount(totalAmount); |
|
|
|
alipayTradeQueryVo.setThirdOrderNo(tradeNo); |
|
|
|
alipayTradeQueryVo.setPayStatus(tradeStatus); |
|
|
|
return alipayTradeQueryVo; |
|
|
|
}else { |
|
|
|
log.error("支付宝支付:订单查询异常,payId:{},error{}", bo.getPayId(),response.getSubMsg()); |
|
|
|
throw new ServiceException(ResponseEnum.ORDER_QUERY_FAILS); |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("支付宝支付:订单查询异常,payId:{},error{}", bo.getPayId(),e.getMessage()); |
|
|
|
throw new ServiceException(ResponseEnum.ORDER_QUERY_FAILS); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|