diff --git a/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/factory/RemoteWxMiniFallbackFactory.java b/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/factory/RemoteWxMiniFallbackFactory.java index 968ed80..3196423 100644 --- a/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/factory/RemoteWxMiniFallbackFactory.java +++ b/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/factory/RemoteWxMiniFallbackFactory.java @@ -3,7 +3,7 @@ package com.bnyer.img.api.factory; import com.bnyer.common.core.domain.R; import com.bnyer.img.api.dto.QueryUserVipDto; import com.bnyer.img.api.remote.RemoteWxMiniService; -import com.bnyer.img.api.vo.UserVipVo; +import com.bnyer.img.api.vo.UserVipInfoVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -27,7 +27,7 @@ public class RemoteWxMiniFallbackFactory implements FallbackFactory> queryUserVipList(QueryUserVipDto dto) { + public R> queryUserVipList(QueryUserVipDto dto) { return R.fail("获取会员信息失败:+"+throwable.getMessage()); } diff --git a/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/remote/RemoteWxMiniService.java b/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/remote/RemoteWxMiniService.java index b3a41cc..578a966 100644 --- a/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/remote/RemoteWxMiniService.java +++ b/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/remote/RemoteWxMiniService.java @@ -4,7 +4,7 @@ import com.bnyer.common.core.constant.ServiceNameConstants; import com.bnyer.common.core.domain.R; import com.bnyer.img.api.dto.QueryUserVipDto; import com.bnyer.img.api.factory.RemoteWxMiniFallbackFactory; -import com.bnyer.img.api.vo.UserVipVo; +import com.bnyer.img.api.vo.UserVipInfoVo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -23,5 +23,5 @@ public interface RemoteWxMiniService { * @return */ @PostMapping(value = "/img/mini/fh/queryUserVipList") - R> queryUserVipList(@RequestBody QueryUserVipDto dto); + R> queryUserVipList(@RequestBody QueryUserVipDto dto); } diff --git a/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/vo/UserVipVo.java b/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/vo/UserVipInfoVo.java similarity index 96% rename from bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/vo/UserVipVo.java rename to bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/vo/UserVipInfoVo.java index 67db1df..dad6916 100644 --- a/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/vo/UserVipVo.java +++ b/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/vo/UserVipInfoVo.java @@ -12,7 +12,7 @@ import java.math.BigDecimal; @Getter @Setter @ApiModel("会员vip响应类") -public class UserVipVo implements Serializable { +public class UserVipInfoVo implements Serializable { @ApiModelProperty(value="主键Id") private Long id; diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java index 196dcd0..64ef74d 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java @@ -16,7 +16,7 @@ import com.bnyer.common.rocketmq.config.RocketMqConstant; import com.bnyer.common.security.utils.SecurityUtils; import com.bnyer.img.api.dto.QueryUserVipDto; import com.bnyer.img.api.remote.RemoteWxMiniService; -import com.bnyer.img.api.vo.UserVipVo; +import com.bnyer.img.api.vo.UserVipInfoVo; import com.bnyer.order.dto.AddVipOrderDto; import com.bnyer.order.dto.QueryVipOrderDto; import com.bnyer.order.enums.EnumVipOrderStatus; @@ -29,7 +29,6 @@ import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.support.GenericMessage; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.Date; @@ -100,21 +99,21 @@ public class VipOrderServiceImpl extends ServiceImpl i //查询会员信息 QueryUserVipDto queryUserVipDto = new QueryUserVipDto(); queryUserVipDto.setId(addVipOrderDto.getVipId()); - R> userVipVoListResult = remoteWxMiniService.queryUserVipList(queryUserVipDto); + R> userVipVoListResult = remoteWxMiniService.queryUserVipList(queryUserVipDto); if (!userVipVoListResult.isSuccess()){ log.error("内部接口调用异常:url:{}request{},result{},error:{}","queryUserVipList", JSON.toJSONString(queryUserVipDto),JSON.toJSONString(userVipVoListResult),userVipVoListResult.getMsg()); throw new ServiceException(userVipVoListResult.getMsg()); } - List userVipVoList = userVipVoListResult.getData(); - if (CollUtil.isEmpty(userVipVoList)){ + List userVipInfoVoList = userVipVoListResult.getData(); + if (CollUtil.isEmpty(userVipInfoVoList)){ throw new ServiceException(ResponseEnum.NOT_EXIST,"会员信息"); } - UserVipVo userVipVo = userVipVoList.get(0); + UserVipInfoVo userVipInfoVo = userVipInfoVoList.get(0); VipOrder vipOrder = null; - EnumVipType enumVipType = EnumVipType.getVipTypeByCode(userVipVo.getVipTypeCode()); + EnumVipType enumVipType = EnumVipType.getVipTypeByCode(userVipInfoVo.getVipTypeCode()); switch (enumVipType){ case IMG_VIP: - vipOrder = buildImgVipOrder(userVipVo,addVipOrderDto); + vipOrder = buildImgVipOrder(userVipInfoVo,addVipOrderDto); break; case VIDEO_VIP: break; @@ -128,26 +127,26 @@ public class VipOrderServiceImpl extends ServiceImpl i /** * 构建下图会员订单 - * @param userVipVo + * @param userVipInfoVo * @param addVipOrderDto * @return */ - private VipOrder buildImgVipOrder(UserVipVo userVipVo, AddVipOrderDto addVipOrderDto) { + private VipOrder buildImgVipOrder(UserVipInfoVo userVipInfoVo, AddVipOrderDto addVipOrderDto) { Long userId = SecurityUtils.getUserId(); - VipOrder vipOrder = EntityConvertUtil.copy(userVipVo, VipOrder.class); + VipOrder vipOrder = EntityConvertUtil.copy(userVipInfoVo, VipOrder.class); vipOrder.setPhone(addVipOrderDto.getPhone()); vipOrder.setVipId(addVipOrderDto.getVipId()); - vipOrder.setVipName(userVipVo.getVipName()); - vipOrder.setVipTypeName(userVipVo.getVipTypeName()); - vipOrder.setPayAmount(userVipVo.getPrice()); - vipOrder.setVipTypeName(userVipVo.getVipTypeName()); + vipOrder.setVipName(userVipInfoVo.getVipName()); + vipOrder.setVipTypeName(userVipInfoVo.getVipTypeName()); + vipOrder.setPayAmount(userVipInfoVo.getPrice()); + vipOrder.setVipTypeName(userVipInfoVo.getVipTypeName()); vipOrder.setUserId(userId); // vipOrder.setIsDelay("0"); Date nowDate = new Date(); vipOrder.setStartTime(nowDate); - EnumTimeUnit enumTimeUnitByUnit = EnumTimeUnit.getEnumTimeUnitByUnit(userVipVo.getValidTimeUnit()); + EnumTimeUnit enumTimeUnitByUnit = EnumTimeUnit.getEnumTimeUnitByUnit(userVipInfoVo.getValidTimeUnit()); //计算会员结束时间 - vipOrder.setEndTime(DateUtils.getDateByType(enumTimeUnitByUnit,nowDate,userVipVo.getValidTimeNum())); + vipOrder.setEndTime(DateUtils.getDateByType(enumTimeUnitByUnit,nowDate, userVipInfoVo.getValidTimeNum())); //开通的天数 vipOrder.setDays((int) DateUtil.betweenDay(vipOrder.getStartTime(), vipOrder.getEndTime(), true)); vipOrder.setUserClientType(addVipOrderDto.getUserClientType()); diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/constant/AliPayConstant.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/constant/AliPayConstant.java index 6564ed2..8b10c79 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/constant/AliPayConstant.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/constant/AliPayConstant.java @@ -15,5 +15,10 @@ public class AliPayConstant { /*** * 接口地址 */ - public static final String aliUrl = "https://openapi.alipay.com/gateway.do"; +// public static final String aliUrl = "https://openapi.alipay.com/gateway.do"; + + /** + * 沙箱地址 + */ + public static final String aliUrl = "https://openapi.alipaydev.com/gateway.do"; } diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/controller/UnifiedPayController.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/controller/UnifiedPayController.java index 344527d..512d799 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/controller/UnifiedPayController.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/controller/UnifiedPayController.java @@ -4,6 +4,7 @@ import com.bnyer.common.core.domain.R; import com.bnyer.pay.dto.InOrderDto; import com.bnyer.pay.dto.QueryOrderDto; import com.bnyer.pay.service.UnifiedPayService; +import com.bnyer.pay.vo.InOrderVo; import com.bnyer.pay.vo.QueryOrderVo; import com.bnyer.pay.vo.ThirdInOrderVo; import io.swagger.annotations.Api; @@ -34,9 +35,9 @@ public class UnifiedPayController { @PostMapping("/inOrder") @Operation(summary = "统一下单,并生成支付订单" , description = "生成支付订单,返回前端支付所需参数") - public R inOrder(@Valid @RequestBody InOrderDto dto, HttpServletRequest request){ - ThirdInOrderVo thirdInOrderVo = unifiedPayService.inOrder(dto,request); - return R.ok(thirdInOrderVo); + public R inOrder(@Valid @RequestBody InOrderDto dto, HttpServletRequest request){ + InOrderVo inOrderVo = unifiedPayService.inOrder(dto,request); + return R.ok(inOrderVo); } @PostMapping("/queryOrder") diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AliPayStrategy.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AliPayStrategy.java index cc23c8f..2e9f86f 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AliPayStrategy.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AliPayStrategy.java @@ -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 alipayConfigList = alipayConfigMapper.selectList(new LambdaQueryWrapper().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 alipayConfigList = alipayConfigMapper.selectList(new LambdaQueryWrapper().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 alipayConfigList = alipayConfigMapper.selectList(new LambdaQueryWrapper() - .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 alipayConfigList = alipayConfigMapper.selectList(new LambdaQueryWrapper() +// .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); + } } diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java index a57bf39..1e043db 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java @@ -93,7 +93,7 @@ public class DYPayStrategy extends AbstractPayStrategy{ //订单过期时间(秒) 5min-2day params.put("valid_time", 1800); //开发者自定义字段,回调原样回传。超过最大长度会被截断 - params.put("cp_extra", "xx平台充值"); +// params.put("cp_extra", "xx平台充值"); //通知地址 params.put("notify_url", backurl); //签名,详见https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/ecpay/TE @@ -142,10 +142,12 @@ public class DYPayStrategy extends AbstractPayStrategy{ } //保存预下单信息 ThirdInOrderVo thirdInOrderVo = new ThirdInOrderVo(); - //把order_no和order_info_token返回前端用于调起收银台 + ThirdInOrderVo.DyThirdInOrderVo dyThirdInOrderVo = new ThirdInOrderVo.DyThirdInOrderVo(); thirdInOrderVo.setOutOrderNo(bo.getPayId()); - thirdInOrderVo.setThirdOrderNo(orderId); - thirdInOrderVo.setOrderToken(orderToken); + //把order_no和order_info_token返回前端用于调起收银台 + dyThirdInOrderVo.setOrderId(orderId); + dyThirdInOrderVo.setOrderToken(orderToken); + thirdInOrderVo.setDyThirdInOrderVo(dyThirdInOrderVo); return thirdInOrderVo; } diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java index 451444b..3165f95 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java @@ -147,10 +147,12 @@ public class KSPayStrategy extends AbstractPayStrategy{ } //保存预下单信息 ThirdInOrderVo thirdInOrderVo = new ThirdInOrderVo(); - //把order_no和order_info_token返回前端用于调起收银台 + ThirdInOrderVo.KsThirdInOrderVo ksThirdInOrderVo = new ThirdInOrderVo.KsThirdInOrderVo(); thirdInOrderVo.setOutOrderNo(bo.getPayId()); - thirdInOrderVo.setThirdOrderNo(orderNo); - thirdInOrderVo.setOrderToken(orderToken); + //把order_no和order_info_token返回前端用于调起收银台 + ksThirdInOrderVo.setOrderNo(orderNo); + ksThirdInOrderVo.setOrderToken(orderToken); + thirdInOrderVo.setKsThirdInOrderVo(ksThirdInOrderVo); return thirdInOrderVo; } diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java index 7ff1800..341b242 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java @@ -8,24 +8,26 @@ import com.bnyer.common.core.enums.ResponseEnum; import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.core.utils.StringUtils; import com.bnyer.pay.bo.QueryOrderBo; +import com.bnyer.pay.bo.UnifiedOrderBo; import com.bnyer.pay.dto.EditPayInfoNotifyDto; import com.bnyer.pay.dto.PayNotifyCheckDto; -import com.bnyer.pay.bo.UnifiedOrderBo; import com.bnyer.pay.enums.EnumPayChannel; import com.bnyer.pay.enums.EnumTradeType; +import com.bnyer.pay.enums.EnumWxPayStatus; import com.bnyer.pay.manager.WxPayManager; import com.bnyer.pay.service.PayInfoService; import com.bnyer.pay.utils.WXPayUtil; import com.bnyer.pay.vo.ThirdInOrderVo; import com.bnyer.pay.vo.ThirdQueryOrderVo; import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse; -import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; +import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyV3Result; import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; import com.github.binarywang.wxpay.bean.request.WxPayOrderQueryRequest; -import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; +import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderV3Request; import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult; -import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderResult; +import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderV3Result; +import com.github.binarywang.wxpay.bean.result.enums.TradeTypeEnum; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.service.WxPayService; import lombok.extern.slf4j.Slf4j; @@ -76,28 +78,27 @@ public class WxPayStrategy extends AbstractPayStrategy { WxPayService wxPayService = wxPayManager.getWxPayService(wxPayConfig); String openId = SecurityContextHolder.getWechatOpenId(); try { - WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest(); - orderRequest.setOpenid(openId); + WxPayUnifiedOrderV3Request orderRequest = new WxPayUnifiedOrderV3Request(); + WxPayUnifiedOrderV3Request.Payer payer = new WxPayUnifiedOrderV3Request.Payer(); + payer.setOpenid(openId); + orderRequest.setPayer(payer); + orderRequest.setDescription(bo.getGoodsDesc()); orderRequest.setOutTradeNo(bo.getPayId()); - orderRequest.setBody(bo.getGoodsDesc()); - orderRequest.setSpbillCreateIp(bo.getIp()); - orderRequest.setTotalFee(BaseWxPayRequest.yuanToFen(bo.getPayAmount())); + WxPayUnifiedOrderV3Request.Amount amount = new WxPayUnifiedOrderV3Request.Amount(); + amount.setTotal(BaseWxPayRequest.yuanToFen(bo.getPayAmount())); + orderRequest.setAmount(amount); //调用微信支付接口 - WxPayUnifiedOrderResult wxPayUnifiedOrderResult = wxPayService.unifiedOrder(orderRequest); - String timestamp = String.valueOf(bo.getCurrDate().getTime()); - if (timestamp.length() > 10) { - timestamp = timestamp.substring(0, 10); - } + WxPayUnifiedOrderV3Result wxPayUnifiedOrderV3Result = wxPayService.createOrderV3(TradeTypeEnum.JSAPI, orderRequest); + WxPayUnifiedOrderV3Result.JsapiResult jsapiResult = wxPayUnifiedOrderV3Result.getPayInfo(TradeTypeEnum.JSAPI, wxPayConfig.getAppid(), wxPayConfig.getMchid(), wxPayService.getConfig().getPrivateKey()); //返回数据 ThirdInOrderVo thirdInOrderVo = new ThirdInOrderVo(); + ThirdInOrderVo.WxThirdInOrderVo wxThirdInOrderVo = new ThirdInOrderVo.WxThirdInOrderVo(); + wxThirdInOrderVo.setPackageValue(jsapiResult.getPackageValue()); + wxThirdInOrderVo.setTimeStamp(jsapiResult.getTimeStamp()); + wxThirdInOrderVo.setNonceStr(jsapiResult.getNonceStr()); + wxThirdInOrderVo.setPaySign(jsapiResult.getPaySign()); thirdInOrderVo.setOutOrderNo(bo.getPayId()); - thirdInOrderVo.setAppid(wxPayConfig.getAppid()); - thirdInOrderVo.setMchid(wxPayConfig.getMchid()); - thirdInOrderVo.setPrepayid(wxPayUnifiedOrderResult.getPrepayId()); - thirdInOrderVo.setNoncestr(wxPayUnifiedOrderResult.getNonceStr()); - thirdInOrderVo.setTimestamp(timestamp); - thirdInOrderVo.setSign(wxPayUnifiedOrderResult.getSign()); - thirdInOrderVo.setTradeType(wxPayUnifiedOrderResult.getTradeType()); + thirdInOrderVo.setAppId(jsapiResult.getAppId()); return thirdInOrderVo; } catch (WxPayException e) { log.error("微信支付:统一下单接口调用失败,payId:{},error{}", bo.getPayId(), e.getMessage()); @@ -125,7 +126,8 @@ public class WxPayStrategy extends AbstractPayStrategy { WxPayService wxPayService = wxPayManager.getWxPayService(wxpayConfig); try { //解析支付结果通知 - WxPayOrderNotifyResult result = wxPayService.parseOrderNotifyResult(params); + WxPayOrderNotifyV3Result wxPayOrderNotifyV3Result = wxPayService.parseOrderNotifyV3Result(params, null); + WxPayOrderNotifyV3Result.DecryptNotifyResult result = wxPayOrderNotifyV3Result.getResult(); //appid String appid = result.getAppid(); //支付订单号 @@ -133,10 +135,14 @@ public class WxPayStrategy extends AbstractPayStrategy { //微信支付流水号 String transactionId = result.getTransactionId(); //支付金额 - String fenToYuan = BaseWxPayResult.fenToYuan(result.getTotalFee()); + String fenToYuan = BaseWxPayResult.fenToYuan(result.getAmount().getPayerTotal()); //支付时间 - String timeEnd = result.getTimeEnd(); - + String timeEnd = result.getSuccessTime(); + //支付状态 + String tradeState = result.getTradeState(); + if (!EnumWxPayStatus.SUCCESS.getStatus().equals(tradeState)){ + return super.buildNotifyCheckResultMsg(EnumPayType.WX_PAY,false,"交易失败"); + } //校验是否已支付避免重复调用 PayNotifyCheckDto payNotifyCheckDto = new PayNotifyCheckDto(); payNotifyCheckDto.setPayType(EnumPayType.WX_PAY); diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/InOrderDto.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/InOrderDto.java index 0ece4c0..4691d0c 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/InOrderDto.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/InOrderDto.java @@ -7,6 +7,7 @@ import lombok.NoArgsConstructor; import lombok.Setter; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; /** * @author :WXC @@ -22,7 +23,7 @@ public class InOrderDto { @ApiModelProperty(value="业务主订单号:关联内部业务订单表",required = true) private String orderNo; - @NotBlank(message = "支付场景不能为空") + @NotNull(message = "支付场景不能为空") @ApiModelProperty(value="支付场景:1.会员充值",required = true) private Integer sceneCode; diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/enums/EnumAliPayStatus.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/enums/EnumAliPayStatus.java new file mode 100644 index 0000000..b5e931d --- /dev/null +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/enums/EnumAliPayStatus.java @@ -0,0 +1,37 @@ +package com.bnyer.pay.enums; + +import com.bnyer.common.core.enums.EnumPayStatus; +import com.bnyer.common.core.exception.ServiceException; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Objects; + +/** + * @author :WXC + * @Date :2023/05/05 + * @description : + */ +@Getter +@AllArgsConstructor +public enum EnumAliPayStatus { + + WAIT_BUYER_PAY("WAIT_BUYER_PAY",EnumPayStatus.NO_PAY), + TRADE_SUCCESS("TRADE_SUCCESS",EnumPayStatus.SUCCESS), + TRADE_FINISHED("TRADE_FINISHED",EnumPayStatus.SUCCESS), + TRADE_CLOSED("TRADE_CLOSED",EnumPayStatus.FAILS), + ; + private final String status; + + private final EnumPayStatus enumPayStatus; + + public static EnumPayStatus getEnumPayStatusByStatus(String status) { + for (EnumAliPayStatus s : EnumAliPayStatus.values()) { + if (Objects.equals(status, s.getStatus())) { + return s.getEnumPayStatus(); + } + } + throw new ServiceException("status 未匹配上对应的支付状态"); + } + +} diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/manager/AliPayManager.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/manager/AliPayManager.java new file mode 100644 index 0000000..7b02ff9 --- /dev/null +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/manager/AliPayManager.java @@ -0,0 +1,55 @@ +package com.bnyer.pay.manager; + +import cn.hutool.core.collection.CollUtil; +import com.alipay.api.msg.MsgConstants; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.bnyer.common.core.domain.AlipayConfig; +import com.bnyer.common.core.enums.ResponseEnum; +import com.bnyer.common.core.exception.ServiceException; +import com.bnyer.common.core.utils.SpringUtils; +import com.bnyer.pay.enums.EnumPayConfigStatus; +import com.bnyer.pay.mapper.AlipayConfigMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author :WXC + * @Date :2023/05/06 + * @description : + */ +@Slf4j +@Component +public class AliPayManager { + + @Resource + private AlipayConfigMapper alipayConfigMapper; + /** + * 查询支付配置 + * @return + */ + public AlipayConfig getAlipayConfig() { + List alipayConfigList = alipayConfigMapper.selectList(new LambdaQueryWrapper().eq(AlipayConfig::getStatus, EnumPayConfigStatus.ENABLE.getCode())); + if (CollUtil.isEmpty(alipayConfigList)){ + throw new ServiceException(ResponseEnum.PAY_CONFIG_ERROR); + } + AlipayConfig alipayConfig = alipayConfigList.get(0); + return alipayConfig; + } + + /** + * 查询支付配置 + * @return + */ + public AlipayConfig getAlipayConfig(String appId){ + List alipayConfigList = alipayConfigMapper.selectList(new LambdaQueryWrapper() + .eq(AlipayConfig::getAppid,appId).eq(AlipayConfig::getStatus, EnumPayConfigStatus.ENABLE.getCode())); + if (CollUtil.isEmpty(alipayConfigList)){ + throw new ServiceException(ResponseEnum.PAY_CONFIG_ERROR); + } + return alipayConfigList.get(0); + } + +} diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/UnifiedPayService.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/UnifiedPayService.java index 1f71ea2..1e807f2 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/UnifiedPayService.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/UnifiedPayService.java @@ -2,8 +2,8 @@ package com.bnyer.pay.service; import com.bnyer.pay.dto.InOrderDto; import com.bnyer.pay.dto.QueryOrderDto; +import com.bnyer.pay.vo.InOrderVo; import com.bnyer.pay.vo.QueryOrderVo; -import com.bnyer.pay.vo.ThirdInOrderVo; import javax.servlet.http.HttpServletRequest; @@ -20,7 +20,7 @@ public interface UnifiedPayService { * @param request * @return */ - ThirdInOrderVo inOrder(InOrderDto dto, HttpServletRequest request); + InOrderVo inOrder(InOrderDto dto, HttpServletRequest request); /** * 统一订单查询 diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java index 8c27ef4..bd0096c 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java @@ -20,15 +20,13 @@ import com.bnyer.pay.design.strategy.IPayStrategy; import com.bnyer.pay.dto.AddPayInfoDto; import com.bnyer.pay.dto.InOrderDto; import com.bnyer.pay.dto.QueryOrderDto; +import com.bnyer.pay.enums.EnumAliPayStatus; import com.bnyer.pay.enums.EnumDyPayStatus; import com.bnyer.pay.enums.EnumKsPayStatus; import com.bnyer.pay.enums.EnumWxPayStatus; import com.bnyer.pay.service.PayInfoService; import com.bnyer.pay.service.UnifiedPayService; -import com.bnyer.pay.vo.QueryOrderVo; -import com.bnyer.pay.vo.ThirdInOrderVo; -import com.bnyer.pay.vo.PayInfoDetailsVo; -import com.bnyer.pay.vo.ThirdQueryOrderVo; +import com.bnyer.pay.vo.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -61,7 +59,7 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { * @return */ @Override - public ThirdInOrderVo inOrder(InOrderDto dto, HttpServletRequest request) { + public InOrderVo inOrder(InOrderDto dto, HttpServletRequest request) { //支付金额 String payAmount = ""; //商品类型:快手支付需要 @@ -99,7 +97,8 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { //构建支付订单完成入库 AddPayInfoDto addPayInfoDto = buildPayInfo(thirdInOrderVo, unifiedOrderBo,dto); payInfoService.addPayInfo(addPayInfoDto); - return thirdInOrderVo; + InOrderVo inOrderVo = EntityConvertUtil.copy(thirdInOrderVo, InOrderVo.class); + return inOrderVo; } /** @@ -118,10 +117,10 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { addPayInfoDto.setPayType(dto.getPayType()); addPayInfoDto.setPayId(unifiedOrderBo.getPayId()); addPayInfoDto.setPayAmount(new BigDecimal(unifiedOrderBo.getPayAmount())); - addPayInfoDto.setAppid(thirdInOrderVo.getAppid()); + addPayInfoDto.setAppid(thirdInOrderVo.getAppId()); addPayInfoDto.setGoodsSubject(unifiedOrderBo.getGoodsSubject()); addPayInfoDto.setGoodsDesc(unifiedOrderBo.getGoodsDesc()); - addPayInfoDto.setThirdNo(thirdInOrderVo.getPrepayid()); +// addPayInfoDto.setThirdNo(thirdInOrderVo.getPrepayid()); addPayInfoDto.setIp(unifiedOrderBo.getIp()); return addPayInfoDto; } @@ -200,7 +199,8 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { EnumPayStatus enumPayStatusDy = EnumDyPayStatus.getEnumPayStatusByStatus(thirdPayStatus); return enumPayStatusDy.getStatus(); case ALI_PAY: - + EnumPayStatus enumPayStatusAli = EnumAliPayStatus.getEnumPayStatusByStatus(thirdPayStatus); + return enumPayStatusAli.getStatus(); default: throw new ServiceException("payType 参数参数传递错误"); } diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/InOrderVo.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/InOrderVo.java new file mode 100644 index 0000000..e162659 --- /dev/null +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/InOrderVo.java @@ -0,0 +1,80 @@ +package com.bnyer.pay.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author :WXC + * @Date :2023/05/06 + * @description : + */ +@Data +@NoArgsConstructor +public class InOrderVo { + + @ApiModelProperty(value = "应用id") + private String appId; + + @ApiModelProperty(value = "内部系统支付单号/开发者测单号") + private String outOrderNo; + + @ApiModelProperty(value = "微信下单返回") + private ThirdInOrderVo.WxThirdInOrderVo wxThirdInOrderVo; + + @ApiModelProperty(value = "支付宝下单返回") + private ThirdInOrderVo.AliThirdInOrderVo aliThirdInOrderVo; + + @ApiModelProperty(value = "快手下单返回") + private ThirdInOrderVo.KsThirdInOrderVo ksThirdInOrderVo; + + @ApiModelProperty(value = "抖音下单返回") + private ThirdInOrderVo.DyThirdInOrderVo dyThirdInOrderVo; + + @Data + public static class WxThirdInOrderVo { + @ApiModelProperty(value = "应用id") + private String appId; + @ApiModelProperty(value = "时间戳") + private String timeStamp; + @ApiModelProperty(value = "随机串") + private String nonceStr; + @ApiModelProperty(value = "会话标识") + private String packageValue; + @ApiModelProperty(value = "微信返回的字段") + private String signType; + @ApiModelProperty(value = "签名") + private String paySign; + + } + + @Data + public static class AliThirdInOrderVo { + + @ApiModelProperty(value = "支付宝") + private String outStr; + + } + + @Data + public static class DyThirdInOrderVo { + + @ApiModelProperty(value = "抖音侧订单号") + private String orderId; + + @ApiModelProperty(value = "抖音订单token") + private String orderToken; + + } + + @Data + public static class KsThirdInOrderVo { + + @ApiModelProperty(value = "快手侧订单号") + private String orderNo; + + @ApiModelProperty(value = "快手订单token") + private String orderToken; + + } +} diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/PayInfoDetailsVo.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/PayInfoDetailsVo.java index ac81b9b..5b2dc4f 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/PayInfoDetailsVo.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/PayInfoDetailsVo.java @@ -1,6 +1,5 @@ package com.bnyer.pay.vo; -import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -13,7 +12,6 @@ import lombok.Setter; @Getter @Setter @NoArgsConstructor -@AllArgsConstructor public class PayInfoDetailsVo extends PayInfoVo { } diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/ThirdInOrderVo.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/ThirdInOrderVo.java index 003d9f7..f4c0f1c 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/ThirdInOrderVo.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/ThirdInOrderVo.java @@ -1,50 +1,85 @@ package com.bnyer.pay.vo; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; +import lombok.experimental.Accessors; + +import java.io.Serializable; /** * @author :WXC * @Date :2023/04/03 * @description :统一第三方支付下单返回参数 */ -@Getter -@Setter +@Data @NoArgsConstructor -public class ThirdInOrderVo { +public class ThirdInOrderVo implements Serializable { + private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "appid") - private String appid; + @ApiModelProperty(value = "应用id") + private String appId; - @ApiModelProperty(value = "商户号") - private String mchid; + @ApiModelProperty(value = "内部系统支付单号/开发者测单号") + private String outOrderNo; - @ApiModelProperty(value = "交易类型:JSAPI等") - private String tradeType; + @ApiModelProperty(value = "微信下单返回") + private WxThirdInOrderVo wxThirdInOrderVo; - @ApiModelProperty(value = "微信返回的字段") - private String prepayid; + @ApiModelProperty(value = "支付宝下单返回") + private AliThirdInOrderVo aliThirdInOrderVo; - @ApiModelProperty(value = "随机串") - private String noncestr; + @ApiModelProperty(value = "快手下单返回") + private KsThirdInOrderVo ksThirdInOrderVo; - @ApiModelProperty(value = "时间戳") - private String timestamp; + @ApiModelProperty(value = "抖音下单返回") + private DyThirdInOrderVo dyThirdInOrderVo; - @ApiModelProperty(value = "签名") - private String sign; + @Data + public static class WxThirdInOrderVo { + @ApiModelProperty(value = "应用id") + private String appId; + @ApiModelProperty(value = "时间戳") + private String timeStamp; + @ApiModelProperty(value = "随机串") + private String nonceStr; + @ApiModelProperty(value = "会话标识") + private String packageValue; + @ApiModelProperty(value = "微信返回的字段") + private String signType; + @ApiModelProperty(value = "签名") + private String paySign; - @ApiModelProperty(value = "支付宝") - private String outStr; + } - @ApiModelProperty(value = "内部系统支付单号/开发者测单号") - private String outOrderNo; + @Data + public static class AliThirdInOrderVo { + + @ApiModelProperty(value = "支付宝") + private String outStr; + + } + + @Data + public static class DyThirdInOrderVo { + + @ApiModelProperty(value = "抖音侧订单号") + private String orderId; + + @ApiModelProperty(value = "抖音订单token") + private String orderToken; + + } + + @Data + public static class KsThirdInOrderVo { + + @ApiModelProperty(value = "快手侧订单号") + private String orderNo; + + @ApiModelProperty(value = "快手订单token") + private String orderToken; + + } - @ApiModelProperty(value = "第三方返回支付单号,抖音快手支付需要用到") - private String thirdOrderNo; - @ApiModelProperty(value = "快手、抖音支付") - private String orderToken; } diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/ThirdQueryOrderVo.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/ThirdQueryOrderVo.java index 5d85cb3..34c9a17 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/ThirdQueryOrderVo.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/ThirdQueryOrderVo.java @@ -28,7 +28,7 @@ public class ThirdQueryOrderVo { private String payTime; //快手支付渠道。取值:UNKNOWN - 未知|WECHAT-微信 |ALIPAY-支付宝。(注:如果用户还未支付,这里返回的是UNKNOWN.) private String ksPayChannel; - //抖音支付渠道 + //抖音支付渠道。1-微信支付,2-支付宝支付,10-抖音支付 private Integer dyPayChannel; //第三方平台订单号:抖音快手平台订单号 private String thirdOrderNo;