Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
IJPay
提交
4475ccd8
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 搜索 >>
提交
4475ccd8
编写于
4月 02, 2023
作者:
J
Javen205
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
✨
微信支付新增示例
上级
e0c396bd
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
83 addition
and
4 deletion
+83
-4
IJPay-Demo-SpringBoot/src/main/java/com/ijpay/demo/controller/wxpay/WxPayV3Controller.java
...va/com/ijpay/demo/controller/wxpay/WxPayV3Controller.java
+83
-4
未找到文件。
IJPay-Demo-SpringBoot/src/main/java/com/ijpay/demo/controller/wxpay/WxPayV3Controller.java
浏览文件 @
4475ccd8
...
...
@@ -286,6 +286,85 @@ public class WxPayV3Controller {
}
}
@RequestMapping
(
"/appPay"
)
@ResponseBody
public
String
appPay
()
{
try
{
String
timeExpire
=
DateTimeZoneUtil
.
dateToTimeZone
(
System
.
currentTimeMillis
()
+
1000
*
60
*
3
);
UnifiedOrderModel
unifiedOrderModel
=
new
UnifiedOrderModel
()
.
setAppid
(
wxPayV3Bean
.
getAppId
())
.
setMchid
(
wxPayV3Bean
.
getMchId
())
.
setDescription
(
"IJPay 让支付触手可及"
)
.
setOut_trade_no
(
PayKit
.
generateStr
())
.
setTime_expire
(
timeExpire
)
.
setAttach
(
"微信系开发脚手架 https://gitee.com/javen205/TNWX"
)
.
setNotify_url
(
wxPayV3Bean
.
getDomain
().
concat
(
"/v3/payNotify"
))
.
setAmount
(
new
Amount
().
setTotal
(
1
));
log
.
info
(
"统一下单参数 {}"
,
JSONUtil
.
toJsonStr
(
unifiedOrderModel
));
IJPayHttpResponse
response
=
WxPayApi
.
v3
(
RequestMethodEnum
.
POST
,
WxDomainEnum
.
CHINA
.
toString
(),
BasePayApiEnum
.
APP_PAY
.
toString
(),
wxPayV3Bean
.
getMchId
(),
getSerialNumber
(),
null
,
wxPayV3Bean
.
getKeyPath
(),
JSONUtil
.
toJsonStr
(
unifiedOrderModel
)
);
log
.
info
(
"统一下单响应 {}"
,
response
);
// 根据证书序列号查询对应的证书来验证签名结果
boolean
verifySignature
=
WxPayKit
.
verifySignature
(
response
,
wxPayV3Bean
.
getPlatformCertPath
());
log
.
info
(
"verifySignature: {}"
,
verifySignature
);
if
(
response
.
getStatus
()
==
OK
&&
verifySignature
)
{
String
body
=
response
.
getBody
();
JSONObject
jsonObject
=
JSONUtil
.
parseObj
(
body
);
String
prepayId
=
jsonObject
.
getStr
(
"prepay_id"
);
Map
<
String
,
String
>
map
=
WxPayKit
.
appCreateSign
(
wxPayV3Bean
.
getAppId
(),
wxPayV3Bean
.
getMchId
(),
prepayId
,
wxPayV3Bean
.
getKeyPath
());
log
.
info
(
"唤起支付参数:{}"
,
map
);
return
JSONUtil
.
toJsonStr
(
map
);
}
return
JSONUtil
.
toJsonStr
(
response
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
e
.
getMessage
();
}
}
@RequestMapping
(
"/query"
)
@ResponseBody
public
String
query
(
@RequestParam
String
outTradeNo
)
{
try
{
Map
<
String
,
String
>
params
=
new
HashMap
<>(
16
);
params
.
put
(
"mchid"
,
wxPayV3Bean
.
getMchId
());
log
.
info
(
"统一下单参数 {}"
,
JSONUtil
.
toJsonStr
(
params
));
IJPayHttpResponse
response
=
WxPayApi
.
v3
(
RequestMethodEnum
.
GET
,
WxDomainEnum
.
CHINA
.
toString
(),
String
.
format
(
BasePayApiEnum
.
ORDER_QUERY_BY_OUT_TRADE_NO
.
toString
(),
outTradeNo
),
wxPayV3Bean
.
getMchId
(),
getSerialNumber
(),
null
,
wxPayV3Bean
.
getKeyPath
(),
params
);
log
.
info
(
"查询响应 {}"
,
response
);
if
(
response
.
getStatus
()
==
OK
)
{
// 根据证书序列号查询对应的证书来验证签名结果
boolean
verifySignature
=
WxPayKit
.
verifySignature
(
response
,
wxPayV3Bean
.
getPlatformCertPath
());
log
.
info
(
"verifySignature: {}"
,
verifySignature
);
return
response
.
getBody
();
}
return
JSONUtil
.
toJsonStr
(
response
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
e
.
getMessage
();
}
}
@RequestMapping
(
"/jsApiPay"
)
@ResponseBody
public
String
jsApiPay
(
@RequestParam
(
value
=
"openId"
,
required
=
false
,
defaultValue
=
"o-_-itxuXeGW3O1cxJ7FXNmq8Wf8"
)
String
openId
)
{
...
...
@@ -345,10 +424,10 @@ public class WxPayV3Controller {
.
setTotal_num
(
1
)
.
setTransfer_detail_list
(
Collections
.
singletonList
(
new
TransferDetailInput
()
.
setOut_detail_no
(
PayKit
.
generateStr
())
.
setTransfer_amount
(
1
)
.
setTransfer_remark
(
"IJPay 测试微信转账到零钱"
)
.
setOpenid
(
openId
)));
.
setOut_detail_no
(
PayKit
.
generateStr
())
.
setTransfer_amount
(
1
)
.
setTransfer_remark
(
"IJPay 测试微信转账到零钱"
)
.
setOpenid
(
openId
)));
log
.
info
(
"发起商家转账请求参数 {}"
,
JSONUtil
.
toJsonStr
(
batchTransferModel
));
IJPayHttpResponse
response
=
WxPayApi
.
v3
(
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录