|
|
@ -1,25 +1,20 @@ |
|
|
package com.cyjd.rights.controller; |
|
|
package com.cyjd.rights.controller; |
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
import com.alibaba.fastjson.JSON; |
|
|
import com.alipay.api.AlipayApiException; |
|
|
import com.alipay.api.*; |
|
|
import com.alipay.api.AlipayConstants; |
|
|
|
|
|
import com.alipay.api.CertAlipayRequest; |
|
|
|
|
|
import com.alipay.api.internal.util.AlipaySignature; |
|
|
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.query.QueryWrapper; |
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
|
|
|
|
|
import com.cyjd.rights.beans.AliPayProperties; |
|
|
import com.cyjd.rights.beans.AliPayProperties; |
|
|
import com.cyjd.rights.beans.R; |
|
|
import com.cyjd.rights.beans.R; |
|
|
import com.cyjd.rights.beans.ResultCodeEnum; |
|
|
import com.cyjd.rights.beans.ResultCodeEnum; |
|
|
import com.cyjd.rights.business.service.*; |
|
|
import com.cyjd.rights.business.service.*; |
|
|
import com.cyjd.rights.constant.AliPayConstant; |
|
|
|
|
|
import com.cyjd.rights.constant.EnumPeriodType; |
|
|
import com.cyjd.rights.constant.EnumPeriodType; |
|
|
import com.cyjd.rights.dto.AliPayInOrderByAgreementDto; |
|
|
|
|
|
import com.cyjd.rights.dto.AliPaySignUpDto; |
|
|
import com.cyjd.rights.dto.AliPaySignUpDto; |
|
|
import com.cyjd.rights.entity.AliPayOrderEntity; |
|
|
import com.cyjd.rights.entity.AliPayOrderEntity; |
|
|
import com.cyjd.rights.entity.AliPaySigningOrderEntity; |
|
|
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.result.FResult; |
|
|
import com.cyjd.rights.utils.EntityConvertUtil; |
|
|
|
|
|
import com.cyjd.rights.utils.OrderUtil; |
|
|
import com.cyjd.rights.utils.OrderUtil; |
|
|
import com.cyjd.rights.vo.AliPayInOrderByAgreementReq; |
|
|
import com.cyjd.rights.vo.AliPayInOrderByAgreementReq; |
|
|
import com.cyjd.rights.vo.AliPayQueryPageSignReq; |
|
|
import com.cyjd.rights.vo.AliPayQueryPageSignReq; |
|
|
@ -27,15 +22,12 @@ import com.cyjd.rights.vo.AliPayTradeQueryReq; |
|
|
import com.cyjd.rights.vo.AliPayUserPageSignReq; |
|
|
import com.cyjd.rights.vo.AliPayUserPageSignReq; |
|
|
import io.swagger.annotations.Api; |
|
|
import io.swagger.annotations.Api; |
|
|
import io.swagger.annotations.ApiOperation; |
|
|
import io.swagger.annotations.ApiOperation; |
|
|
import lombok.extern.java.Log; |
|
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
|
|
import org.springframework.stereotype.Component; |
|
|
import org.springframework.stereotype.Component; |
|
|
import org.springframework.web.bind.annotation.*; |
|
|
import org.springframework.web.bind.annotation.*; |
|
|
|
|
|
|
|
|
import javax.annotation.PostConstruct; |
|
|
|
|
|
import javax.annotation.Resource; |
|
|
import javax.annotation.Resource; |
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
import java.time.LocalDateTime; |
|
|
import java.time.LocalDateTime; |
|
|
@ -75,22 +67,15 @@ public class AliPayController { |
|
|
private AliPayProperties aliPayProperties; |
|
|
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[] 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[] 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"}; |
|
|
private static String[] tel = {"133", "153", "177", "180", "181", "189", "173", "149", "199"}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@PostConstruct |
|
|
/* @PostConstruct |
|
|
public void init() { |
|
|
public void init() { |
|
|
CertAlipayRequest certAlipayRequest = new CertAlipayRequest(); |
|
|
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.setServerUrl(AliPayConstant.serverUrl); |
|
|
certAlipayRequest.setAppId(aliPayProperties.getAppId()); |
|
|
certAlipayRequest.setAppId(aliPayProperties.getAppId()); |
|
|
certAlipayRequest.setPrivateKey(aliPayProperties.getPrivateKey()); |
|
|
certAlipayRequest.setPrivateKey(aliPayProperties.getPrivateKey()); |
|
|
@ -101,7 +86,7 @@ public class AliPayController { |
|
|
certAlipayRequest.setAlipayPublicCertPath(aliPayProperties.getCertPath() + "alipayCertPublicKey_RSA2.crt"); |
|
|
certAlipayRequest.setAlipayPublicCertPath(aliPayProperties.getCertPath() + "alipayCertPublicKey_RSA2.crt"); |
|
|
certAlipayRequest.setRootCertPath(aliPayProperties.getCertPath() + "alipayRootCert.crt"); |
|
|
certAlipayRequest.setRootCertPath(aliPayProperties.getCertPath() + "alipayRootCert.crt"); |
|
|
this.certAlipayRequest = certAlipayRequest; |
|
|
this.certAlipayRequest = certAlipayRequest; |
|
|
} |
|
|
}*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation(value = "支付宝签约", notes = "前端先调用此接口,由服务端请求支付宝组装scheme地址,之后前端通过该地址唤起支付宝进行签约") |
|
|
@ApiOperation(value = "支付宝签约", notes = "前端先调用此接口,由服务端请求支付宝组装scheme地址,之后前端通过该地址唤起支付宝进行签约") |
|
|
@ -112,6 +97,10 @@ public class AliPayController { |
|
|
if (!aliPayOrderService.checkOpen(signUpDto.getMobile())) { |
|
|
if (!aliPayOrderService.checkOpen(signUpDto.getMobile())) { |
|
|
return R.error(ResultCodeEnum.user_month_repeat_open); |
|
|
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(); |
|
|
AliPayUserPageSignReq signReq = new AliPayUserPageSignReq(); |
|
|
signUpDto.setIsPage(true); |
|
|
signUpDto.setIsPage(true); |
|
|
signUpDto.setPeriod("31"); //设置天数
|
|
|
signUpDto.setPeriod("31"); //设置天数
|
|
|
@ -128,7 +117,7 @@ public class AliPayController { |
|
|
periodRuleParams.setSingleAmount(signUpDto.getSingleAmount()); |
|
|
periodRuleParams.setSingleAmount(signUpDto.getSingleAmount()); |
|
|
signReq.setPeriodRuleParams(periodRuleParams); |
|
|
signReq.setPeriodRuleParams(periodRuleParams); |
|
|
//aliPayUserPageSignReq.setSignScene("INDUSTRY|DIGITAL_MEDIA");
|
|
|
//aliPayUserPageSignReq.setSignScene("INDUSTRY|DIGITAL_MEDIA");
|
|
|
String signUrl = aliPayService.signUp(signReq); |
|
|
String signUrl = aliPayService.signUp(signReq, aliPayAccountName); |
|
|
//保存签约订单
|
|
|
//保存签约订单
|
|
|
AliPaySigningOrderEntity aliPaySigningOrderEntity = new AliPaySigningOrderEntity(); |
|
|
AliPaySigningOrderEntity aliPaySigningOrderEntity = new AliPaySigningOrderEntity(); |
|
|
aliPaySigningOrderEntity.setOrderId(agreementNo); |
|
|
aliPaySigningOrderEntity.setOrderId(agreementNo); |
|
|
@ -140,6 +129,7 @@ public class AliPayController { |
|
|
aliPaySigningOrderEntity.setIsPage(signUpDto.getIsPage() ? 1 : 0); |
|
|
aliPaySigningOrderEntity.setIsPage(signUpDto.getIsPage() ? 1 : 0); |
|
|
aliPaySigningOrderEntity.setOrderName("优爱腾三方权益业务"); |
|
|
aliPaySigningOrderEntity.setOrderName("优爱腾三方权益业务"); |
|
|
aliPaySigningOrderEntity.setPrice(price); |
|
|
aliPaySigningOrderEntity.setPrice(price); |
|
|
|
|
|
aliPaySigningOrderEntity.setAliAccountName(aliPayAccountName); |
|
|
aliPaySigningOrderEntity.setBusinessType(1); |
|
|
aliPaySigningOrderEntity.setBusinessType(1); |
|
|
if (signUpDto.getSendApiData() != null && !Objects.equals(signUpDto.getSendApiData(), "")) { |
|
|
if (signUpDto.getSendApiData() != null && !Objects.equals(signUpDto.getSendApiData(), "")) { |
|
|
aliPaySigningOrderEntity.setSendApiData(signUpDto.getSendApiData()); |
|
|
aliPaySigningOrderEntity.setSendApiData(signUpDto.getSendApiData()); |
|
|
@ -158,19 +148,19 @@ public class AliPayController { |
|
|
|
|
|
|
|
|
@ApiOperation(value = "支付宝签约状态查询", notes = "签约成功以后前端可调用此接口查询是否签约成功") |
|
|
@ApiOperation(value = "支付宝签约状态查询", notes = "签约成功以后前端可调用此接口查询是否签约成功") |
|
|
@PostMapping("/querySign") |
|
|
@PostMapping("/querySign") |
|
|
public FResult<?> querySign(@RequestParam String externalAgreementNo) { |
|
|
public FResult<?> querySign(@RequestParam String externalAgreementNo,@RequestParam String accountName) { |
|
|
AliPayQueryPageSignReq aliPayQueryPageSignReq = new AliPayQueryPageSignReq(); |
|
|
AliPayQueryPageSignReq aliPayQueryPageSignReq = new AliPayQueryPageSignReq(); |
|
|
aliPayQueryPageSignReq.setExternalAgreementNo(externalAgreementNo); |
|
|
aliPayQueryPageSignReq.setExternalAgreementNo(externalAgreementNo); |
|
|
boolean querySign = aliPayService.querySign(aliPayQueryPageSignReq); |
|
|
boolean querySign = aliPayService.querySign(aliPayQueryPageSignReq,accountName); |
|
|
return FResult.ok(querySign); |
|
|
return FResult.ok(querySign); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ApiOperation(value = "支付宝支付状态查询", notes = "代扣以后可调用此接口查询是否成功") |
|
|
@ApiOperation(value = "支付宝支付状态查询", notes = "代扣以后可调用此接口查询是否成功") |
|
|
@PostMapping("/queryOrder") |
|
|
@PostMapping("/queryOrder") |
|
|
public FResult<?> queryOrder(@RequestParam String outTradeNo) { |
|
|
public FResult<?> queryOrder(@RequestParam String outTradeNo,@RequestParam String accountName) { |
|
|
AliPayTradeQueryReq aliPayTradeQueryReq = new AliPayTradeQueryReq(); |
|
|
AliPayTradeQueryReq aliPayTradeQueryReq = new AliPayTradeQueryReq(); |
|
|
aliPayTradeQueryReq.setOutTradeNo(outTradeNo); |
|
|
aliPayTradeQueryReq.setOutTradeNo(outTradeNo); |
|
|
boolean queryOrder = aliPayService.queryOrder(aliPayTradeQueryReq); |
|
|
boolean queryOrder = aliPayService.queryOrder(aliPayTradeQueryReq, accountName); |
|
|
return FResult.ok(queryOrder); |
|
|
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 * * ?")
|
|
|
//@Scheduled(cron = "0 0 8,20 * * ?")
|
|
|
|
|
|
|
|
|
@ -296,9 +311,12 @@ public class AliPayController { |
|
|
* @return |
|
|
* @return |
|
|
*/ |
|
|
*/ |
|
|
public String signNotify(Map<String, String> inMap) { |
|
|
public String signNotify(Map<String, String> inMap) { |
|
|
|
|
|
|
|
|
log.info("===========================我是签约回调============================"); |
|
|
log.info("===========================我是签约回调============================"); |
|
|
//log.info("支付宝签约回调开始:request{}", JSON.toJSONString(inMap));
|
|
|
//log.info("支付宝签约回调开始:request{}", JSON.toJSONString(inMap));
|
|
|
try { |
|
|
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); |
|
|
boolean signVerified = AlipaySignature.certVerifyV1(inMap, certAlipayRequest.getAlipayPublicCertPath(), AlipayConstants.CHARSET_UTF8, AlipayConstants.SIGN_TYPE_RSA2); |
|
|
if (signVerified) { |
|
|
if (signVerified) { |
|
|
@ -350,7 +368,7 @@ public class AliPayController { |
|
|
log.info("支付宝签约修改结果:==========================================================" + b); |
|
|
log.info("支付宝签约修改结果:==========================================================" + b); |
|
|
|
|
|
|
|
|
//进行扣款
|
|
|
//进行扣款
|
|
|
aliPayService.aliPayTradePayByAgreement(payInOrderByAgreementReq,aliPaySigningOrder); |
|
|
aliPayService.aliPayTradePayByAgreement(payInOrderByAgreementReq, aliPaySigningOrder,certAlipayRequest); |
|
|
} else { |
|
|
} else { |
|
|
//修改订单状态为失败
|
|
|
//修改订单状态为失败
|
|
|
aliPaySigningOrder.setStatus(0); |
|
|
aliPaySigningOrder.setStatus(0); |
|
|
@ -404,6 +422,8 @@ public class AliPayController { |
|
|
public String agreementNotify(@RequestBody Map<String, String> inMap) { |
|
|
public String agreementNotify(@RequestBody Map<String, String> inMap) { |
|
|
log.info("支付宝代扣回调开始:request{}" + JSON.toJSONString(inMap)); |
|
|
log.info("支付宝代扣回调开始:request{}" + JSON.toJSONString(inMap)); |
|
|
try { |
|
|
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); |
|
|
boolean signVerified = AlipaySignature.certVerifyV1(inMap, certAlipayRequest.getAlipayPublicCertPath(), AlipayConstants.CHARSET_UTF8, AlipayConstants.SIGN_TYPE_RSA2); |
|
|
if (signVerified) { |
|
|
if (signVerified) { |
|
|
@ -464,6 +484,7 @@ public class AliPayController { |
|
|
aliPayOrderEntity.setBusinessType(aliPaySigningOrderEntity.getBusinessType()); |
|
|
aliPayOrderEntity.setBusinessType(aliPaySigningOrderEntity.getBusinessType()); |
|
|
aliPayOrderEntity.setLinkId(aliPaySigningOrderEntity.getLinkId()); |
|
|
aliPayOrderEntity.setLinkId(aliPaySigningOrderEntity.getLinkId()); |
|
|
aliPayOrderEntity.setLinkName(aliPaySigningOrderEntity.getLinkName()); |
|
|
aliPayOrderEntity.setLinkName(aliPaySigningOrderEntity.getLinkName()); |
|
|
|
|
|
aliPayOrderEntity.setAliAccountName(aliPaySigningOrderEntity.getAliAccountName()); |
|
|
aliPayOrderEntity.setOrderName("惠点联合会员"); |
|
|
aliPayOrderEntity.setOrderName("惠点联合会员"); |
|
|
if ("TRADE_SUCCESS".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus)) { |
|
|
if ("TRADE_SUCCESS".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus)) { |
|
|
aliPayOrderEntity.setStatus(1); |
|
|
aliPayOrderEntity.setStatus(1); |
|
|
|