Commit 7ca756a2344f16dff39977bfd7479f3361e0dfac
1 parent
24f4fd4f
引入支付宝的支付功能
Showing
14 changed files
with
173 additions
and
59 deletions
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsTemplateServiceImpl.java
| @@ -33,7 +33,7 @@ import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeCons | @@ -33,7 +33,7 @@ import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeCons | ||
| 33 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 33 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 34 | 34 | ||
| 35 | /** | 35 | /** |
| 36 | - * 短信模板Service实现类 | 36 | + * 短信模板 Service 实现类 |
| 37 | * | 37 | * |
| 38 | * @author zzf | 38 | * @author zzf |
| 39 | * @date 2021/1/25 9:25 | 39 | * @date 2021/1/25 9:25 |
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/PayClient.java
0 → 100644
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/PayClientConfig.java
0 → 100644
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/aop/package-info.java deleted
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/AbstractPayClient.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.pay.core.client; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.pay.core.PayClient; | ||
| 4 | +import com.alipay.api.DefaultAlipayClient; | ||
| 5 | + | ||
| 6 | +/** | ||
| 7 | + * 支付客户端的抽象类,提供模板方法,减少子类的冗余代码 | ||
| 8 | + * | ||
| 9 | + * @author 芋道源码 | ||
| 10 | + */ | ||
| 11 | +public abstract class AbstractPayClient implements PayClient { | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | +} |
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/alipay/AlipayPayClient.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.pay.core.client.alipay; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 4 | +import cn.iocoder.yudao.framework.pay.core.client.AbstractPayClient; | ||
| 5 | +import com.alipay.api.AlipayApiException; | ||
| 6 | +import com.alipay.api.DefaultAlipayClient; | ||
| 7 | +import com.alipay.api.domain.AlipayTradePrecreateModel; | ||
| 8 | +import com.alipay.api.request.AlipayTradePrecreateRequest; | ||
| 9 | +import com.alipay.api.response.AlipayTradePrecreateResponse; | ||
| 10 | + | ||
| 11 | +/** | ||
| 12 | + * 支付宝的 PayClient 实现类 | ||
| 13 | + */ | ||
| 14 | +public class AlipayPayClient extends AbstractPayClient { | ||
| 15 | + | ||
| 16 | + private DefaultAlipayClient client = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do","2021000118634035","MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCHsEV1cDupwJv890x84qbppUtRIfhaKSwSVN0thCcsDCaAsGR5MZslDkO8NCT9V4r2SVXjyY7eJUZlZd1M0C8T01Tg4UOx5LUbic0O3A1uJMy6V1n9IyYwbAW3AEZhBd5bSbPgrqvmv3NeWSTQT6Anxnllf+2iDH6zyA2fPl7cYyQtbZoDJQFGqr4F+cGh2R6akzRKNoBkAeMYwoY6es2lX8sJxCVPWUmxNUoL3tScwlSpd7Bxw0q9c/X01jMwuQ0+Va358zgFiGERTE6yD01eu40OBDXOYO3z++y+TAYHlQQ2toMO63trepo88X3xV3R44/1DH+k2pAm2IF5ixiLrAgMBAAECggEAPx3SoXcseaD7rmcGcE0p4SMfbsUDdkUSmBBbtfF0GzwnqNLkWa+mgE0rWt9SmXngTQH97vByAYmLPl1s3G82ht1V7Sk7yQMe74lhFllr8eEyTjeVx3dTK1EEM4TwN+936DTXdFsr4TELJEcJJdD0KaxcCcfBLRDs2wnitEFZ9N+GoZybVmY8w0e0MI7PLObUZ2l0X4RurQnfG9ZxjXjC7PkeMVv7cGGylpNFi3BbvkRhdhLPDC2E6wqnr9e7zk+hiENivAezXrtxtwKovzCtnWJ1r0IO14Rh47H509Ic0wFnj+o5YyUL4LdmpL7yaaH6fM7zcSLFjNZPHvZCKPwYcQKBgQDQFho98QvnL8ex4v6cry4VitGpjSXm1qP3vmMQk4rTsn8iPWtcxPjqGEqOQJjdi4Mi0VZKQOLFwlH0kl95wNrD/isJ4O1yeYfX7YAXApzHqYNINzM79HemO3Yx1qLMW3okRFJ9pPRzbQ9qkTpsaegsmyX316zOBhzGRYjKbutTYwKBgQCm7phr9XdFW5Vh+XR90mVs483nrLmMiDKg7YKxSLJ8amiDjzPejCn7i95Hah08P+2MIZLIPbh2VLacczR6ltRRzN5bg5etFuqSgfkuHyxpoDmpjbe08+Q2h8JBYqcC5Nhv1AKU4iOUhVLHo/FBAQliMcGc/J3eiYTFC7EsNx382QKBgClb20doe7cttgFTXswBvaUmfFm45kmla924B7SpvrQpDD/f+VDtDZRp05fGmxuduSjYdtA3aVtpLiTwWu22OUUvZZqHDGruYOO4Hvdz23mL5b4ayqImCwoNU4bAZIc9v18p/UNf3/55NNE3oGcf/bev9rH2OjCQ4nM+Ktwhg8CFAoGACSgvbkShzUkv0ZcIf9ppu+ZnJh1AdGgINvGwaJ8vQ0nm/8h8NOoFZ4oNoGc+wU5Ubops7dUM6FjPR5e+OjdJ4E7Xp7d5O4J1TaIZlCEbo5OpdhaTDDcQvrkFu+Z4eN0qzj+YAKjDAOOrXc4tbr5q0FsgXscwtcNfaBuzFVTUrUkCgYEAwzPnMNhWG3zOWLUs2QFA2GP4Y+J8cpUYfj6pbKKzeLwyG9qBwF1NJpN8m+q9q7V9P2LY+9Lp9e1mGsGeqt5HMEA3P6vIpcqLJLqE/4PBLLRzfccTcmqb1m71+erxTRhHBRkGS+I7dZEb3olQfnS1Y1tpMBxiwYwR3LW4oXuJwj8=","json","utf-8","MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnq90KnF4dTnlzzmxpujbI05OYqi5WxAS6cL0gnZFv2gK51HExF8v/BaP7P979PhFMgWTqmOOI+Dtno5s+yD09XTY1WkshbLk6i4g2Xlr8fyW9ODnkU88RI2w9UdPhQU4cPPwBNlrsYhKkVK2OxwM3kFqjoBBY0CZoZCsSQ3LDH5WeZqPArlsS6xa2zqJBuuoKjMrdpELl3eXSjP8K54eDJCbeetCZNKWLL3DPahTPB7LZikfYmslb0QUvCgGapD0xkS7eVq70NaL1G57MWABs4tbfWgxike4Daj3EfUrzIVspQxj7w8HEj9WozJPgL88kSJSits0pqD3n5r8HSuseQIDAQAB","RSA2"); | ||
| 17 | + | ||
| 18 | + @Override | ||
| 19 | + public CommonResult<String> unifiedOrder() { | ||
| 20 | + AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest(); | ||
| 21 | + AlipayTradePrecreateModel model = new AlipayTradePrecreateModel(); | ||
| 22 | + request.setBizModel(model); | ||
| 23 | + model.setOutTradeNo(String.valueOf(System.currentTimeMillis())); | ||
| 24 | + model.setTotalAmount("88.88"); | ||
| 25 | + model.setSubject("Iphone6 16G"); | ||
| 26 | + AlipayTradePrecreateResponse response = null; | ||
| 27 | + try { | ||
| 28 | + response = client.execute(request); | ||
| 29 | + } catch (AlipayApiException e) { | ||
| 30 | + e.printStackTrace(); | ||
| 31 | + } | ||
| 32 | + System.out.println(response.getBody()); | ||
| 33 | + System.out.println(response.getQrCode()); | ||
| 34 | + return null; | ||
| 35 | + } | ||
| 36 | + | ||
| 37 | + public static void main(String[] args) { | ||
| 38 | + AlipayPayClient client = new AlipayPayClient(); | ||
| 39 | + client.unifiedOrder(); | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | +} |
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/alipay/AlipayPayConfig.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.pay.core.client.alipay; | ||
| 2 | + | ||
| 3 | +import lombok.Data; | ||
| 4 | + | ||
| 5 | +// TODO 芋艿:参数校验 | ||
| 6 | +/** | ||
| 7 | + * 支付宝的 PayClientConfig 实现类 | ||
| 8 | + * 属性主要来自 {@link com.alipay.api.AlipayConfig} 的必要属性 | ||
| 9 | + * | ||
| 10 | + * @author 芋道源码 | ||
| 11 | + */ | ||
| 12 | +@Data | ||
| 13 | +public class AlipayPayConfig { | ||
| 14 | + | ||
| 15 | + /** | ||
| 16 | + * 网关地址 - 线上 | ||
| 17 | + */ | ||
| 18 | + private static final String SERVER_URL_PROD = "https://openapi.alipay.com/gateway.do"; | ||
| 19 | + /** | ||
| 20 | + * 网关地址 - 沙箱 | ||
| 21 | + */ | ||
| 22 | + private static final String SERVER_URL_SANDBOX = "https://openapi.alipay.com/gateway.do"; | ||
| 23 | + | ||
| 24 | + /** | ||
| 25 | + * 公钥类型 - 公钥模式 | ||
| 26 | + */ | ||
| 27 | + private static final Integer MODE_PUBLIC_KEY = 1; | ||
| 28 | + /** | ||
| 29 | + * 公钥类型 - 证书模式 | ||
| 30 | + */ | ||
| 31 | + private static final Integer MODE_CERTIFICATE = 2; | ||
| 32 | + | ||
| 33 | + /** | ||
| 34 | + * 签名算法类型 - RSA | ||
| 35 | + */ | ||
| 36 | + private static final String SIGN_TYPE_DEFAULT = "RSA2"; | ||
| 37 | + | ||
| 38 | + /** | ||
| 39 | + * 网关地址 | ||
| 40 | + * 1. {@link #SERVER_URL_PROD} | ||
| 41 | + * 2. {@link #SERVER_URL_SANDBOX} | ||
| 42 | + */ | ||
| 43 | + private String serverUrl; | ||
| 44 | + | ||
| 45 | + /** | ||
| 46 | + * 开放平台上创建的应用的 ID | ||
| 47 | + */ | ||
| 48 | + private String appId; | ||
| 49 | + | ||
| 50 | + /** | ||
| 51 | + * 签名算法类型,推荐:RSA2 | ||
| 52 | + * | ||
| 53 | + * {@link #SIGN_TYPE_DEFAULT} | ||
| 54 | + */ | ||
| 55 | + private String signType; | ||
| 56 | + | ||
| 57 | + /** | ||
| 58 | + * 公钥类型 | ||
| 59 | + * 1. {@link #MODE_PUBLIC_KEY} 情况,privateKey + alipayPublicKey | ||
| 60 | + * 2. {@link #MODE_CERTIFICATE} 情况,appCertContent + alipayPublicCertContent + rootCertContent | ||
| 61 | + */ | ||
| 62 | + private Integer mode; | ||
| 63 | + | ||
| 64 | + // ========== 公钥模式 ========== | ||
| 65 | + /** | ||
| 66 | + * 商户私钥 | ||
| 67 | + */ | ||
| 68 | + private String privateKey; | ||
| 69 | + /** | ||
| 70 | + * 支付宝公钥字符串 | ||
| 71 | + */ | ||
| 72 | + private String alipayPublicKey; | ||
| 73 | + | ||
| 74 | + // ========== 证书模式 ========== | ||
| 75 | + /** | ||
| 76 | + * 指定商户公钥应用证书内容字符串 | ||
| 77 | + */ | ||
| 78 | + private String appCertContent; | ||
| 79 | + /** | ||
| 80 | + * 指定支付宝公钥证书内容字符串 | ||
| 81 | + */ | ||
| 82 | + private String alipayPublicCertContent; | ||
| 83 | + /** | ||
| 84 | + * 指定根证书内容字符串 | ||
| 85 | + */ | ||
| 86 | + private String rootCertContent; | ||
| 87 | + | ||
| 88 | +} |
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/package-info.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.pay.core.client; |
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/gateway/ChannelNoticeService.java deleted
| 1 | -package cn.iocoder.yudao.framework.pay.core.gateway; | ||
| 2 | -/** | ||
| 3 | - * @description 渠道侧的通知网关服务,分为同步跳转(doReturn)和异步回调(doNotify) | ||
| 4 | - * @author Qingchen | ||
| 5 | - * @version 1.0.0 | ||
| 6 | - * @date 2021-10-09 14:34 | ||
| 7 | - * @class cn.iocoder.yudao.framework.pay.core.gateway.ChannelNoticeService.java | ||
| 8 | - */ | ||
| 9 | -public interface ChannelNoticeService { | ||
| 10 | - | ||
| 11 | - | ||
| 12 | - | ||
| 13 | - | ||
| 14 | -} |
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/gateway/RefundService.java deleted
| 1 | -package cn.iocoder.yudao.framework.pay.core.gateway; | ||
| 2 | -/** | ||
| 3 | - * @description 退款网关服务 | ||
| 4 | - * @author Qingchen | ||
| 5 | - * @version 1.0.0 | ||
| 6 | - * @date 2021-10-09 16:07 | ||
| 7 | - * @class cn.iocoder.yudao.framework.pay.core.gateway.RefundService.java | ||
| 8 | - */ | ||
| 9 | -public interface RefundService { | ||
| 10 | - | ||
| 11 | - | ||
| 12 | - | ||
| 13 | -} |
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/gateway/UnifiedOrderService.java deleted
| 1 | -package cn.iocoder.yudao.framework.pay.core.gateway; | ||
| 2 | -/** | ||
| 3 | - * @description 统一下单网关服务 | ||
| 4 | - * @author Qingchen | ||
| 5 | - * @version 1.0.0 | ||
| 6 | - * @date 2021-09-29 16:14 | ||
| 7 | - * @class cn.iocoder.yudao.framework.pay.core.gateway.UnifiedOrderService.java | ||
| 8 | - */ | ||
| 9 | -public interface UnifiedOrderService { | ||
| 10 | - | ||
| 11 | - | ||
| 12 | - | ||
| 13 | -} |
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/package-info.java deleted
yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/SmsClient.java
| @@ -8,7 +8,7 @@ import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO; | @@ -8,7 +8,7 @@ import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO; | ||
| 8 | import java.util.List; | 8 | import java.util.List; |
| 9 | 9 | ||
| 10 | /** | 10 | /** |
| 11 | - * 短信客户端接口 | 11 | + * 短信客户端,用于对接各短信平台的 SDK,实现短信发送等功能 |
| 12 | * | 12 | * |
| 13 | * @author zzf | 13 | * @author zzf |
| 14 | * @date 2021/1/25 14:14 | 14 | * @date 2021/1/25 14:14 |
yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/AbstractSmsClient.java
| @@ -13,7 +13,7 @@ import lombok.extern.slf4j.Slf4j; | @@ -13,7 +13,7 @@ import lombok.extern.slf4j.Slf4j; | ||
| 13 | import java.util.List; | 13 | import java.util.List; |
| 14 | 14 | ||
| 15 | /** | 15 | /** |
| 16 | - * 短信客户端抽象类 | 16 | + * 短信客户端的抽象类,提供模板方法,减少子类的冗余代码 |
| 17 | * | 17 | * |
| 18 | * @author zzf | 18 | * @author zzf |
| 19 | * @date 2021/2/1 9:28 | 19 | * @date 2021/2/1 9:28 |