Browse Source

修改为动态切换支付账号

master
qyhdd 2 years ago
parent
commit
a98fea1c15
  1. 113
      rights-client-controller/src/main/java/com/cyjd/rights/controller/AliPayController.java
  2. 31
      rights-entity/src/main/java/com/cyjd/rights/entity/AliAccountEntity.java
  3. 2
      rights-entity/src/main/java/com/cyjd/rights/entity/AliPayOrderEntity.java
  4. 2
      rights-entity/src/main/java/com/cyjd/rights/entity/AliPaySigningOrderEntity.java
  5. 2
      rights-entity/src/main/java/com/cyjd/rights/entity/ConfigEntity.java
  6. 45
      rights-entity/src/main/java/com/cyjd/rights/enums/AliPayEnum.java
  7. 9
      rights-interface/src/main/java/com/cyjd/rights/business/service/AliAccountService.java
  8. 21
      rights-interface/src/main/java/com/cyjd/rights/business/service/AliPayService.java
  9. 13
      rights-server/src/main/java/com/cyjd/rights/business/mapper/AliAccountMapper.java
  10. 47
      rights-server/src/main/java/com/cyjd/rights/business/service/impl/AliAccountServiceImpl.java
  11. 4
      rights-server/src/main/java/com/cyjd/rights/business/service/impl/AliPayOrderServiceImpl.java
  12. 72
      rights-server/src/main/java/com/cyjd/rights/business/service/impl/AliPayServiceImpl.java

113
rights-client-controller/src/main/java/com/cyjd/rights/controller/AliPayController.java

