diff --git a/cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/alipay/service/impl/AliPayServiceImpl.java b/cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/alipay/service/impl/AliPayServiceImpl.java index 9c9cd07..bf25c66 100644 --- a/cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/alipay/service/impl/AliPayServiceImpl.java +++ b/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 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 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 refundBond(String project, String transactionId, String outRefundNo, BigDecimal total, BigDecimal refund) throws CoBusinessException, Exception { + CereBusinessAlipay businessAlipay = businessAlipayService.getByBusinessId(Long.valueOf(project)); Map 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(); diff --git a/cereshop-app/src/main/java/com/shop/cereshop/app/dao/balipay/CereBusinessAlipayDao.java b/cereshop-app/src/main/java/com/shop/cereshop/app/dao/balipay/CereBusinessAlipayDao.java new file mode 100644 index 0000000..180b7a9 --- /dev/null +++ b/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 getByBusinessId(@Param("businessId") Long businessId); + +} diff --git a/cereshop-app/src/main/java/com/shop/cereshop/app/pay/alipay/service/impl/AliPayServiceImpl.java b/cereshop-app/src/main/java/com/shop/cereshop/app/pay/alipay/service/impl/AliPayServiceImpl.java index 16894ad..234c656 100644 --- a/cereshop-app/src/main/java/com/shop/cereshop/app/pay/alipay/service/impl/AliPayServiceImpl.java +++ b/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 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 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 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 + "\"," + diff --git a/cereshop-app/src/main/java/com/shop/cereshop/app/pay/weixin/service/impl/WxPayServiceImpl.java b/cereshop-app/src/main/java/com/shop/cereshop/app/pay/weixin/service/impl/WxPayServiceImpl.java index 7dad4ad..801f783 100644 --- a/cereshop-app/src/main/java/com/shop/cereshop/app/pay/weixin/service/impl/WxPayServiceImpl.java +++ b/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 refundWithV3(String transactionId, String outRefundNo, BigDecimal total, BigDecimal refund) throws Exception { + String businessId = ContextUtil.getProject(); log.info(" orderRefund refundWithV3 {}, {}, {}, {}", transactionId, outRefundNo, total, refund); Map 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(){ { 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); //用户标识 diff --git a/cereshop-app/src/main/java/com/shop/cereshop/app/service/balipay/CereBusinessAlipayService.java b/cereshop-app/src/main/java/com/shop/cereshop/app/service/balipay/CereBusinessAlipayService.java new file mode 100644 index 0000000..085fc0f --- /dev/null +++ b/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; +} diff --git a/cereshop-app/src/main/java/com/shop/cereshop/app/service/balipay/impl/CereBusinessAlipayServiceImpl.java b/cereshop-app/src/main/java/com/shop/cereshop/app/service/balipay/impl/CereBusinessAlipayServiceImpl.java new file mode 100644 index 0000000..075b8c2 --- /dev/null +++ b/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); + } +} diff --git a/cereshop-app/src/main/resources/mybatis/mapper/ballipay/CereBusinessAlipayDAO.xml b/cereshop-app/src/main/resources/mybatis/mapper/ballipay/CereBusinessAlipayDAO.xml new file mode 100644 index 0000000..ee7fbc9 --- /dev/null +++ b/cereshop-app/src/main/resources/mybatis/mapper/ballipay/CereBusinessAlipayDAO.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + diff --git a/cereshop-business/src/main/java/com/shop/cereshop/business/dao/balipay/CereBusinessAlipayDao.java b/cereshop-business/src/main/java/com/shop/cereshop/business/dao/balipay/CereBusinessAlipayDao.java new file mode 100644 index 0000000..d91cbed --- /dev/null +++ b/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 getByBusinessId(@Param("businessId") Long businessId); + +} diff --git a/cereshop-business/src/main/java/com/shop/cereshop/business/pay/alipay/service/impl/AliPayServiceImpl.java b/cereshop-business/src/main/java/com/shop/cereshop/business/pay/alipay/service/impl/AliPayServiceImpl.java index 6273257..157f158 100644 --- a/cereshop-business/src/main/java/com/shop/cereshop/business/pay/alipay/service/impl/AliPayServiceImpl.java +++ b/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 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 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 orderRefund(String project, String orderFormId, String outTradeNo, String transactionId, String outRefundNo, BigDecimal total, BigDecimal refund) throws CoBusinessException, Exception { Map 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()); diff --git a/cereshop-business/src/main/java/com/shop/cereshop/business/pay/balipay/CereBusinessAlipayService.java b/cereshop-business/src/main/java/com/shop/cereshop/business/pay/balipay/CereBusinessAlipayService.java new file mode 100644 index 0000000..45177b6 --- /dev/null +++ b/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; +} diff --git a/cereshop-business/src/main/java/com/shop/cereshop/business/pay/balipay/impl/CereBusinessAlipayServiceImpl.java b/cereshop-business/src/main/java/com/shop/cereshop/business/pay/balipay/impl/CereBusinessAlipayServiceImpl.java new file mode 100644 index 0000000..33fcf76 --- /dev/null +++ b/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); + } +} diff --git a/cereshop-business/src/main/resources/mybatis/mapper/ballipay/CereBusinessAlipayDAO.xml b/cereshop-business/src/main/resources/mybatis/mapper/ballipay/CereBusinessAlipayDAO.xml new file mode 100644 index 0000000..fa81404 --- /dev/null +++ b/cereshop-business/src/main/resources/mybatis/mapper/ballipay/CereBusinessAlipayDAO.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + diff --git a/cereshop-commons/src/main/java/com/shop/cereshop/commons/config/AlipayConfig.java b/cereshop-commons/src/main/java/com/shop/cereshop/commons/config/AlipayConfig.java index bd62cfa..1ceb76f 100644 --- a/cereshop-commons/src/main/java/com/shop/cereshop/commons/config/AlipayConfig.java +++ b/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 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) {