Browse Source

1.平台端支付宝支付业务逻辑新增动态获取商家微信支付配置信息处理 2.PC端支付宝支付业务逻辑新增动态获取商家微信支付配置信息处理

multiwx
dy-hu 2 weeks ago
parent
commit
777a6aca94
  1. 12
      cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/alipay/service/impl/AliPayServiceImpl.java
  2. 20
      cereshop-app/src/main/java/com/shop/cereshop/app/dao/balipay/CereBusinessAlipayDao.java
  3. 25
      cereshop-app/src/main/java/com/shop/cereshop/app/pay/alipay/service/impl/AliPayServiceImpl.java
  4. 11
      cereshop-app/src/main/java/com/shop/cereshop/app/pay/weixin/service/impl/WxPayServiceImpl.java
  5. 19
      cereshop-app/src/main/java/com/shop/cereshop/app/service/balipay/CereBusinessAlipayService.java
  6. 40
      cereshop-app/src/main/java/com/shop/cereshop/app/service/balipay/impl/CereBusinessAlipayServiceImpl.java
  7. 18
      cereshop-app/src/main/resources/mybatis/mapper/ballipay/CereBusinessAlipayDAO.xml
  8. 20
      cereshop-business/src/main/java/com/shop/cereshop/business/dao/balipay/CereBusinessAlipayDao.java
  9. 22
      cereshop-business/src/main/java/com/shop/cereshop/business/pay/alipay/service/impl/AliPayServiceImpl.java
  10. 19
      cereshop-business/src/main/java/com/shop/cereshop/business/pay/balipay/CereBusinessAlipayService.java
  11. 40
      cereshop-business/src/main/java/com/shop/cereshop/business/pay/balipay/impl/CereBusinessAlipayServiceImpl.java
  12. 18
      cereshop-business/src/main/resources/mybatis/mapper/ballipay/CereBusinessAlipayDAO.xml
  13. 46
      cereshop-commons/src/main/java/com/shop/cereshop/commons/config/AlipayConfig.java

12
cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/alipay/service/impl/AliPayServiceImpl.java

@ -11,11 +11,14 @@ import com.alipay.api.domain.AlipayTradeRefundApplyModel;
import com.alipay.api.request.AlipayTradeRefundRequest;
import com.alipay.api.response.AlipayTradeRefundResponse;
import com.shop.cereshop.admin.pay.alipay.service.AliPayService;
import com.shop.cereshop.admin.service.balipay.CereBusinessAlipayService;
import com.shop.cereshop.commons.config.AlipayConfig;
import com.shop.cereshop.commons.constant.CoReturnFormat;
import com.shop.cereshop.commons.constant.WxPayEnum;
import com.shop.cereshop.commons.domain.balipay.CereBusinessAlipay;
import com.shop.cereshop.commons.exception.CoBusinessException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@ -26,11 +29,15 @@ import java.util.Map;
@Slf4j(topic = "AliPayServiceImpl")
public class AliPayServiceImpl implements AliPayService {
@Autowired
private CereBusinessAlipayService businessAlipayService;
@Override
public Map<String, String> refund(String project, String orderFormId, String outTradeNo, String transactionId, String outRefundNo, BigDecimal total, BigDecimal refund) throws CoBusinessException, Exception {
CereBusinessAlipay businessAlipay = businessAlipayService.getByBusinessId(Long.valueOf(project));
Map<String, String> result = new HashMap<>();
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGNTYPE);
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, businessAlipay.getAppId(), businessAlipay.getPrivateKey(), AlipayConfig.FORMAT, AlipayConfig.CHARSET, businessAlipay.getPublicKey(), AlipayConfig.SIGNTYPE);
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
//request.setNotifyUrl(AlipayConfig.REFUND_NOTIFY_URL);
AlipayTradeRefundApplyModel model = new AlipayTradeRefundApplyModel();
@ -53,9 +60,10 @@ public class AliPayServiceImpl implements AliPayService {
@Override
public Map<String, String> refundBond(String project, String transactionId, String outRefundNo, BigDecimal total, BigDecimal refund) throws CoBusinessException, Exception {
CereBusinessAlipay businessAlipay = businessAlipayService.getByBusinessId(Long.valueOf(project));
Map<String, String> result = new HashMap<>();
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGNTYPE);
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, businessAlipay.getAppId(), businessAlipay.getPrivateKey(), AlipayConfig.FORMAT, AlipayConfig.CHARSET, businessAlipay.getPublicKey(), AlipayConfig.SIGNTYPE);
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
//request.setNotifyUrl(AlipayConfig.REFUND_NOTIFY_URL);
AlipayTradeRefundApplyModel model = new AlipayTradeRefundApplyModel();

