Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
IJPay
提交
a7d8ecbb
I
IJPay
项目概览
int
/
IJPay
9 个月 前同步成功
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
IJPay
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a7d8ecbb
编写于
10月 05, 2022
作者:
J
Javen205
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
✨
新增支付宝支付 springboot starter
上级
0346c058
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
380 addition
and
0 deletion
+380
-0
IJPay-Plugin/IJPay-AliPay-Starter/.gitignore
IJPay-Plugin/IJPay-AliPay-Starter/.gitignore
+38
-0
IJPay-Plugin/IJPay-AliPay-Starter/pom.xml
IJPay-Plugin/IJPay-AliPay-Starter/pom.xml
+68
-0
IJPay-Plugin/IJPay-AliPay-Starter/src/main/java/com/ijpay/alipay/starter/config/AliPayAutoConfiguration.java
.../ijpay/alipay/starter/config/AliPayAutoConfiguration.java
+85
-0
IJPay-Plugin/IJPay-AliPay-Starter/src/main/java/com/ijpay/alipay/starter/constants/IJPayConstant.java
...ava/com/ijpay/alipay/starter/constants/IJPayConstant.java
+19
-0
IJPay-Plugin/IJPay-AliPay-Starter/src/main/java/com/ijpay/alipay/starter/controller/AbstractAliPayApiController.java
...lipay/starter/controller/AbstractAliPayApiController.java
+25
-0
IJPay-Plugin/IJPay-AliPay-Starter/src/main/java/com/ijpay/alipay/starter/controller/AbstractAliPayController.java
...y/alipay/starter/controller/AbstractAliPayController.java
+66
-0
IJPay-Plugin/IJPay-AliPay-Starter/src/main/java/com/ijpay/alipay/starter/interceptor/AliPayInterceptor.java
...m/ijpay/alipay/starter/interceptor/AliPayInterceptor.java
+45
-0
IJPay-Plugin/IJPay-AliPay-Starter/src/main/java/com/ijpay/alipay/starter/properties/AliPayProperties.java
...com/ijpay/alipay/starter/properties/AliPayProperties.java
+32
-0
IJPay-Plugin/IJPay-AliPay-Starter/src/main/resources/META-INF/spring.factories
...iPay-Starter/src/main/resources/META-INF/spring.factories
+1
-0
IJPay-Plugin/pom.xml
IJPay-Plugin/pom.xml
+1
-0
未找到文件。
IJPay-Plugin/IJPay-AliPay-Starter/.gitignore
0 → 100644
浏览文件 @
a7d8ecbb
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store
\ No newline at end of file
IJPay-Plugin/IJPay-AliPay-Starter/pom.xml
0 → 100644
浏览文件 @
a7d8ecbb
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
IJPay-Plugin
</artifactId>
<groupId>
com.github.javen205
</groupId>
<version>
2.9.2
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
ijpay-alipay-spring-boot-starters
</artifactId>
<name>
${project.artifactId}
</name>
<description>
IJPay 各个模块的 Spring Boot Starter
</description>
<url>
https://github.com/javen205/IJPay
</url>
<properties>
<spring.boot.version>
2.7.4
</spring.boot.version>
<ijpay.alipay.version>
2.9.2
</ijpay.alipay.version>
<slf4j.api.version>
2.0.3
</slf4j.api.version>
</properties>
<dependencies>
<dependency>
<groupId>
com.github.javen205
</groupId>
<artifactId>
IJPay-AliPay
</artifactId>
<version>
${ijpay.alipay.version}
</version>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-webmvc
</artifactId>
<version>
5.3.23
</version>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
javax.servlet
</groupId>
<artifactId>
javax.servlet-api
</artifactId>
<version>
4.0.1
</version>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-api
</artifactId>
<version>
${slf4j.api.version}
</version>
<scope>
provided
</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<version>
${spring.boot.version}
</version>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-source-plugin
</artifactId>
<version>
2.2.1
</version>
<executions>
<execution>
<id>
attach-sources
</id>
<goals>
<goal>
jar-no-fork
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
IJPay-Plugin/IJPay-AliPay-Starter/src/main/java/com/ijpay/alipay/starter/config/AliPayAutoConfiguration.java
0 → 100644
浏览文件 @
a7d8ecbb
package
com.ijpay.alipay.starter.config
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alipay.api.AlipayApiException
;
import
com.ijpay.alipay.AliPayApiConfig
;
import
com.ijpay.alipay.starter.properties.AliPayProperties
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
/**
* <p>IJPay 让支付触手可及,封装了微信支付、支付宝支付、银联支付常用的支付方式以及各种常用的接口。</p>
*
* <p>不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。 </p>
*
* <p>IJPay 交流群: 723992875、864988890</p>
*
* <p>Node.js 版: <a href="https://gitee.com/javen205/TNWX">https://gitee.com/javen205/TNWX</a></p>
*
* <p>自动配置</p>
*
* @author Javen
*/
@Slf4j
@Configuration
@EnableConfigurationProperties
(
AliPayProperties
.
class
)
@ConditionalOnClass
(
AliPayApiConfig
.
class
)
@ConditionalOnProperty
(
prefix
=
"alipay.pay"
,
value
=
"enabled"
,
matchIfMissing
=
true
)
public
class
AliPayAutoConfiguration
{
/**
* 支付宝支付配置
*/
private
final
AliPayProperties
aliPayProperties
;
@Autowired
public
AliPayAutoConfiguration
(
AliPayProperties
aliPayProperties
)
{
this
.
aliPayProperties
=
aliPayProperties
;
}
/**
* 构造支付宝支付常用配置
*
* @return {@link AliPayApiConfig} 支付宝支付常用配置
*/
@Bean
@ConditionalOnMissingBean
(
AliPayApiConfig
.
class
)
public
AliPayApiConfig
aliPayApiConfig
()
{
if
(
null
==
aliPayProperties
||
CollUtil
.
isEmpty
(
aliPayProperties
.
getConfigs
()))
{
log
.
error
(
"未获取到任何支付宝支付的配置信息,如有疑问请联系 723992875、864988890"
);
return
null
;
}
AliPayApiConfig
config
=
aliPayProperties
.
getConfigs
().
get
(
0
);
if
(
config
.
isCertModel
())
{
log
.
debug
(
"即将尝试使用「证书模式」来构建 AlipayClient"
);
try
{
if
(
StrUtil
.
isAllNotEmpty
(
config
.
getAppCertPath
(),
config
.
getAliPayCertPath
(),
config
.
getAliPayRootCertPath
()))
{
log
.
debug
(
"使用证书文件路径来构建 AlipayClient"
);
config
=
config
.
buildByCert
();
}
else
{
log
.
debug
(
"支付宝支付证书文件路径不全,即将尝试使用证书文件内容来构建 AlipayClient"
);
if
(
StrUtil
.
isAllNotEmpty
(
config
.
getAppCertPath
(),
config
.
getAliPayCertPath
(),
config
.
getAliPayRootCertPath
()))
{
log
.
debug
(
"使用证书文件内容来构建 AlipayClient"
);
config
=
config
.
buildByCertContent
();
}
}
}
catch
(
AlipayApiException
e
)
{
throw
new
RuntimeException
(
"构建 AlipayClient 失败请检查支付宝支付配置信息"
,
e
);
}
}
else
{
log
.
debug
(
"使用「普通公钥方式」来构建 AlipayClient"
);
config
=
config
.
build
();
}
log
.
debug
(
"自动注入的支付宝支付配置信息为 {}"
,
config
);
return
config
;
}
}
IJPay-Plugin/IJPay-AliPay-Starter/src/main/java/com/ijpay/alipay/starter/constants/IJPayConstant.java
0 → 100644
浏览文件 @
a7d8ecbb
package
com.ijpay.alipay.starter.constants
;
/**
* <p>IJPay 让支付触手可及,封装了微信支付、支付宝支付、银联支付常用的支付方式以及各种常用的接口。</p>
*
* <p>不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。 </p>
*
* <p>IJPay 交流群: 723992875、864988890</p>
*
* <p>Node.js 版: <a href="https://gitee.com/javen205/TNWX">https://gitee.com/javen205/TNWX</a></p>
*
* @author Javen
*/
public
interface
IJPayConstant
{
/**
* 在线交流
*/
String
ONLINE_CONTACT
=
"IJPay 让支付触手可及,交流群 723992875、864988890"
;
}
IJPay-Plugin/IJPay-AliPay-Starter/src/main/java/com/ijpay/alipay/starter/controller/AbstractAliPayApiController.java
0 → 100644
浏览文件 @
a7d8ecbb
package
com.ijpay.alipay.starter.controller
;
import
com.alipay.api.AlipayApiException
;
import
com.ijpay.alipay.AliPayApiConfig
;
/**
* <p>IJPay 让支付触手可及,封装了微信支付、支付宝支付、银联支付常用的支付方式以及各种常用的接口。</p>
*
* <p>不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。 </p>
*
* <p>IJPay 交流群: 723992875、864988890</p>
*
* <p>Node.js 版: <a href="https://gitee.com/javen205/TNWX">https://gitee.com/javen205/TNWX</a></p>
*
* @author Javen
*/
public
abstract
class
AbstractAliPayApiController
{
/**
* 获取支付宝配置
*
* @return {@link AliPayApiConfig} 支付宝配置
* @throws AlipayApiException 支付宝 Api 异常
*/
public
abstract
AliPayApiConfig
getApiConfig
()
throws
AlipayApiException
;
}
IJPay-Plugin/IJPay-AliPay-Starter/src/main/java/com/ijpay/alipay/starter/controller/AbstractAliPayController.java
0 → 100644
浏览文件 @
a7d8ecbb
package
com.ijpay.alipay.starter.controller
;
import
com.ijpay.alipay.AliPayApiConfig
;
import
com.ijpay.alipay.AliPayApiConfigKit
;
import
com.ijpay.alipay.starter.constants.IJPayConstant
;
import
com.ijpay.alipay.starter.properties.AliPayProperties
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
javax.annotation.Resource
;
/**
* <p>IJPay 让支付触手可及,封装了微信支付、支付宝支付、银联支付等常用的支付方式以及各种常用的接口。</p>
*
* <p>不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。 </p>
*
* <p>IJPay 交流群: 723992875、864988890</p>
*
* <p>Node.js 版: <a href="https://gitee.com/javen205/TNWX">https://gitee.com/javen205/TNWX</a></p>
*
* @author Javen
*/
@Slf4j
public
class
AbstractAliPayController
extends
AbstractAliPayApiController
{
/**
* starter 自动生成的支付宝支付配置,默认取配置的第一个
*/
@Resource
protected
AliPayApiConfig
aliPayApiConfig
;
/**
* yml 配置
*/
@Resource
protected
AliPayProperties
aliPayProperties
;
/**
* 获取支付宝支付配置
*
* @return {@link AliPayApiConfig} 支付宝支付配置
*/
@Override
public
AliPayApiConfig
getApiConfig
()
{
AliPayApiConfig
apiConfig
;
try
{
apiConfig
=
AliPayApiConfigKit
.
getAliPayApiConfig
();
}
catch
(
Exception
e
)
{
apiConfig
=
aliPayApiConfig
;
}
return
apiConfig
;
}
@RequestMapping
(
value
=
"/onlineContact"
,
method
=
{
RequestMethod
.
GET
,
RequestMethod
.
POST
})
public
String
onlineContact
()
{
return
IJPayConstant
.
ONLINE_CONTACT
;
}
@RequestMapping
(
value
=
"/getCurrentConfig"
,
method
=
{
RequestMethod
.
GET
,
RequestMethod
.
POST
})
public
AliPayApiConfig
getCurrentConfig
()
{
return
AliPayApiConfigKit
.
getAliPayApiConfig
();
}
}
IJPay-Plugin/IJPay-AliPay-Starter/src/main/java/com/ijpay/alipay/starter/interceptor/AliPayInterceptor.java
0 → 100644
浏览文件 @
a7d8ecbb
package
com.ijpay.alipay.starter.interceptor
;
import
com.alipay.api.AlipayApiException
;
import
com.ijpay.alipay.AliPayApiConfig
;
import
com.ijpay.alipay.AliPayApiConfigKit
;
import
com.ijpay.alipay.starter.controller.AbstractAliPayApiController
;
import
org.springframework.web.method.HandlerMethod
;
import
org.springframework.web.servlet.HandlerInterceptor
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
/**
* <p>IJPay 让支付触手可及,封装了微信支付、支付宝支付、银联支付常用的支付方式以及各种常用的接口。</p>
*
* <p>不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。 </p>
*
* <p>IJPay 交流群: 723992875、864988890</p>
*
* <p>Node.js 版: <a href="https://gitee.com/javen205/TNWX">https://gitee.com/javen205/TNWX</a></p>
*
* <p>支付宝支付拦截器</p>
*
* @author Javen
*/
public
class
AliPayInterceptor
implements
HandlerInterceptor
{
@Override
public
boolean
preHandle
(
HttpServletRequest
httpServletRequest
,
HttpServletResponse
httpServletResponse
,
Object
handler
)
throws
AlipayApiException
{
if
(
HandlerMethod
.
class
.
equals
(
handler
.
getClass
()))
{
HandlerMethod
method
=
(
HandlerMethod
)
handler
;
Object
controller
=
method
.
getBean
();
if
(!(
controller
instanceof
AbstractAliPayApiController
))
{
throw
new
RuntimeException
(
"控制器需要继承 AbstractAliPayApiController"
);
}
AliPayApiConfig
apiConfig
=
((
AbstractAliPayApiController
)
controller
).
getApiConfig
();
if
(
null
==
apiConfig
||
null
==
apiConfig
.
getAliPayClient
())
{
throw
new
RuntimeException
(
"支付宝支付配置信息错误,请检查配置文件,如有疑问请联系 723992875、864988890"
);
}
AliPayApiConfigKit
.
setThreadLocalAliPayApiConfig
(
apiConfig
);
return
true
;
}
return
false
;
}
}
IJPay-Plugin/IJPay-AliPay-Starter/src/main/java/com/ijpay/alipay/starter/properties/AliPayProperties.java
0 → 100644
浏览文件 @
a7d8ecbb
package
com.ijpay.alipay.starter.properties
;
import
com.ijpay.alipay.AliPayApiConfig
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
java.util.List
;
/**
* <p>IJPay 让支付触手可及,封装了微信支付、支付宝支付、银联支付等常用的支付方式以及各种常用的接口。</p>
*
* <p>不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。 </p>
*
* <p>IJPay 交流群: 723992875、864988890</p>
*
* <p>Node.js 版: <a href="https://gitee.com/javen205/TNWX">https://gitee.com/javen205/TNWX</a></p>
*
* <p>支付宝支付属性配置类</p>
*
* @author Javen
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ConfigurationProperties
(
prefix
=
"alipay.pay"
)
public
class
AliPayProperties
{
private
List
<
AliPayApiConfig
>
configs
;
}
IJPay-Plugin/IJPay-AliPay-Starter/src/main/resources/META-INF/spring.factories
0 → 100644
浏览文件 @
a7d8ecbb
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.ijpay.alipay.starter.config.AliPayAutoConfiguration
IJPay-Plugin/pom.xml
浏览文件 @
a7d8ecbb
...
...
@@ -14,6 +14,7 @@
<modules>
<module>
IJPay-WxPay-Starter
</module>
<module>
IJPay-AliPay-Starter
</module>
</modules>
<properties>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录