Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
payment-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
payment-ci-test
Commits
5e1cd94f
提交
5e1cd94f
authored
7月 22, 2023
作者:
xiaowang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
下单
上级
595f332f
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
43 行增加
和
36 行删除
+43
-36
WechatPayServiceImpl.java
...va/com/mmc/payment/service/Impl/WechatPayServiceImpl.java
+43
-36
没有找到文件。
src/main/java/com/mmc/payment/service/Impl/WechatPayServiceImpl.java
浏览文件 @
5e1cd94f
...
...
@@ -18,9 +18,9 @@ import com.wechat.pay.java.core.exception.ServiceException;
import
com.wechat.pay.java.core.notification.NotificationConfig
;
import
com.wechat.pay.java.core.notification.NotificationParser
;
import
com.wechat.pay.java.core.notification.RequestParam
;
import
com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction
;
import
com.wechat.pay.java.service.payments.jsapi.JsapiService
;
import
com.wechat.pay.java.service.payments.jsapi.model.*
;
import
com.wechat.pay.java.service.payments.model.Transaction
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
...
...
@@ -54,44 +54,51 @@ public class WechatPayServiceImpl implements WechatPayService {
if
(
userSimpleInfo
==
null
)
{
throw
new
RuntimeException
(
"服务器内部错误!"
);
}
Config
config
=
wxConfigUtils
.
createConfig
();
// 查询该订单是否已下单
WxPayLogDO
wxPayLogDO
=
wechatPayDao
.
selectWxPayInfoByOrderNo
(
orderRequestParamsVO
.
getOrderNo
());
if
(
wxPayLogDO
!=
null
&&
wxPayLogDO
.
getTradeState
().
equals
(
OrderPayStatus
.
SUCCESS
.
getStatus
()))
{
return
ResultBody
.
error
(
"订单已支付!"
);
}
else
if
(
wxPayLogDO
!=
null
)
{
return
ResultBody
.
error
(
"请勿重复下单!"
);
}
else
if
(
wxPayLogDO
==
null
)
{
// 构建service
JsapiService
jsapiService
=
new
JsapiService
.
Builder
().
config
(
config
).
build
();
// request.setXxx(val)设置所需参数,具体参数可见Request定义
PrepayRequest
prepayRequest
=
new
PrepayRequest
();
Amount
amount
=
new
Amount
();
amount
.
setTotal
(
orderRequestParamsVO
.
getAmount
());
prepayRequest
.
setAmount
(
amount
);
Payer
payer
=
new
Payer
();
payer
.
setOpenid
(
userSimpleInfo
.
getOpenid
());
prepayRequest
.
setPayer
(
payer
);
prepayRequest
.
setAppid
(
userSystemConstant
.
getWxAppId
());
prepayRequest
.
setMchid
(
userSystemConstant
.
getMchid
());
prepayRequest
.
setDescription
(
orderRequestParamsVO
.
getDescription
());
prepayRequest
.
setNotifyUrl
(
userSystemConstant
.
getNotifyUrl
());
prepayRequest
.
setOutTradeNo
(
orderRequestParamsVO
.
getOrderNo
());
// 调用下单方法,得到应答
PrepayResponse
prepay
=
jsapiService
.
prepay
(
prepayRequest
);
String
prepayId
=
prepay
.
getPrepayId
();
// 录入数据库记录数据
WxPayLogDO
wxPrepayLogDO
=
new
WxPayLogDO
();
wxPrepayLogDO
.
setOrderPort
(
orderRequestParamsVO
.
getOrderPort
());
wxPrepayLogDO
.
setOrderNo
(
orderRequestParamsVO
.
getOrderNo
());
wxPrepayLogDO
.
setDescription
(
orderRequestParamsVO
.
getDescription
());
wxPrepayLogDO
.
setUserAccountId
(
userAccountId
);
wxPrepayLogDO
.
setAmount
(
orderRequestParamsVO
.
getAmount
());
wxPrepayLogDO
.
setPrepayId
(
prepayId
);
wxPrepayLogDO
.
setOpenId
(
userSimpleInfo
.
getOpenid
());
wxPrepayLogDO
.
setTradeState
(
OrderPayStatus
.
WAIT
.
getStatus
());
// 往数据库插入下单的日志信息
wechatPayDao
.
insertWxPayLog
(
wxPrepayLogDO
);
Map
<
String
,
Object
>
map
=
getSignInfoMap
(
config
,
prepayId
);
return
ResultBody
.
success
(
map
);
}
else
{
Map
<
String
,
Object
>
map
=
getSignInfoMap
(
config
,
wxPayLogDO
.
getPrepayId
());
return
ResultBody
.
success
(
map
);
}
Config
config
=
wxConfigUtils
.
createConfig
();
// 构建service
JsapiService
jsapiService
=
new
JsapiService
.
Builder
().
config
(
config
).
build
();
// request.setXxx(val)设置所需参数,具体参数可见Request定义
PrepayRequest
prepayRequest
=
new
PrepayRequest
();
Amount
amount
=
new
Amount
();
amount
.
setTotal
(
orderRequestParamsVO
.
getAmount
());
prepayRequest
.
setAmount
(
amount
);
Payer
payer
=
new
Payer
();
payer
.
setOpenid
(
userSimpleInfo
.
getOpenid
());
prepayRequest
.
setPayer
(
payer
);
prepayRequest
.
setAppid
(
userSystemConstant
.
getWxAppId
());
prepayRequest
.
setMchid
(
userSystemConstant
.
getMchid
());
prepayRequest
.
setDescription
(
orderRequestParamsVO
.
getDescription
());
prepayRequest
.
setNotifyUrl
(
userSystemConstant
.
getNotifyUrl
());
prepayRequest
.
setOutTradeNo
(
orderRequestParamsVO
.
getOrderNo
());
// 调用下单方法,得到应答
PrepayResponse
prepay
=
jsapiService
.
prepay
(
prepayRequest
);
String
prepayId
=
prepay
.
getPrepayId
();
// 录入数据库记录数据
WxPayLogDO
wxPrepayLogDO
=
new
WxPayLogDO
();
wxPrepayLogDO
.
setOrderPort
(
orderRequestParamsVO
.
getOrderPort
());
wxPrepayLogDO
.
setOrderNo
(
orderRequestParamsVO
.
getOrderNo
());
wxPrepayLogDO
.
setDescription
(
orderRequestParamsVO
.
getDescription
());
wxPrepayLogDO
.
setUserAccountId
(
userAccountId
);
wxPrepayLogDO
.
setAmount
(
orderRequestParamsVO
.
getAmount
());
wxPrepayLogDO
.
setPrepayId
(
prepayId
);
wxPrepayLogDO
.
setOpenId
(
userSimpleInfo
.
getOpenid
());
wxPrepayLogDO
.
setTradeState
(
OrderPayStatus
.
WAIT
.
getStatus
());
// 往数据库插入下单的日志信息
wechatPayDao
.
insertWxPayLog
(
wxPrepayLogDO
);
}
private
Map
<
String
,
Object
>
getSignInfoMap
(
Config
config
,
String
prepayId
)
{
// 获取时间戳
String
timeStamp
=
System
.
currentTimeMillis
()
/
1000
+
""
;
// 获取随机字符串
...
...
@@ -114,7 +121,7 @@ public class WechatPayServiceImpl implements WechatPayService {
map
.
put
(
"package"
,
prepayPackage
);
map
.
put
(
"signType"
,
signType
);
map
.
put
(
"paySign"
,
sign
);
return
ResultBody
.
success
(
map
)
;
return
map
;
}
@Override
...
...
@@ -159,7 +166,7 @@ public class WechatPayServiceImpl implements WechatPayService {
wxPayLogDO
.
setBankType
(
transaction
.
getBankType
());
wxPayLogDO
.
setAttach
(
transaction
.
getAttach
());
wxPayLogDO
.
setSuccessTime
(
transaction
.
getSuccessTime
());
wxPayLogDO
.
setWxNotifyOpenid
(
transaction
.
getPayer
().
get
Sp
Openid
());
wxPayLogDO
.
setWxNotifyOpenid
(
transaction
.
getPayer
().
getOpenid
());
wxPayLogDO
.
setWxNotifyTotal
(
transaction
.
getAmount
().
getTotal
());
wxPayLogDO
.
setWxNotifyPayerTotal
(
transaction
.
getAmount
().
getPayerTotal
());
wxPayLogDO
.
setTradeType
(
transaction
.
getTradeType
().
toString
());
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论