20
cereshop-app/src/main/java/com/shop/cereshop/app/dao/balipay/CereBusinessAlipayDao.java

@ -0,0 +1,20 @@
package com.shop.cereshop.app.dao.balipay;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.shop.cereshop.commons.domain.balipay.CereBusinessAlipay;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/20 11:49
*/
@Mapper
public interface CereBusinessAlipayDao extends BaseMapper<CereBusinessAlipay> {
CereBusinessAlipay getByBusinessId(@Param("businessId") Long businessId);
}

25
cereshop-app/src/main/java/com/shop/cereshop/app/pay/alipay/service/impl/AliPayServiceImpl.java

@ -19,12 +19,16 @@ import com.alipay.api.response.AlipayTradePrecreateResponse;
import com.alipay.api.response.AlipayTradeRefundResponse;
import com.alipay.api.response.AlipayTradeWapPayResponse;
import com.shop.cereshop.app.pay.alipay.service.AliPayService;
import com.shop.cereshop.app.service.balipay.CereBusinessAlipayService;
import com.shop.cereshop.app.utils.ContextUtil;
import com.shop.cereshop.commons.config.AlipayConfig;
import com.shop.cereshop.commons.constant.CoReturnFormat;
import com.shop.cereshop.commons.constant.WxPayEnum;
import com.shop.cereshop.commons.domain.balipay.CereBusinessAlipay;
import com.shop.cereshop.commons.exception.CoBusinessException;
import com.shop.cereshop.commons.utils.RandomStringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@ -36,6 +40,9 @@ import java.util.UUID;
@Slf4j(topic = "AliPayServiceImpl")
public class AliPayServiceImpl implements AliPayService {
@Autowired
private CereBusinessAlipayService businessAlipayService;
/**
* 支付小程序appid
@ -64,9 +71,9 @@ public class AliPayServiceImpl implements AliPayService {
//设置网关地址
certAlipayRequest.setServerUrl(AlipayConfig.URL);
//设置应用Id
certAlipayRequest.setAppId(AlipayConfig.APPID);
certAlipayRequest.setAppId("appId");
//设置应用私钥
certAlipayRequest.setPrivateKey(AlipayConfig.RSA_PRIVATE_KEY);
certAlipayRequest.setPrivateKey("privateKey");
//设置请求格式固定值json
certAlipayRequest.setFormat(AlipayConfig.FORMAT);
//设置字符集
@ -120,11 +127,14 @@ public class AliPayServiceImpl implements AliPayService {
@Override
public Map<String, String> gotoPay(String orderFormId, BigDecimal money, String openId, String ip, Integer type, Integer huabeiPeriod) throws CoBusinessException, Exception {
String businessId = ContextUtil.getProject();
CereBusinessAlipay businessAlipay = businessAlipayService.getByBusinessId(Long.valueOf(businessId));
String outTradeNo = "";
String subject = "通用下单";
outTradeNo=orderFormId+"-"+ RandomStringUtil.getRandomCode(3,0)+"XCX";
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGNTYPE);
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, businessAlipay.getAppId(), businessAlipay.getPrivateKey(), AlipayConfig.FORMAT, AlipayConfig.CHARSET, businessAlipay.getPublicKey(), AlipayConfig.SIGNTYPE);
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称alipay.trade.create.
AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
request.setNotifyUrl(AlipayConfig.APP_NOTIFY_URL);
@ -163,9 +173,11 @@ public class AliPayServiceImpl implements AliPayService {
@Override
public Map<String, String> orderRefund(String outTradeNo, String transactionId, String outRefundNo, BigDecimal total, BigDecimal refund) throws CoBusinessException, Exception {
String businessId = ContextUtil.getProject();
CereBusinessAlipay businessAlipay = businessAlipayService.getByBusinessId(Long.valueOf(businessId));
Map<String, String> result = new HashMap<>();
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGNTYPE);
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, businessAlipay.getAppId(), businessAlipay.getPrivateKey(), AlipayConfig.FORMAT, AlipayConfig.CHARSET, businessAlipay.getPublicKey(), AlipayConfig.SIGNTYPE);
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
request.setNotifyUrl(AlipayConfig.REFUND_NOTIFY_URL);
AlipayTradeRefundApplyModel model = new AlipayTradeRefundApplyModel();
@ -197,7 +209,10 @@ public class AliPayServiceImpl implements AliPayService {
@Override
public String getOrderCollectionCode(String orderFormid, BigDecimal money, String ip, String tradeType) throws CoBusinessException, Exception {
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGNTYPE);
String businessId = ContextUtil.getProject();
CereBusinessAlipay businessAlipay = businessAlipayService.getByBusinessId(Long.valueOf(businessId));
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.URL, businessAlipay.getAppId(), businessAlipay.getPrivateKey(), AlipayConfig.FORMAT, AlipayConfig.CHARSET, businessAlipay.getPublicKey(), AlipayConfig.SIGNTYPE);
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
request.setBizContent("{" +
"\"out_trade_no\":\"" + orderFormid + "\"," +

11
cereshop-app/src/main/java/com/shop/cereshop/app/pay/weixin/service/impl/WxPayServiceImpl.java

@ -178,12 +178,13 @@ public class WxPayServiceImpl implements WxPayService {
private Map<String, String> refundWithV3(String transactionId, String outRefundNo,
BigDecimal total, BigDecimal refund) throws Exception {
String businessId = ContextUtil.getProject();
log.info(" orderRefund refundWithV3 {}, {}, {}, {}", transactionId, outRefundNo,
total, refund);
Map<String, Object> params = new HashMap<>();
params.put("transaction_id", transactionId);
params.put("out_refund_no", outRefundNo);
params.put("notify_url", appV3NotifyUrl);
params.put("notify_url", appV3NotifyUrl + "/" + businessId);
params.put("amount", new HashMap<String, Object>(){
{
put("refund", refund.multiply(new BigDecimal(100)).intValue());
@ -230,7 +231,7 @@ public class WxPayServiceImpl implements WxPayService {
// 退款原因若商户传入会在下发给用户的退款消息中体现退款原因
params.put("refund_desc","退款");
//退款回调
params.put("notify_url", order_refund_notifyurl);
params.put("notify_url", order_refund_notifyurl + "/" + businessId);
//签名算法
String sign = WXPayUtil.generateSignature(params, businessWxpay.getMchKey());
params.put("sign", sign);
@ -268,7 +269,7 @@ public class WxPayServiceImpl implements WxPayService {
// 退款原因若商户传入会在下发给用户的退款消息中体现退款原因
params.put("refund_desc","退款");
//退款回调
params.put("notify_url", pc_bond_refund_notify_url);
params.put("notify_url", pc_bond_refund_notify_url + "/" + businessId);
//签名算法
String sign = WXPayUtil.generateSignature(params, businessWxpay.getMchKey());
params.put("sign", sign);
@ -307,7 +308,7 @@ public class WxPayServiceImpl implements WxPayService {
// reqParams.put("spbill_create_ip", "127.0.0.1");
reqParams.put("spbill_create_ip", ip);
//支付回调地址
reqParams.put("notify_url", pc_notify_url);
reqParams.put("notify_url", pc_notify_url + "/" + businessId);
//交易类型
reqParams.put("trade_type", tradeType);
//用户标识
@ -351,7 +352,7 @@ public class WxPayServiceImpl implements WxPayService {
// reqParams.put("spbill_create_ip", "127.0.0.1");
reqParams.put("spbill_create_ip", ip);
//支付回调地址
reqParams.put("notify_url", app_notify_url);
reqParams.put("notify_url", app_notify_url + "/" + businessId);
//交易类型
reqParams.put("trade_type", tradeType);
//用户标识

19
cereshop-app/src/main/java/com/shop/cereshop/app/service/balipay/CereBusinessAlipayService.java

@ -0,0 +1,19 @@
package com.shop.cereshop.app.service.balipay;
import com.shop.cereshop.commons.domain.balipay.CereBusinessAlipay;
import com.shop.cereshop.commons.exception.CoBusinessException;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/20 14:19
*/
public interface CereBusinessAlipayService {
void save(CereBusinessAlipay record) throws CoBusinessException;
void update(CereBusinessAlipay businessAlipay) throws CoBusinessException;
CereBusinessAlipay getByBusinessId(Long businessId) throws CoBusinessException;
}

40
cereshop-app/src/main/java/com/shop/cereshop/app/service/balipay/impl/CereBusinessAlipayServiceImpl.java

@ -0,0 +1,40 @@
package com.shop.cereshop.app.service.balipay.impl;
import com.shop.cereshop.app.dao.balipay.CereBusinessAlipayDao;
import com.shop.cereshop.app.service.balipay.CereBusinessAlipayService;
import com.shop.cereshop.commons.domain.balipay.CereBusinessAlipay;
import com.shop.cereshop.commons.exception.CoBusinessException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/20 14:21
*/
@Service
public class CereBusinessAlipayServiceImpl implements CereBusinessAlipayService {
@Autowired
private CereBusinessAlipayDao cereBusinessAlipayDao;
@Override
@Transactional(isolation= Isolation.DEFAULT,propagation= Propagation.REQUIRED,rollbackFor = {CoBusinessException.class, Exception.class})
public void save(CereBusinessAlipay record) throws CoBusinessException {
cereBusinessAlipayDao.insert(record);
}
@Override
public void update(CereBusinessAlipay businessAlipay) throws CoBusinessException {
cereBusinessAlipayDao.updateById(businessAlipay);
}
@Override
public CereBusinessAlipay getByBusinessId(Long businessId) throws CoBusinessException {
return cereBusinessAlipayDao.getByBusinessId(businessId);
}
}

18
cereshop-app/src/main/resources/mybatis/mapper/ballipay/CereBusinessAlipayDAO.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.shop.cereshop.app.dao.balipay.CereBusinessAlipayDao">
<resultMap id="BaseResultMap" type="com.shop.cereshop.commons.domain.balipay.CereBusinessAlipay">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="business_id" jdbcType="BIGINT" property="businessId" />
<result column="app_id" jdbcType="VARCHAR" property="appId" />
<result column="private_key" jdbcType="VARCHAR" property="privateKey" />
<result column="decry_key" jdbcType="VARCHAR" property="decryKey" />
<result column="public_key" jdbcType="VARCHAR" property="publicKey" />
<result column="gateway_url" jdbcType="VARCHAR" property="gatewayUrl" />
</resultMap>
<select id="getByBusinessId" parameterType="java.lang.Object" resultType="com.shop.cereshop.commons.domain.balipay.CereBusinessAlipay">
SELECT * FROM cere_business_alipay where business_id = #{businessId}
</select>
</mapper>

20
cereshop-business/src/main/java/com/shop/cereshop/business/dao/balipay/CereBusinessAlipayDao.java

@ -0,0 +1,20 @@
package com.shop.cereshop.business.dao.balipay;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.shop.cereshop.commons.domain.balipay.CereBusinessAlipay;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/20 11:49
*/
@Mapper
public interface CereBusinessAlipayDao extends BaseMapper<CereBusinessAlipay> {
CereBusinessAlipay getByBusinessId(@Param("businessId") Long businessId);
}

22
cereshop-business/src/main/java/com/shop/cereshop/business/pay/alipay/service/impl/AliPayServiceImpl.java

@ -14,11 +14,13 @@ import com.alipay.api.request.AlipayTradeRefundRequest;
import com.alipay.api.response.AlipayTradePrecreateResponse;
import com.alipay.api.response.AlipayTradeRefundResponse;
import com.shop.cereshop.business.pay.alipay.service.AliPayService;
import com.shop.cereshop.business.pay.balipay.CereBusinessAlipayService;
import com.shop.cereshop.commons.config.AlipayConfig;
import com.shop.cereshop.commons.constant.CoReturnFormat;
import com.shop.cereshop.commons.constant.IntegerEnum;
import com.shop.cereshop.commons.constant.StringEnum;
import com.shop.cereshop.commons.constant.WxPayEnum;
import com.shop.cereshop.commons.domain.balipay.CereBusinessAlipay;
import com.shop.cereshop.commons.domain.order.CereOrderReconciliation;
import com.shop.cereshop.commons.domain.order.CereShopOrder;
import com.shop.cereshop.commons.domain.pay.CerePayLog;
@ -26,6 +28,7 @@ import com.shop.cereshop.commons.exception.CoBusinessException;
import com.shop.cereshop.commons.utils.RandomStringUtil;
import com.shop.cereshop.commons.utils.TimeUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@ -36,13 +39,17 @@ import java.util.Map;
@Slf4j(topic = "AliPayServiceImpl")
public class AliPayServiceImpl implements AliPayService {
@Autowired
private CereBusinessAlipayService businessAlipayService;
@Override
public Map<String, String> refund(String project, String orderFormId, String outTradeNo, String transactionId, String outRefundNo, BigDecimal total, BigDecimal refund, Long afterId) throws CoBusinessException, Exception {
CereBusinessAlipay businessAlipay = businessAlipayService.getByBusinessId(Long.valueOf(project));
Map<String, String> result = new HashMap<>();
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGNTYPE);
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, businessAlipay.getAppId(), businessAlipay.getPrivateKey(), AlipayConfig.FORMAT, AlipayConfig.CHARSET, businessAlipay.getPublicKey(), AlipayConfig.SIGNTYPE);
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
request.setNotifyUrl(AlipayConfig.REFUND_NOTIFY_URL);
request.setNotifyUrl(AlipayConfig.REFUND_NOTIFY_URL + "/" + project );
AlipayTradeRefundApplyModel model = new AlipayTradeRefundApplyModel();
model.setOutTradeNo(outTradeNo);
if (!total.equals(refund)) {
@ -67,9 +74,11 @@ public class AliPayServiceImpl implements AliPayService {
@Override
public String getCollectionCode(Long businessId, String orderFormid, BigDecimal money, String ip, String tradeType) throws CoBusinessException, Exception {
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGNTYPE);
CereBusinessAlipay businessAlipay = businessAlipayService.getByBusinessId(businessId);
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, businessAlipay.getAppId(), businessAlipay.getPrivateKey(), AlipayConfig.FORMAT, AlipayConfig.CHARSET, businessAlipay.getPublicKey(), AlipayConfig.SIGNTYPE);
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
request.setNotifyUrl(AlipayConfig.BOND_NOTIFY_URL);
request.setNotifyUrl(AlipayConfig.BOND_NOTIFY_URL + "/" + businessId);
AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();
//生成一个新的订单支付编号
String outTradeNo=orderFormid+"-"+ RandomStringUtil.getRandomCode(3,0);
@ -90,10 +99,11 @@ public class AliPayServiceImpl implements AliPayService {
@Override
public Map<String, String> orderRefund(String project, String orderFormId, String outTradeNo, String transactionId, String outRefundNo, BigDecimal total, BigDecimal refund) throws CoBusinessException, Exception {
Map<String, String> result = new HashMap<>();
CereBusinessAlipay businessAlipay = businessAlipayService.getByBusinessId(Long.valueOf(project));
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGNTYPE);
AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, businessAlipay.getAppId(), businessAlipay.getPrivateKey(), AlipayConfig.FORMAT, AlipayConfig.CHARSET, businessAlipay.getPublicKey(), AlipayConfig.SIGNTYPE);
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
request.setNotifyUrl(AlipayConfig.REFUND_NOTIFY_URL);
request.setNotifyUrl(AlipayConfig.REFUND_NOTIFY_URL + "/" + project);
AlipayTradeRefundApplyModel model = new AlipayTradeRefundApplyModel();
model.setTradeNo(transactionId);
model.setRefundAmount(refund.toString());

19
cereshop-business/src/main/java/com/shop/cereshop/business/pay/balipay/CereBusinessAlipayService.java

@ -0,0 +1,19 @@
package com.shop.cereshop.business.pay.balipay;
import com.shop.cereshop.commons.domain.balipay.CereBusinessAlipay;
import com.shop.cereshop.commons.exception.CoBusinessException;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/20 14:19
*/
public interface CereBusinessAlipayService {
void save(CereBusinessAlipay record) throws CoBusinessException;
void update(CereBusinessAlipay businessAlipay) throws CoBusinessException;
CereBusinessAlipay getByBusinessId(Long businessId) throws CoBusinessException;
}

40
cereshop-business/src/main/java/com/shop/cereshop/business/pay/balipay/impl/CereBusinessAlipayServiceImpl.java

@ -0,0 +1,40 @@
package com.shop.cereshop.business.pay.balipay.impl;
import com.shop.cereshop.business.dao.balipay.CereBusinessAlipayDao;
import com.shop.cereshop.business.pay.balipay.CereBusinessAlipayService;
import com.shop.cereshop.commons.domain.balipay.CereBusinessAlipay;
import com.shop.cereshop.commons.exception.CoBusinessException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/20 14:21
*/
@Service
public class CereBusinessAlipayServiceImpl implements CereBusinessAlipayService {
@Autowired
private CereBusinessAlipayDao cereBusinessAlipayDao;
@Override
@Transactional(isolation= Isolation.DEFAULT,propagation= Propagation.REQUIRED,rollbackFor = {CoBusinessException.class, Exception.class})
public void save(CereBusinessAlipay record) throws CoBusinessException {
cereBusinessAlipayDao.insert(record);
}
@Override
public void update(CereBusinessAlipay businessAlipay) throws CoBusinessException {
cereBusinessAlipayDao.updateById(businessAlipay);
}
@Override
public CereBusinessAlipay getByBusinessId(Long businessId) throws CoBusinessException {
return cereBusinessAlipayDao.getByBusinessId(businessId);
}
}

18
cereshop-business/src/main/resources/mybatis/mapper/ballipay/CereBusinessAlipayDAO.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.shop.cereshop.business.dao.balipay.CereBusinessAlipayDao">
<resultMap id="BaseResultMap" type="com.shop.cereshop.commons.domain.balipay.CereBusinessAlipay">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="business_id" jdbcType="BIGINT" property="businessId" />
<result column="app_id" jdbcType="VARCHAR" property="appId" />
<result column="private_key" jdbcType="VARCHAR" property="privateKey" />
<result column="decry_key" jdbcType="VARCHAR" property="decryKey" />
<result column="public_key" jdbcType="VARCHAR" property="publicKey" />
<result column="gateway_url" jdbcType="VARCHAR" property="gatewayUrl" />
</resultMap>
<select id="getByBusinessId" parameterType="java.lang.Object" resultType="com.shop.cereshop.commons.domain.balipay.CereBusinessAlipay">
SELECT * FROM cere_business_alipay where business_id = #{businessId}
</select>
</mapper>

46
cereshop-commons/src/main/java/com/shop/cereshop/commons/config/AlipayConfig.java

@ -16,16 +16,16 @@ import java.util.List;
public class AlipayConfig {
// 应用appid
public static String APPID;
//public static String APPID;
// 应用私钥
public static String RSA_PRIVATE_KEY;
//public static String RSA_PRIVATE_KEY;
// 接口内容解密key
public static String DECRYPT_KEY;
//public static String DECRYPT_KEY;
// 支付宝公钥
public static String ALIPAY_PUBLIC_KEY;
//public static String ALIPAY_PUBLIC_KEY;
// 页面跳转同步通知页面路径 需http://或者https://格式的完整路径不能加?id=123这类自定义参数必须外网可以正常访问 商户可以自定义同步跳转地址
public static String REDIRECT_URL;
@ -45,25 +45,25 @@ public class AlipayConfig {
// 花呗手续费比例列表 3期 6期 12期
public static List<Double> HUABEI_FEERATE_LIST;
@Value("${alipay.appid}")
public void setAppId(String appId) {
this.APPID = appId;
}
@Value("${alipay.rsa_private_key}")
public void setRsaPrivateKey(String rsaPrivateKey) {
this.RSA_PRIVATE_KEY = rsaPrivateKey;
}
@Value("${alipay.decrypt_key}")
public void setDecryptKey(String decryptKey) {
this.DECRYPT_KEY = decryptKey;
}
@Value("${alipay.alipay_public_key}")
public void setAlipayPublicKey(String alipayPublicKey) {
this.ALIPAY_PUBLIC_KEY = alipayPublicKey;
}
// @Value("${alipay.appid}")
// public void setAppId(String appId) {
// this.APPID = appId;
// }
// @Value("${alipay.rsa_private_key}")
// public void setRsaPrivateKey(String rsaPrivateKey) {
// this.RSA_PRIVATE_KEY = rsaPrivateKey;
// }
// @Value("${alipay.decrypt_key}")
// public void setDecryptKey(String decryptKey) {
// this.DECRYPT_KEY = decryptKey;
// }
// @Value("${alipay.alipay_public_key}")
// public void setAlipayPublicKey(String alipayPublicKey) {
// this.ALIPAY_PUBLIC_KEY = alipayPublicKey;
// }
@Value("${alipay.redirect_url}")
public void setRedirectUrl(String redirectUrl) {

Loading…
Cancel
Save