Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
IJPay
提交
9d84e228
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 搜索 >>
提交
9d84e228
编写于
9月 13, 2017
作者:
J
Javen205
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新支付宝SDK、添加多应用的支持
上级
c278505c
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
141 addition
and
193 deletion
+141
-193
README.md
README.md
+12
-10
libs/alipay-sdk-java20170829142630.jar
libs/alipay-sdk-java20170829142630.jar
+0
-0
pom.xml
pom.xml
+3
-3
src/main/java/com/jpay/alipay/AliPayApiConfigKit.java
src/main/java/com/jpay/alipay/AliPayApiConfigKit.java
+63
-13
src/main/java/com/jpay/ext/kit/PaymentKit.java
src/main/java/com/jpay/ext/kit/PaymentKit.java
+0
-103
src/main/java/com/jpay/util/ParamsUtils.java
src/main/java/com/jpay/util/ParamsUtils.java
+0
-50
src/main/java/com/jpay/vo/AjaxResult.java
src/main/java/com/jpay/vo/AjaxResult.java
+0
-1
src/main/java/com/jpay/weixin/api/WxPayApiConfigKit.java
src/main/java/com/jpay/weixin/api/WxPayApiConfigKit.java
+63
-13
未找到文件。
README.md
浏览文件 @
9d84e228
...
...
@@ -126,16 +126,18 @@ Email:javendev@126.com
排名不分先后
1.
[
jfinal
](
http://git.oschina.net/jfinal/jfinal
)
2.
[
jfinal-weixin
](
http://git.oschina.net/jfinal/jfinal-weixin
)
3.
[
Layer
](
http://layer.layui.com/
)
4.
[
weui
](
https://github.com/weui/weui
)
5.
[
jquery-weui
](
https://github.com/lihongxun945/jquery-weui/
)
6.
[
zxing
](
https://github.com/zxing/zxing
)
7.
感谢第三方公司提供微信商户平台测试
### 最后如果该库对你有帮助不妨右上角点点Star支持一下,当然我更喜欢你 Fork PR 成为项目贡献者 . [IJPay](https://github.com/Javen205/IJPay)
-
[
jfinal
](
http://git.oschina.net/jfinal/jfinal
)
-
[
jfinal-weixin
](
http://git.oschina.net/jfinal/jfinal-weixin
)
-
[
Layer
](
http://layer.layui.com/
)
-
[
weui
](
https://github.com/weui/weui
)
-
[
wepayui
](
https://github.com/wepayui/wepayui
)
-
[
jquery-weui
](
https://github.com/lihongxun945/jquery-weui
)
-
[
zxing
](
https://github.com/zxing/zxing
)
-
感谢第三方公司提供微信商户平台测试
### 贡献代码
最后如果该库对你有帮助不妨右上角点点Star支持一下,我更喜欢你 Fork PR 成为项目贡献者 .
>如果对你有帮助,请任意打赏支持
...
...
libs/alipay-sdk-java20170
72511455
0.jar
→
libs/alipay-sdk-java20170
82914263
0.jar
浏览文件 @
9d84e228
无法预览此类型文件
pom.xml
浏览文件 @
9d84e228
...
...
@@ -3,7 +3,7 @@
<modelVersion>
4.0.0
</modelVersion>
<groupId>
com.github.javen205
</groupId>
<artifactId>
IJPay
</artifactId>
<version>
0.
4
</version>
<version>
0.
5
</version>
<packaging>
jar
</packaging>
<name>
IJPay
</name>
<description>
Easy Pay Library
</description>
...
...
@@ -81,9 +81,9 @@
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
alipay-sdk-java
</artifactId>
<version>
java2017072511455
0
</version>
<version>
alipay-sdk-java2017082914263
0
</version>
<scope>
system
</scope>
<systemPath>
${project.basedir}/libs/alipay-sdk-java20170
72511455
0.jar
</systemPath>
<systemPath>
${project.basedir}/libs/alipay-sdk-java20170
82914263
0.jar
</systemPath>
</dependency>
<dependency>
<groupId>
org.apache.commons
</groupId>
...
...
src/main/java/com/jpay/alipay/AliPayApiConfigKit.java
浏览文件 @
9d84e228
package
com.jpay.alipay
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
import
com.jpay.ext.kit.StrKit
;
/**
* @author Javen
* 2017年5月20日
*/
public
class
AliPayApiConfigKit
{
private
static
final
ThreadLocal
<
AliPayApiConfig
>
tl
=
new
ThreadLocal
<
AliPayApiConfi
g
>();
private
static
final
ThreadLocal
<
String
>
TL
=
new
ThreadLocal
<
Strin
g
>();
public
static
void
setThreadLocalAliPayApiConfig
(
AliPayApiConfig
aliPayApiConfig
)
{
tl
.
set
(
aliPayApiConfig
);
}
private
static
final
Map
<
String
,
AliPayApiConfig
>
CFG_MAP
=
new
ConcurrentHashMap
<
String
,
AliPayApiConfig
>();
private
static
final
String
DEFAULT_CFG_KEY
=
"_default_ijpay_key_"
;
public
static
void
removeThreadLocalApiConfig
()
{
tl
.
remove
();
}
/**
* 添加支付宝支付配置,每个appId只需添加一次,相同appId将被覆盖
* @param aliPayApiConfig 支付宝支付配置
* @return {AliPayApiConfig} 支付宝支付配置
*/
public
static
AliPayApiConfig
putApiConfig
(
AliPayApiConfig
aliPayApiConfig
)
{
if
(
CFG_MAP
.
size
()
==
0
)
{
CFG_MAP
.
put
(
DEFAULT_CFG_KEY
,
aliPayApiConfig
);
}
return
CFG_MAP
.
put
(
aliPayApiConfig
.
getAppId
(),
aliPayApiConfig
);
}
public
static
AliPayApiConfig
getAliPayApiConfig
()
{
AliPayApiConfig
result
=
tl
.
get
();
if
(
result
==
null
)
throw
new
IllegalStateException
(
"需要事先使用 AliPayApiConfigKit.setThreadLocalAliPayApiConfig(aliPayApiConfig) 将 aliPayApiConfig对象存入,才可以调用 AliPayApiConfigKit.getAliPayApiConfig() 方法"
);
return
result
;
}
public
static
AliPayApiConfig
setThreadLocalAliPayApiConfig
(
AliPayApiConfig
aliPayApiConfig
)
{
return
putApiConfig
(
aliPayApiConfig
);
}
public
static
AliPayApiConfig
removeApiConfig
(
AliPayApiConfig
apiConfig
)
{
return
removeApiConfig
(
apiConfig
.
getAppId
());
}
public
static
AliPayApiConfig
removeApiConfig
(
String
appId
)
{
return
CFG_MAP
.
remove
(
appId
);
}
public
static
void
setThreadLocalAppId
(
String
appId
)
{
if
(
StrKit
.
isBlank
(
appId
))
{
appId
=
CFG_MAP
.
get
(
DEFAULT_CFG_KEY
).
getAppId
();
}
TL
.
set
(
appId
);
}
public
static
void
removeThreadLocalAppId
()
{
TL
.
remove
();
}
public
static
String
getAppId
()
{
String
appId
=
TL
.
get
();
if
(
StrKit
.
isBlank
(
appId
))
{
appId
=
CFG_MAP
.
get
(
DEFAULT_CFG_KEY
).
getAppId
();
}
return
appId
;
}
public
static
AliPayApiConfig
getAliPayApiConfig
()
{
String
appId
=
getAppId
();
return
getApiConfig
(
appId
);
}
public
static
AliPayApiConfig
getApiConfig
(
String
appId
)
{
AliPayApiConfig
cfg
=
CFG_MAP
.
get
(
appId
);
if
(
cfg
==
null
)
throw
new
IllegalStateException
(
"需事先调用 AliPayApiConfigKit.putApiConfig(aliPayApiConfig) 将 appId对应的 aliPayApiConfig 对象存入,"
+
"才可以使用 AliPayApiConfigKit.getAliPayApiConfig() 的系列方法"
);
return
cfg
;
}
}
src/main/java/com/jpay/ext/kit/PaymentKit.java
浏览文件 @
9d84e228
...
...
@@ -13,112 +13,9 @@ import com.jpay.weixin.api.WxPayApiConfigKit;
/**
* 微信支付的统一下单工具类
*
* @author L.cm
*/
public
class
PaymentKit
{
/**
* 构建参数
* @param appid
* @param sub_appid
* @param mch_id
* @param sub_mch_id
* @param device_info
* @param body
* @param detail
* @param attach
* @param out_trade_no
* @param total_fee
* @param spbill_create_ip
* @param auth_code
* @param paternerKey
* @return <Map<String, String>>
*/
public
static
Map
<
String
,
String
>
buildParasMap
(
String
appid
,
String
sub_appid
,
String
mch_id
,
String
sub_mch_id
,
String
device_info
,
String
body
,
String
detail
,
String
attach
,
String
out_trade_no
,
String
total_fee
,
String
spbill_create_ip
,
String
auth_code
,
String
paternerKey
){
Map
<
String
,
String
>
queryParas
=
new
HashMap
<
String
,
String
>();
queryParas
.
put
(
"appid"
,
appid
);
queryParas
.
put
(
"sub_appid"
,
sub_appid
);
queryParas
.
put
(
"mch_id"
,
mch_id
);
queryParas
.
put
(
"sub_mch_id"
,
sub_mch_id
);
queryParas
.
put
(
"device_info"
,
device_info
);
queryParas
.
put
(
"nonce_str"
,
String
.
valueOf
(
System
.
currentTimeMillis
()));
queryParas
.
put
(
"body"
,
body
);
queryParas
.
put
(
"detail"
,
detail
);
queryParas
.
put
(
"attach"
,
attach
);
queryParas
.
put
(
"out_trade_no"
,
out_trade_no
);
queryParas
.
put
(
"total_fee"
,
total_fee
);
queryParas
.
put
(
"spbill_create_ip"
,
spbill_create_ip
);
queryParas
.
put
(
"auth_code"
,
auth_code
);
String
sign
=
PaymentKit
.
createSign
(
queryParas
,
paternerKey
);
queryParas
.
put
(
"sign"
,
sign
);
return
queryParas
;
}
/**
* 封装查询请求参数 参考代码
* @param appid
* @param sub_appid
* @param mch_id
* @param sub_mch_id
* @param transaction_id
* @param out_trade_no
* @param paternerKey
* @return <Map<String, String>>
*/
public
static
Map
<
String
,
String
>
buildParasMap
(
String
appid
,
String
sub_appid
,
String
mch_id
,
String
sub_mch_id
,
String
transaction_id
,
String
out_trade_no
,
String
paternerKey
){
Map
<
String
,
String
>
params
=
new
HashMap
<
String
,
String
>();
params
.
put
(
"appid"
,
appid
);
params
.
put
(
"sub_appid"
,
sub_appid
);
params
.
put
(
"mch_id"
,
mch_id
);
params
.
put
(
"sub_mch_id"
,
sub_mch_id
);
params
.
put
(
"transaction_id"
,
transaction_id
);
params
.
put
(
"out_trade_no"
,
out_trade_no
);
return
buildSignAfterParasMap
(
params
,
paternerKey
);
}
/**
* 构建统一下单参数
* @param appid
* @param sub_appid 否
* @param mch_id
* @param sub_mch_id 服务商模式下必须
* @param device_info 否
* @param body
* @param detail 否
* @param attach 否
* @param out_trade_no
* @param total_fee
* @param spbill_create_ip
* @param paternerKey
* @param notify_url
* @param trade_type
* @param product_id 扫码支付必传
* @return <Map<String, String>>
*/
public
static
Map
<
String
,
String
>
buildUnifiedOrderParasMap
(
String
appid
,
String
sub_appid
,
String
mch_id
,
String
sub_mch_id
,
String
device_info
,
String
body
,
String
detail
,
String
attach
,
String
out_trade_no
,
String
total_fee
,
String
spbill_create_ip
,
String
notify_url
,
String
trade_type
,
String
paternerKey
,
String
product_id
){
Map
<
String
,
String
>
params
=
new
HashMap
<
String
,
String
>();
params
.
put
(
"appid"
,
appid
);
params
.
put
(
"sub_appid"
,
sub_appid
);
params
.
put
(
"mch_id"
,
mch_id
);
params
.
put
(
"sub_mch_id"
,
sub_mch_id
);
params
.
put
(
"device_info"
,
device_info
);
params
.
put
(
"body"
,
body
);
params
.
put
(
"detail"
,
detail
);
params
.
put
(
"attach"
,
attach
);
params
.
put
(
"total_fee"
,
total_fee
);
params
.
put
(
"spbill_create_ip"
,
spbill_create_ip
);
params
.
put
(
"notify_url"
,
notify_url
);
params
.
put
(
"trade_type"
,
trade_type
);
params
.
put
(
"product_id"
,
product_id
);
return
buildSignAfterParasMap
(
params
,
paternerKey
);
}
/**
* 构建短链接参数
* @param appid
...
...
src/main/java/com/jpay/util/ParamsUtils.java
已删除
100644 → 0
浏览文件 @
c278505c
package
com.jpay.util
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
ParamsUtils
{
/**
* 将url参数转换成map
*
* @param param
* aa=11&bb=22&cc=33
* @return <Map<String, String>>
*/
public
static
Map
<
String
,
String
>
getUrlParams
(
String
param
)
{
Map
<
String
,
String
>
map
=
new
HashMap
<
String
,
String
>(
0
);
if
(
StringUtils
.
isBlank
(
param
))
{
return
map
;
}
String
[]
params
=
param
.
split
(
"&"
);
for
(
int
i
=
0
;
i
<
params
.
length
;
i
++)
{
String
[]
p
=
params
[
i
].
split
(
"="
);
if
(
p
.
length
==
2
)
{
map
.
put
(
p
[
0
],
p
[
1
]);
}
}
return
map
;
}
/**
* 将map转换成url
*
* @param map
* @return {String}
*/
public
static
String
getUrlParamsByMap
(
Map
<
String
,
Object
>
map
)
{
if
(
map
==
null
)
{
return
""
;
}
StringBuffer
sb
=
new
StringBuffer
();
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
map
.
entrySet
())
{
sb
.
append
(
entry
.
getKey
()
+
"="
+
entry
.
getValue
());
sb
.
append
(
"&"
);
}
String
s
=
sb
.
toString
();
if
(
s
.
endsWith
(
"&"
))
{
s
=
StringUtils
.
substringBeforeLast
(
s
,
"&"
);
}
return
s
;
}
}
src/main/java/com/jpay/vo/AjaxResult.java
浏览文件 @
9d84e228
...
...
@@ -2,7 +2,6 @@ package com.jpay.vo;
public
class
AjaxResult
{
// 标记成功失败,默认0:成功,1:失败、用于alert,2:失败、用于confirm
private
int
code
=
0
;
// 返回的中文消息
...
...
src/main/java/com/jpay/weixin/api/WxPayApiConfigKit.java
浏览文件 @
9d84e228
package
com.jpay.weixin.api
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
import
com.jpay.ext.kit.StrKit
;
/**
* @author Javen
* 2017年5月22日
*/
public
class
WxPayApiConfigKit
{
private
static
final
ThreadLocal
<
WxPayApiConfig
>
tl
=
new
ThreadLocal
<
WxPayApiConfi
g
>();
private
static
final
ThreadLocal
<
String
>
TL
=
new
ThreadLocal
<
Strin
g
>();
public
static
void
setThreadLocalWxPayApiConfig
(
WxPayApiConfig
wxPayApiConfig
)
{
tl
.
set
(
wxPayApiConfig
);
}
private
static
final
Map
<
String
,
WxPayApiConfig
>
CFG_MAP
=
new
ConcurrentHashMap
<
String
,
WxPayApiConfig
>();
private
static
final
String
DEFAULT_CFG_KEY
=
"_default_ijpay_key_"
;
public
static
void
removeThreadLocalApiConfig
()
{
tl
.
remove
();
}
/**
* 添加微信支付配置,每个appId只需添加一次,相同appId将被覆盖
* @param wxPayApiConfig 微信支付配置
* @return {WxPayApiConfig} 微信支付配置
*/
public
static
WxPayApiConfig
putApiConfig
(
WxPayApiConfig
wxPayApiConfig
)
{
if
(
CFG_MAP
.
size
()
==
0
)
{
CFG_MAP
.
put
(
DEFAULT_CFG_KEY
,
wxPayApiConfig
);
}
return
CFG_MAP
.
put
(
wxPayApiConfig
.
getAppId
(),
wxPayApiConfig
);
}
public
static
WxPayApiConfig
getWxPayApiConfig
()
{
WxPayApiConfig
result
=
tl
.
get
();
if
(
result
==
null
)
throw
new
IllegalStateException
(
"需要事先使用 WxPayApiConfigKit.setThreadLocalWxPayApiConfig(wxPayApiConfig) 将 wxPayApiConfig对象存入,才可以调用 WxPayApiConfigKit.getWxPayApiConfig() 方法"
);
return
result
;
}
public
static
WxPayApiConfig
setThreadLocalWxPayApiConfig
(
WxPayApiConfig
wxPayApiConfig
)
{
return
putApiConfig
(
wxPayApiConfig
);
}
public
static
WxPayApiConfig
removeApiConfig
(
WxPayApiConfig
wxPayApiConfig
)
{
return
removeApiConfig
(
wxPayApiConfig
.
getAppId
());
}
public
static
WxPayApiConfig
removeApiConfig
(
String
appId
)
{
return
CFG_MAP
.
remove
(
appId
);
}
public
static
void
setThreadLocalAppId
(
String
appId
)
{
if
(
StrKit
.
isBlank
(
appId
))
{
appId
=
CFG_MAP
.
get
(
DEFAULT_CFG_KEY
).
getAppId
();
}
TL
.
set
(
appId
);
}
public
static
void
removeThreadLocalAppId
()
{
TL
.
remove
();
}
public
static
String
getAppId
()
{
String
appId
=
TL
.
get
();
if
(
StrKit
.
isBlank
(
appId
))
{
appId
=
CFG_MAP
.
get
(
DEFAULT_CFG_KEY
).
getAppId
();
}
return
appId
;
}
public
static
WxPayApiConfig
getWxPayApiConfig
()
{
String
appId
=
getAppId
();
return
getApiConfig
(
appId
);
}
public
static
WxPayApiConfig
getApiConfig
(
String
appId
)
{
WxPayApiConfig
cfg
=
CFG_MAP
.
get
(
appId
);
if
(
cfg
==
null
)
throw
new
IllegalStateException
(
"需事先调用 WxPayApiConfigKit.putApiConfig(wxPayApiConfig) 将 appId对应的 WxPayApiConfig 对象存入,"
+
"才可以使用 WxPayApiConfigKit.getWxPayApiConfig() 的系列方法"
);
return
cfg
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录