@ -1,25 +1,20 @@
package com.cyjd.rights.controller;
import com.alibaba.fastjson.JSON;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayConstants;
import com.alipay.api.CertAlipayRequest;
import com.alipay.api.*;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.response.AlipayTradePayResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.cyjd.rights.beans.AliPayProperties;
import com.cyjd.rights.beans.R;
import com.cyjd.rights.beans.ResultCodeEnum;
import com.cyjd.rights.business.service.*;
import com.cyjd.rights.constant.AliPayConstant;
import com.cyjd.rights.constant.EnumPeriodType;
import com.cyjd.rights.dto.AliPayInOrderByAgreementDto;
import com.cyjd.rights.dto.AliPaySignUpDto;
import com.cyjd.rights.entity.AliPayOrderEntity;
import com.cyjd.rights.entity.AliPaySigningOrderEntity;
import com.cyjd.rights.entity.ConfigEntity;
import com.cyjd.rights.enums.AliPayEnum;
import com.cyjd.rights.result.FResult;
import com.cyjd.rights.utils.EntityConvertUtil;
import com.cyjd.rights.utils.OrderUtil;
import com.cyjd.rights.vo.AliPayInOrderByAgreementReq;
import com.cyjd.rights.vo.AliPayQueryPageSignReq;
@ -27,15 +22,12 @@ import com.cyjd.rights.vo.AliPayTradeQueryReq;
import com.cyjd.rights.vo.AliPayUserPageSignReq;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.java.Log;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
@ -75,22 +67,15 @@ public class AliPayController {
private AliPayProperties aliPayProperties;
private CertAlipayRequest certAlipayRequest;
private static String[] unicom = {"130", "131", "132", "140", "155", "156", "185", "186", "145", "171", "176", "175", "166"};
private static String[] mobileArray = {"134", "135", "136", "137", "138", "139", "147", "150", "151", "152", "157", "158", "159", "178", "182", "183", "184", "187", "188", "195", "198"};
private static String[] tel = {"133", "153", "177", "180", "181", "189", "173", "149", "199"};
@PostConstruct
/* @PostConstruct
public void init() {
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
//设置文件地址
// if (isSkipSign) {
// aliPayProperties.setCertPath("D:\\daima\\hy\\ringback-q\\02Ypcl\\01Code\\01Plantform\\Server\\vrbt-client-controller\\src\\main\\resources\\config\\");
// } else {
// aliPayProperties.setCertPath("/home/ypcl/server-client/config/");
// }
certAlipayRequest.setServerUrl(AliPayConstant.serverUrl);
certAlipayRequest.setAppId(aliPayProperties.getAppId());
certAlipayRequest.setPrivateKey(aliPayProperties.getPrivateKey());
@ -101,17 +86,21 @@ public class AliPayController {
certAlipayRequest.setAlipayPublicCertPath(aliPayProperties.getCertPath() + "alipayCertPublicKey_RSA2.crt");
certAlipayRequest.setRootCertPath(aliPayProperties.getCertPath() + "alipayRootCert.crt");
this.certAlipayRequest = certAlipayRequest;
}
}*/
@ApiOperation(value = "支付宝签约", notes = "前端先调用此接口,由服务端请求支付宝组装scheme地址,之后前端通过该地址唤起支付宝进行签约")
@PostMapping("/signUp")
public R signUp(@RequestBody AliPaySignUpDto signUpDto) {
String price="19.9";
String price = "19.9";
//查询用户31天内是否已经有代扣成功的记录了
if (!aliPayOrderService.checkOpen(signUpDto.getMobile())) {
return R.error(ResultCodeEnum.user_month_repeat_open);
}
//获取现在要推广的账号
ConfigEntity configEntity = configService.getOne(new QueryWrapper<ConfigEntity>().eq("config_name", "account"));
String aliPayAccountName = configEntity.getConfigValue();
AliPayUserPageSignReq signReq = new AliPayUserPageSignReq();
signUpDto.setIsPage(true);
signUpDto.setPeriod("31"); //设置天数
@ -128,7 +117,7 @@ public class AliPayController {
periodRuleParams.setSingleAmount(signUpDto.getSingleAmount());
signReq.setPeriodRuleParams(periodRuleParams);
//aliPayUserPageSignReq.setSignScene("INDUSTRY|DIGITAL_MEDIA");
String signUrl = aliPayService.signUp(signReq);
String signUrl = aliPayService.signUp(signReq, aliPayAccountName);
//保存签约订单
AliPaySigningOrderEntity aliPaySigningOrderEntity = new AliPaySigningOrderEntity();
aliPaySigningOrderEntity.setOrderId(agreementNo);
@ -137,11 +126,12 @@ public class AliPayController {
aliPaySigningOrderEntity.setLinkId(signUpDto.getLinkId());
aliPaySigningOrderEntity.setLinkName("推广名字"); //先定死
aliPaySigningOrderEntity.setOperatorsId(1); //先定死可能不要这个参数
aliPaySigningOrderEntity.setIsPage(signUpDto.getIsPage()?1:0);
aliPaySigningOrderEntity.setIsPage(signUpDto.getIsPage() ? 1 : 0);
aliPaySigningOrderEntity.setOrderName("优爱腾三方权益业务");
aliPaySigningOrderEntity.setPrice(price);
aliPaySigningOrderEntity.setAliAccountName(aliPayAccountName);
aliPaySigningOrderEntity.setBusinessType(1);
if (signUpDto.getSendApiData()!=null&&!Objects.equals(signUpDto.getSendApiData(), "")) {
if (signUpDto.getSendApiData() != null && !Objects.equals(signUpDto.getSendApiData(), "")) {
aliPaySigningOrderEntity.setSendApiData(signUpDto.getSendApiData());
}
if (StringUtils.isBlank(signUrl)) {
@ -158,19 +148,19 @@ public class AliPayController {
@ApiOperation(value = "支付宝签约状态查询", notes = "签约成功以后前端可调用此接口查询是否签约成功")
@PostMapping("/querySign")
public FResult<?> querySign(@RequestParam String externalAgreementNo) {
public FResult<?> querySign(@RequestParam String externalAgreementNo,@RequestParam String accountName) {
AliPayQueryPageSignReq aliPayQueryPageSignReq = new AliPayQueryPageSignReq();
aliPayQueryPageSignReq.setExternalAgreementNo(externalAgreementNo);
boolean querySign = aliPayService.querySign(aliPayQueryPageSignReq);
boolean querySign = aliPayService.querySign(aliPayQueryPageSignReq,accountName);
return FResult.ok(querySign);
}
@ApiOperation(value = "支付宝支付状态查询", notes = "代扣以后可调用此接口查询是否成功")
@PostMapping("/queryOrder")
public FResult<?> queryOrder(@RequestParam String outTradeNo) {
public FResult<?> queryOrder(@RequestParam String outTradeNo,@RequestParam String accountName) {
AliPayTradeQueryReq aliPayTradeQueryReq = new AliPayTradeQueryReq();
aliPayTradeQueryReq.setOutTradeNo(outTradeNo);
boolean queryOrder = aliPayService.queryOrder(aliPayTradeQueryReq);
boolean queryOrder = aliPayService.queryOrder(aliPayTradeQueryReq, accountName);
return FResult.ok(queryOrder);
}
@ -212,6 +202,31 @@ public class AliPayController {
}
@ApiOperation(value = "支付退款", notes = "支付退款")
@PostMapping("/alipayRefund")
public void alipayRefund() throws AlipayApiException {
// AliPayEnum aliPayEnum = AliPayEnum.getMessageEnum(inMap.get("app_id"));
// CertAlipayRequest certAlipayRequest = aliPayService.init(aliPayEnum.getAccountName());
// AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
// AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
// JSONObject bizContent = new JSONObject();
// bizContent.put("out_trade_no", "Y2023080420524534021000");
// bizContent.put("refund_amount", 0.1);
// bizContent.put("out_request_no", "HZ01RF001");
// //// 返回参数选项,按需传入
// //JSONArray queryOptions = new JSONArray();
// //queryOptions.add("refund_detail_item_list");
// //bizContent.put("query_options", queryOptions);
//
// request.setBizContent(bizContent.toString());
// AlipayTradeRefundResponse response = alipayClient.certificateExecute(request);
// if (response.isSuccess()) {
// System.out.println("调用成功");
// } else {
// System.out.println("调用失败");
// }
}
//@Scheduled(cron = "0 0 8,20 * * ?")
@ -296,9 +311,12 @@ public class AliPayController {
* @return
*/
public String signNotify(Map<String, String> inMap) {
log.info("===========================我是签约回调============================");
//log.info("支付宝签约回调开始:request{}", JSON.toJSONString(inMap));
try {
AliPayEnum aliPayEnum = AliPayEnum.getMessageEnum(inMap.get("app_id"));
CertAlipayRequest certAlipayRequest = aliPayService.init(aliPayEnum.getAccountName());
//验签
boolean signVerified = AlipaySignature.certVerifyV1(inMap, certAlipayRequest.getAlipayPublicCertPath(), AlipayConstants.CHARSET_UTF8, AlipayConstants.SIGN_TYPE_RSA2);
if (signVerified) {
@ -323,7 +341,7 @@ public class AliPayController {
//更新订单签约信息
AliPaySigningOrderEntity aliPaySigningOrder = aliPaySigningOrderService.getOne(new QueryWrapper<AliPaySigningOrderEntity>().eq("order_id", externalAgreementNo));
if (aliPaySigningOrder==null){
if (aliPaySigningOrder == null) {
return "fail";
}
aliPaySigningOrder.setAliUserId(alipayUserId);
@ -345,13 +363,13 @@ public class AliPayController {
aliPaySigningOrder.setStatus(1);
//设置下次续费的时间
aliPaySigningOrder.setNextPayTime(LocalDateTime.now().plusDays(31));
log.info("支付宝签约修改成功订单"+aliPaySigningOrder+"================================");
log.info("支付宝签约修改成功订单" + aliPaySigningOrder + "================================");
boolean b = aliPaySigningOrderService.updateById(aliPaySigningOrder);
log.info("支付宝签约修改结果:=========================================================="+b);
log.info("支付宝签约修改结果:==========================================================" + b);
//进行扣款
aliPayService.aliPayTradePayByAgreement(payInOrderByAgreementReq,aliPaySigningOrder);
}else {
aliPayService.aliPayTradePayByAgreement(payInOrderByAgreementReq, aliPaySigningOrder,certAlipayRequest);
} else {
//修改订单状态为失败
aliPaySigningOrder.setStatus(0);
aliPaySigningOrderService.updateById(aliPaySigningOrder);
@ -402,8 +420,10 @@ public class AliPayController {
* @return
*/
public String agreementNotify(@RequestBody Map<String, String> inMap) {
log.info("支付宝代扣回调开始:request{}"+JSON.toJSONString(inMap));
log.info("支付宝代扣回调开始:request{}" + JSON.toJSONString(inMap));
try {
AliPayEnum aliPayEnum = AliPayEnum.getMessageEnum(inMap.get("app_id"));
CertAlipayRequest certAlipayRequest = aliPayService.init(aliPayEnum.getAccountName());
//验签
boolean signVerified = AlipaySignature.certVerifyV1(inMap, certAlipayRequest.getAlipayPublicCertPath(), AlipayConstants.CHARSET_UTF8, AlipayConstants.SIGN_TYPE_RSA2);
if (signVerified) {
@ -442,18 +462,18 @@ public class AliPayController {
//通知时间。通知的发送时间。格式为 yyyy-MM-dd HH:mm:ss。
String notifyTime = inMap.get("notify_time");
log.info("支付宝支付回调:" + inMap.toString());
log.info("outTradeNo====================="+outTradeNo);
log.info("outTradeNo=====================" + outTradeNo);
AliPaySigningOrderEntity aliPaySigningOrderEntity = aliPaySigningOrderService.getOne(new QueryWrapper<AliPaySigningOrderEntity>().eq("other_order_id", outTradeNo));
// for (AliPayOrderEntity aliPayOrderEntity : aliPayOrderService.list(new QueryWrapper<>())) {
// System.out.println(aliPayOrderEntity);
// }
if (aliPaySigningOrderEntity==null){
if (aliPaySigningOrderEntity == null) {
log.info("未查询到订单");
return "success";
}
AliPayOrderEntity aliPayOrderEntity = new AliPayOrderEntity();
aliPayOrderEntity.setOrderId(System.currentTimeMillis()+"");
aliPayOrderEntity.setOrderId(System.currentTimeMillis() + "");
aliPayOrderEntity.setOrderTime(LocalDateTime.now());
aliPayOrderEntity.setPrice(aliPaySigningOrderEntity.getPrice());
aliPayOrderEntity.setIsPage(aliPaySigningOrderEntity.getIsPage());
@ -464,26 +484,27 @@ public class AliPayController {
aliPayOrderEntity.setBusinessType(aliPaySigningOrderEntity.getBusinessType());
aliPayOrderEntity.setLinkId(aliPaySigningOrderEntity.getLinkId());
aliPayOrderEntity.setLinkName(aliPaySigningOrderEntity.getLinkName());
aliPayOrderEntity.setAliAccountName(aliPaySigningOrderEntity.getAliAccountName());
aliPayOrderEntity.setOrderName("惠点联合会员");
if ("TRADE_SUCCESS".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus)) {
aliPayOrderEntity.setStatus(1);
aliPayOrderService.save(aliPayOrderEntity);
log.info("支付订单保存成功"+aliPayOrderEntity);
log.info("支付订单保存成功" + aliPayOrderEntity);
//查看是否发送
if (sendSuccessMobileService.ifSendDataByType(aliPaySigningOrderEntity.getLinkId().toString(),outTradeNo)) {
if (sendSuccessMobileService.ifSendDataByType(aliPaySigningOrderEntity.getLinkId().toString(), outTradeNo)) {
//回传 1161张敏渠道
if (1161==aliPaySigningOrderEntity.getLinkId()){
if (1161 == aliPaySigningOrderEntity.getLinkId()) {
//回传成功数据
sendSuccessMobileService.sendSuccessMobile(aliPaySigningOrderEntity.getMobile(),"zm",outTradeNo);
sendSuccessMobileService.sendSuccessMobile(aliPaySigningOrderEntity.getMobile(), "zm", outTradeNo);
}
//回传 1160推啊渠道
if (1160==aliPaySigningOrderEntity.getLinkId()){
sendSuccessMobileService.sendSuccessMobile(aliPaySigningOrderEntity.getSendApiData(),"tuia",outTradeNo);
if (1160 == aliPaySigningOrderEntity.getLinkId()) {
sendSuccessMobileService.sendSuccessMobile(aliPaySigningOrderEntity.getSendApiData(), "tuia", outTradeNo);
}
//回传 1162赤金渠道
if (1162==aliPaySigningOrderEntity.getLinkId()){
sendSuccessMobileService.sendSuccessMobile(aliPaySigningOrderEntity.getSendApiData(),"cj",outTradeNo);
if (1162 == aliPaySigningOrderEntity.getLinkId()) {
sendSuccessMobileService.sendSuccessMobile(aliPaySigningOrderEntity.getSendApiData(), "cj", outTradeNo);
}
}
// if (b){
@ -495,7 +516,7 @@ public class AliPayController {
}
aliPayOrderEntity.setStatus(0);
aliPayOrderService.save(aliPayOrderEntity);
log.info("支付开通失败订单保存成功"+aliPayOrderEntity);
log.info("支付开通失败订单保存成功" + aliPayOrderEntity);
}
} catch (AlipayApiException e) {

31
rights-entity/src/main/java/com/cyjd/rights/entity/AliAccountEntity.java

@ -0,0 +1,31 @@
package com.cyjd.rights.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_ali_account")
public class AliAccountEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
//阿里账户名字
private String aliAccountName;
//应用Id
private String appId;
//应用密钥
private String privateKey;
//应用公钥
private String publicKey;
//证书存放位置
private String certAddress;
}

2
rights-entity/src/main/java/com/cyjd/rights/entity/AliPayOrderEntity.java

@ -46,4 +46,6 @@ public class AliPayOrderEntity {
private String linkName;
private String aliAccountName; //账户名称(公司拼音首字母+编号)
}

2
rights-entity/src/main/java/com/cyjd/rights/entity/AliPaySigningOrderEntity.java

@ -61,5 +61,7 @@ public class AliPaySigningOrderEntity {
* 回传成功数据
*/
private String sendApiData;
private String aliAccountName; //账户名称(公司拼音首字母+编号)
}

2
rights-entity/src/main/java/com/cyjd/rights/entity/ConfigEntity.java

@ -15,7 +15,7 @@ public class ConfigEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 配置名字 hj(核减数配置)
* 配置名字 hj(核减数配置) account(使用的阿里账号)
*/
private String configName;
/**

45
rights-entity/src/main/java/com/cyjd/rights/enums/AliPayEnum.java

@ -0,0 +1,45 @@
package com.cyjd.rights.enums;
import com.alipay.api.CertAlipayRequest;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
public enum AliPayEnum {
CJYD1("cyjd1","2021003135690045"),CJYD2("cyjd2","2021004109660018");
private String accountName;
private String appId;
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
AliPayEnum(String accountName, String appId) {
this.accountName = accountName;
this.appId = appId;
}
public static AliPayEnum getMessageEnum(String appId) {
return Arrays.stream(AliPayEnum.values()).filter(x -> x.appId.equals(appId)).findFirst().orElse(null);
}
}

9
rights-interface/src/main/java/com/cyjd/rights/business/service/AliAccountService.java

@ -0,0 +1,9 @@
package com.cyjd.rights.business.service;
import com.alipay.api.CertAlipayRequest;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cyjd.rights.entity.AliAccountEntity;
public interface AliAccountService extends IService<AliAccountEntity> {
CertAlipayRequest init(String aliPayAccountName);
}

21
rights-interface/src/main/java/com/cyjd/rights/business/service/AliPayService.java

@ -1,6 +1,7 @@
package com.cyjd.rights.business.service;
import com.alipay.api.CertAlipayRequest;
import com.alipay.api.response.AlipayTradeCancelResponse;
import com.alipay.api.response.AlipayTradePayResponse;
import com.alipay.api.response.AlipayUserAgreementExecutionplanModifyResponse;
@ -20,43 +21,49 @@ public interface AliPayService {
* 签约
* @return
*/
String signUp(AliPayUserPageSignReq aliPayUserPageSignReq);
String signUp(AliPayUserPageSignReq aliPayUserPageSignReq,String accountName);
/**
* 查询签约结果
* @param aliPayQueryPageSignReq
* @return
*/
public boolean querySign(AliPayQueryPageSignReq aliPayQueryPageSignReq);
public boolean querySign(AliPayQueryPageSignReq aliPayQueryPageSignReq,String accountName);
/**
* 根据签约协议号发起主动扣款
*
* @param inOrderByAgreementReq
* @param certAlipayRequest
* @return
*/
public AlipayTradePayResponse aliPayTradePayByAgreement(AliPayInOrderByAgreementReq inOrderByAgreementReq, AliPaySigningOrderEntity aliPaySigningOrderEntity);
public AlipayTradePayResponse aliPayTradePayByAgreement(AliPayInOrderByAgreementReq inOrderByAgreementReq, AliPaySigningOrderEntity aliPaySigningOrderEntity,CertAlipayRequest certAlipayRequest);
/**
* 根据商户订单号/支付宝交易号查询 支付状态
*
* @param aliPayTradeQueryReq
* @param accountName
* @return
*/
boolean queryOrder(AliPayTradeQueryReq aliPayTradeQueryReq);
boolean queryOrder(AliPayTradeQueryReq aliPayTradeQueryReq,String accountName);
/**
* 交易撤销
* @param tradeCancelReq
* @return
*/
AlipayTradeCancelResponse aliPayTradeCancel(AliPayTradeCancelReq tradeCancelReq);
AlipayTradeCancelResponse aliPayTradeCancel(AliPayTradeCancelReq tradeCancelReq,String accountName);
/**
* 变更签约
* @param modifyPlanReq
* @return
*/
public AlipayUserAgreementExecutionplanModifyResponse aliPayModifyPlan(AliPayModifyPlanReq modifyPlanReq);
public AlipayUserAgreementExecutionplanModifyResponse aliPayModifyPlan(AliPayModifyPlanReq modifyPlanReq,String accountName);
/**
* 解除签约
* @return
*/
public AlipayUserAgreementUnsignResponse aliPayUnSign(AliPayUnSignReq aliPayUnSignReq);
public AlipayUserAgreementUnsignResponse aliPayUnSign(AliPayUnSignReq aliPayUnSignReq,String accountName);
CertAlipayRequest init(String aliPayAccountName);
}

13
rights-server/src/main/java/com/cyjd/rights/business/mapper/AliAccountMapper.java

@ -0,0 +1,13 @@
package com.cyjd.rights.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cyjd.rights.dto.AliPayInOrderDto;
import com.cyjd.rights.entity.AliAccountEntity;
import com.cyjd.rights.entity.AliPayOrderEntity;
import com.cyjd.rights.vo.AliPayOrderVo;
import java.util.List;
public interface AliAccountMapper extends BaseMapper<AliAccountEntity> {
}

47
rights-server/src/main/java/com/cyjd/rights/business/service/impl/AliAccountServiceImpl.java

@ -0,0 +1,47 @@
package com.cyjd.rights.business.service.impl;
import com.alipay.api.AlipayConstants;
import com.alipay.api.CertAlipayRequest;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cyjd.rights.business.mapper.AliAccountMapper;
import com.cyjd.rights.business.service.AliAccountService;
import com.cyjd.rights.business.service.ConfigService;
import com.cyjd.rights.constant.AliPayConstant;
import com.cyjd.rights.entity.AliAccountEntity;
import com.cyjd.rights.entity.ConfigEntity;
import lombok.extern.java.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
@Log
public class AliAccountServiceImpl extends ServiceImpl<AliAccountMapper, AliAccountEntity> implements AliAccountService {
@Autowired
private AliAccountService aliAccountService;
@Autowired
private ConfigService configService;
@Override
public CertAlipayRequest init(String aliPayAccountName) {
//获取账号的详细信息
AliAccountEntity aliAccount = aliAccountService.getOne(new QueryWrapper<AliAccountEntity>().eq("ali_account_name", aliPayAccountName));
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
//设置文件地址
// if (isSkipSign) {
// aliPayProperties.setCertPath("D:\\daima\\hy\\ringback-q\\02Ypcl\\01Code\\01Plantform\\Server\\vrbt-client-controller\\src\\main\\resources\\config\\");
// } else {
// aliPayProperties.setCertPath("/home/ypcl/server-client/config/");
// }
certAlipayRequest.setServerUrl(AliPayConstant.serverUrl);
certAlipayRequest.setAppId(aliAccount.getAppId());
certAlipayRequest.setPrivateKey(aliAccount.getPrivateKey());
certAlipayRequest.setFormat(AlipayConstants.FORMAT_JSON);
certAlipayRequest.setCharset(AlipayConstants.CHARSET_UTF8);
certAlipayRequest.setSignType(AlipayConstants.SIGN_TYPE_RSA2);
certAlipayRequest.setCertPath(aliAccount.getCertAddress() + "appCertPublicKey_" + aliAccount.getAppId() + ".crt");
certAlipayRequest.setAlipayPublicCertPath(aliAccount.getCertAddress() + "alipayCertPublicKey_RSA2.crt");
certAlipayRequest.setRootCertPath(aliAccount.getCertAddress() + "alipayRootCert.crt");
return certAlipayRequest;
}
}

4
rights-server/src/main/java/com/cyjd/rights/business/service/impl/AliPayOrderServiceImpl.java

@ -33,8 +33,8 @@ public class AliPayOrderServiceImpl extends ServiceImpl<AliPayOrderMapper,AliPay
String beginString=begin.format(new Date());
LocalDateTime end = LocalDateTime.now().plusDays(-31);
String endString = end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
String beginStringTime=beginString+" 00:00:00";
String endStringTime=endString+" 23:59:89";
String beginStringTime=beginString+" 23:59:59";
String endStringTime=endString+" 00:00:00";
int orderCount = this.count(new QueryWrapper<AliPayOrderEntity>().ge("order_time", endStringTime).le("order_time", beginStringTime).eq("mobile",mobile).eq("status",1));
if (orderCount<=0){
return true;

72
rights-server/src/main/java/com/cyjd/rights/business/service/impl/AliPayServiceImpl.java

@ -3,10 +3,13 @@ package com.cyjd.rights.business.service.impl;
import com.alipay.api.*;
import com.alipay.api.request.*;
import com.alipay.api.response.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cyjd.rights.beans.AliPayProperties;
import com.cyjd.rights.business.service.AliAccountService;
import com.cyjd.rights.business.service.AliPayOrderService;
import com.cyjd.rights.business.service.AliPayService;
import com.cyjd.rights.constant.AliPayConstant;
import com.cyjd.rights.entity.AliAccountEntity;
import com.cyjd.rights.entity.AliPayOrderEntity;
import com.cyjd.rights.entity.AliPaySigningOrderEntity;
import com.cyjd.rights.utils.AlipayRequestBuilderUtil;
@ -14,11 +17,9 @@ import com.cyjd.rights.vo.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.Objects;
@ -45,36 +46,17 @@ public class AliPayServiceImpl implements AliPayService {
@Autowired
private AliPayOrderService aliPayOrderService;
private CertAlipayRequest certAlipayRequest;
@Autowired
private AliAccountService aliAccountService;
@PostConstruct
public void init() {
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
//设置文件地址
// if (isSkipSign){
// aliPayProperties.setCertPath("D:\\daima\\hy\\ringback-q\\02Ypcl\\01Code\\01Plantform\\Server\\vrbt-client-controller\\src\\main\\resources\\config\\");
// }else {
// aliPayProperties.setCertPath("/home/ypcl/server-client/config/");
// }
certAlipayRequest.setServerUrl(AliPayConstant.serverUrl);
certAlipayRequest.setAppId(aliPayProperties.getAppId());
certAlipayRequest.setPrivateKey(aliPayProperties.getPrivateKey());
certAlipayRequest.setFormat(AlipayConstants.FORMAT_JSON);
certAlipayRequest.setCharset(AlipayConstants.CHARSET_UTF8);
certAlipayRequest.setSignType(AlipayConstants.SIGN_TYPE_RSA2);
certAlipayRequest.setCertPath(aliPayProperties.getCertPath() + "appCertPublicKey_" + aliPayProperties.getAppId() + ".crt");
certAlipayRequest.setAlipayPublicCertPath(aliPayProperties.getCertPath() + "alipayCertPublicKey_RSA2.crt");
certAlipayRequest.setRootCertPath(aliPayProperties.getCertPath() + "alipayRootCert.crt");
this.certAlipayRequest = certAlipayRequest;
}
/*
* 签约
*/
@Override
public String signUp(AliPayUserPageSignReq aliPayUserPageSignReq) {
public String signUp(AliPayUserPageSignReq aliPayUserPageSignReq, String accountName) {
Assert.isTrue(StringUtils.isNotBlank(aliPayUserPageSignReq.getExternalAgreementNo()), "商户签约号不能为空");
Assert.isTrue(Objects.nonNull(aliPayUserPageSignReq.getPeriodRuleParams()), "周期管控规则不能为空");
AliPayUserPageSignReq.PeriodRuleParams periodRuleParams = aliPayUserPageSignReq.getPeriodRuleParams();
@ -83,7 +65,7 @@ public class AliPayServiceImpl implements AliPayService {
Assert.isTrue(StringUtils.isNotBlank(periodRuleParams.getSingleAmount()), "单次扣款最大金额不能为空");
try {
CertAlipayRequest certAlipayRequest = init(accountName);
AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
AlipayUserAgreementPageSignRequest request =
alipayRequestBuilderUtil.buildAlipayUserAgreementPageSignRequest(aliPayUserPageSignReq);
@ -119,7 +101,8 @@ public class AliPayServiceImpl implements AliPayService {
* 查询签约状态
*/
@Override
public boolean querySign(AliPayQueryPageSignReq aliPayQueryPageSignReq) {
public boolean querySign(AliPayQueryPageSignReq aliPayQueryPageSignReq,String accountName) {
CertAlipayRequest certAlipayRequest = init(accountName);
Assert.isTrue(StringUtils.isNotBlank(aliPayQueryPageSignReq.getExternalAgreementNo()), "商户签约号不能为空");
try {
AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
@ -147,7 +130,7 @@ public class AliPayServiceImpl implements AliPayService {
* 扣款
*/
@Override
public AlipayTradePayResponse aliPayTradePayByAgreement(AliPayInOrderByAgreementReq inOrderByAgreementReq, AliPaySigningOrderEntity aliPaySigningOrderEntity) {
public AlipayTradePayResponse aliPayTradePayByAgreement(AliPayInOrderByAgreementReq inOrderByAgreementReq, AliPaySigningOrderEntity aliPaySigningOrderEntity, CertAlipayRequest certAlipayRequest) {
System.out.println("=========================================走到这里了==========================================");
Assert.isTrue(StringUtils.isNotBlank(inOrderByAgreementReq.getOutTradeNo()), "订单号不能为空");
Assert.isTrue(StringUtils.isNotBlank(inOrderByAgreementReq.getTotalAmount()), "本次扣款金额不能为空");
@ -174,6 +157,7 @@ public class AliPayServiceImpl implements AliPayService {
aliPayOrderEntity.setSignCode(inOrderByAgreementReq.getAuthCode());
//System.out.println(aliPaySigningOrderEntity.getOtherOrderId()+"======================");
aliPayOrderEntity.setOtherOrderId(aliPaySigningOrderEntity.getOtherOrderId());
aliPayOrderEntity.setAliAccountName(aliPaySigningOrderEntity.getAliAccountName());
if (response.isSuccess()) {
aliPayOrderEntity.setStatus(2); //最终结果要看代扣回调,这个返回值可能被篡改
log.info("支付宝用户签约号{}:周期扣款,主动扣费成功", inOrderByAgreementReq.getAuthCode());
@ -194,9 +178,10 @@ public class AliPayServiceImpl implements AliPayService {
* 查询支付状态
*/
@Override
public boolean queryOrder(AliPayTradeQueryReq aliPayTradeQueryReq) {
public boolean queryOrder(AliPayTradeQueryReq aliPayTradeQueryReq, String accountName) {
Assert.isTrue(!((StringUtils.isBlank(aliPayTradeQueryReq.getTradeNo()) && StringUtils.isBlank(aliPayTradeQueryReq.getOutTradeNo()))), "支付宝交易号,和商户订单号不能同时为空!");
try {
CertAlipayRequest certAlipayRequest = init(accountName);
AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
AlipayTradeQueryRequest alipayTradeQueryRequest = alipayRequestBuilderUtil.buildAlipayTradeQueryRequest(aliPayTradeQueryReq);
log.info("==========================");
@ -213,9 +198,10 @@ public class AliPayServiceImpl implements AliPayService {
* 交易撤销
*/
@Override
public AlipayTradeCancelResponse aliPayTradeCancel(AliPayTradeCancelReq tradeCancelReq) {
public AlipayTradeCancelResponse aliPayTradeCancel(AliPayTradeCancelReq tradeCancelReq,String accountName) {
Assert.isTrue(!((StringUtils.isBlank(tradeCancelReq.getTradeNo()) && StringUtils.isBlank(tradeCancelReq.getOutTradeNo()))), "支付宝交易号,和商户订单号不能同时为空!");
try {
CertAlipayRequest certAlipayRequest = init(accountName);
AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
AlipayTradeCancelRequest request = alipayRequestBuilderUtil.buildAlipayTradeCancelRequest(tradeCancelReq);
//log.info("支付宝统一收单撤销接口调用:request{}", request.getBizContent());
@ -231,11 +217,12 @@ public class AliPayServiceImpl implements AliPayService {
* 变更签约
*/
@Override
public AlipayUserAgreementExecutionplanModifyResponse aliPayModifyPlan(AliPayModifyPlanReq modifyPlanReq) {
public AlipayUserAgreementExecutionplanModifyResponse aliPayModifyPlan(AliPayModifyPlanReq modifyPlanReq,String accountName) {
Assert.isTrue(StringUtils.isNotBlank(modifyPlanReq.getAliAgreementNo()), "支付宝签约号必填!");
Assert.isTrue(StringUtils.isNotBlank(modifyPlanReq.getDeductTime()), "下一次扣款时间必填!");
String agreementNo = modifyPlanReq.getAliAgreementNo();
try {
CertAlipayRequest certAlipayRequest = init(accountName);
AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
AlipayUserAgreementExecutionplanModifyRequest request = alipayRequestBuilderUtil.buildAlipayUserAgreementExecutionplanModifyRequest(modifyPlanReq);
//log.info("用户签约号{}:周期扣款-修改协议执行计划入参:{}", agreementNo, request.getBizContent());
@ -257,9 +244,10 @@ public class AliPayServiceImpl implements AliPayService {
* 解除签约
*/
@Override
public AlipayUserAgreementUnsignResponse aliPayUnSign(AliPayUnSignReq aliPayUnSignReq) {
public AlipayUserAgreementUnsignResponse aliPayUnSign(AliPayUnSignReq aliPayUnSignReq, String accountName) {
Assert.isTrue(StringUtils.isNotBlank(aliPayUnSignReq.getExternalAgreementNo()), "签约号必填!");
try {
CertAlipayRequest certAlipayRequest = init(accountName);
AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
AlipayUserAgreementUnsignRequest request = alipayRequestBuilderUtil.buildAlipayUserAgreementUnsignRequest(aliPayUnSignReq);
//log.info("签约号{}:周期扣款-解除签约入参:{}", aliPayUnSignReq.getExternalAgreementNo(), request.getBizContent());
@ -277,7 +265,29 @@ public class AliPayServiceImpl implements AliPayService {
return null;
}
@Override
public CertAlipayRequest init(String aliPayAccountName) {
//获取账号的详细信息
AliAccountEntity aliAccount = aliAccountService.getOne(new QueryWrapper<AliAccountEntity>().eq("ali_account_name", aliPayAccountName));
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
//设置文件地址
// if (isSkipSign) {
// aliPayProperties.setCertPath("D:\\daima\\hy\\ringback-q\\02Ypcl\\01Code\\01Plantform\\Server\\vrbt-client-controller\\src\\main\\resources\\config\\");
// } else {
// aliPayProperties.setCertPath("/home/ypcl/server-client/config/");
// }
certAlipayRequest.setServerUrl(AliPayConstant.serverUrl);
certAlipayRequest.setAppId(aliAccount.getAppId());
certAlipayRequest.setPrivateKey(aliAccount.getPrivateKey());
certAlipayRequest.setFormat(AlipayConstants.FORMAT_JSON);
certAlipayRequest.setCharset(AlipayConstants.CHARSET_UTF8);
certAlipayRequest.setSignType(AlipayConstants.SIGN_TYPE_RSA2);
certAlipayRequest.setCertPath(aliAccount.getCertAddress() + "appCertPublicKey_" + aliAccount.getAppId() + ".crt");
certAlipayRequest.setAlipayPublicCertPath(aliAccount.getCertAddress() + "alipayCertPublicKey_RSA2.crt");
certAlipayRequest.setRootCertPath(aliAccount.getCertAddress() + "alipayRootCert.crt");
return certAlipayRequest;
}
}

Loading…
Cancel
Save