Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fit-finance
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fitness-server
fit-finance
Commits
283a9c1f
Commit
283a9c1f
authored
Apr 24, 2024
by
程裕兵
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:app pay
parent
532339d7
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
196 additions
and
9 deletions
+196
-9
api/src/main/java/com/jiejing/fitness/finance/api/pay/FitPayApi.java
+5
-0
api/src/main/java/com/jiejing/fitness/finance/api/pay/FitPayApiFallback.java
+6
-0
api/src/main/java/com/jiejing/fitness/finance/api/pay/request/AppPayRequest.java
+58
-0
app/src/main/java/com/jiejing/fitness/finance/app/controller/pay/FitPayController.java
+9
-9
app/src/main/resources/application-canary.yml
+3
-0
app/src/main/resources/application-dev.yml
+3
-0
app/src/main/resources/application-local.yml
+3
-0
app/src/main/resources/application-prod.yml
+3
-0
app/src/main/resources/application-rc.yml
+2
-0
service/src/main/java/com/jiejing/fitness/finance/service/config/PayChannelProperties.java
+4
-0
service/src/main/java/com/jiejing/fitness/finance/service/pay/PayService.java
+9
-0
service/src/main/java/com/jiejing/fitness/finance/service/pay/impl/PayServiceImpl.java
+33
-0
service/src/main/java/com/jiejing/fitness/finance/service/pay/params/AppPayParams.java
+58
-0
No files found.
api/src/main/java/com/jiejing/fitness/finance/api/pay/FitPayApi.java
View file @
283a9c1f
package
com
.
jiejing
.
fitness
.
finance
.
api
.
pay
;
import
com.jiejing.common.model.JsonResult
;
import
com.jiejing.fitness.finance.api.pay.request.AppPayRequest
;
import
com.jiejing.fitness.finance.api.pay.request.NativePayRequest
;
import
com.jiejing.paycenter.api.pay.request.PayRequest
;
import
com.jiejing.paycenter.api.pay.request.SyncPayRequest
;
...
...
@@ -22,6 +23,10 @@ public interface FitPayApi {
@PostMapping
(
value
=
"/private/pay/nativePay"
)
JsonResult
<
PayVO
>
nativePay
(
NativePayRequest
request
);
@ApiOperation
(
value
=
"app支付"
,
tags
=
{
TAG
})
@PostMapping
(
value
=
"/private/pay/appPay"
)
JsonResult
<
PayVO
>
appPay
(
AppPayRequest
request
);
@ApiOperation
(
value
=
"同步支付状态"
,
tags
=
{
TAG
})
@PostMapping
(
value
=
"/private/pay/get"
)
JsonResult
<
PayVO
>
get
(
SyncPayRequest
request
);
...
...
api/src/main/java/com/jiejing/fitness/finance/api/pay/FitPayApiFallback.java
View file @
283a9c1f
package
com
.
jiejing
.
fitness
.
finance
.
api
.
pay
;
import
com.jiejing.common.model.JsonResult
;
import
com.jiejing.fitness.finance.api.pay.request.AppPayRequest
;
import
com.jiejing.fitness.finance.api.pay.request.NativePayRequest
;
import
com.jiejing.paycenter.api.pay.request.PayRequest
;
import
com.jiejing.paycenter.api.pay.request.SyncPayRequest
;
...
...
@@ -25,6 +26,11 @@ public class FitPayApiFallback implements FallbackFactory<FitPayApi> {
}
@Override
public
JsonResult
<
PayVO
>
appPay
(
AppPayRequest
request
)
{
return
JsonResult
.
rpcError
();
}
@Override
public
JsonResult
<
PayVO
>
get
(
SyncPayRequest
request
)
{
return
JsonResult
.
rpcError
();
}
...
...
api/src/main/java/com/jiejing/fitness/finance/api/pay/request/AppPayRequest.java
0 → 100644
View file @
283a9c1f
package
com
.
jiejing
.
fitness
.
finance
.
api
.
pay
.
request
;
import
com.alibaba.fastjson.JSONObject
;
import
com.jiejing.fitness.enums.finance.PayOrderTypeEnum
;
import
com.jiejing.paycenter.common.enums.common.PayChannelEnums
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.math.BigDecimal
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author chengyubing
* @since 2024/4/11 13:58
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel
(
description
=
"App支付请求"
)
public
class
AppPayRequest
{
@ApiModelProperty
(
name
=
"业务订单号"
,
required
=
true
)
@NotBlank
(
message
=
"业务订单号不能为空"
)
private
String
orderNo
;
@ApiModelProperty
(
name
=
"支付渠道"
,
required
=
true
)
@NotNull
(
message
=
"支付渠道不能为空"
)
private
PayChannelEnums
channel
;
@ApiModelProperty
(
name
=
"业务订单类型"
,
required
=
true
)
@NotNull
(
message
=
"业务订单类型不能为空"
)
private
PayOrderTypeEnum
orderType
;
@ApiModelProperty
(
name
=
"商品名称"
,
required
=
true
)
@NotBlank
(
message
=
"商品名称不能为空"
)
private
String
goods
;
@ApiModelProperty
(
name
=
"支付总金额(元)"
,
required
=
true
)
@NotNull
(
message
=
"支付总金额不能为空"
)
private
BigDecimal
amount
;
@ApiModelProperty
(
name
=
"过期时间(单位:秒)"
,
required
=
true
)
@NotNull
(
message
=
"过期时间不能为空"
)
@Min
(
value
=
60
,
message
=
"过期时间最低60秒"
)
private
Integer
timeExpire
;
@ApiModelProperty
(
name
=
"业务扩展信息"
,
required
=
true
)
@NotNull
(
message
=
"业务参扩展信息不能为空"
)
private
JSONObject
extra
;
}
\ No newline at end of file
app/src/main/java/com/jiejing/fitness/finance/app/controller/pay/FitPayController.java
View file @
283a9c1f
package
com
.
jiejing
.
fitness
.
finance
.
app
.
controller
.
pay
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.toolkit.IdWorker
;
import
com.jiejing.common.exception.BizException
;
import
com.jiejing.common.model.JsonResult
;
import
com.jiejing.common.utils.convert.BeanUtil
;
import
com.jiejing.fitness.enums.finance.PayOrderTypeEnum
;
import
com.jiejing.fitness.finance.api.pay.FitPayApi
;
import
com.jiejing.fitness.finance.api.pay.request.AppPayRequest
;
import
com.jiejing.fitness.finance.api.pay.request.NativePayRequest
;
import
com.jiejing.fitness.finance.service.enums.FinanceErrorEnums
;
import
com.jiejing.fitness.finance.service.pay.PayService
;
import
com.jiejing.fitness.finance.service.pay.params.AppPayParams
;
import
com.jiejing.fitness.finance.service.pay.params.NativePayParams
;
import
com.jiejing.paycenter.api.pay.PayApi
;
import
com.jiejing.paycenter.api.pay.request.PayRequest
;
import
com.jiejing.paycenter.api.pay.request.SyncPayRequest
;
import
com.jiejing.paycenter.common.enums.pay.PayTypeEnums
;
import
com.jiejing.paycenter.common.model.vo.PayVO
;
import
io.swagger.annotations.ApiOperation
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
javax.annotation.Resource
;
import
javax.validation.Valid
;
import
org.springframework.web.bind.annotation.PostMapping
;
...
...
@@ -45,6 +38,13 @@ public class FitPayController implements FitPayApi {
return
JsonResult
.
success
(
payService
.
nativePay
(
BeanUtil
.
map
(
request
,
NativePayParams
.
class
)));
}
@ApiOperation
(
value
=
"app支付"
,
tags
=
{
TAG
})
@PostMapping
(
value
=
"/private/pay/appPay"
)
@Override
public
JsonResult
<
PayVO
>
appPay
(
@RequestBody
@Valid
AppPayRequest
request
)
{
return
JsonResult
.
success
(
payService
.
appPay
(
BeanUtil
.
map
(
request
,
AppPayParams
.
class
)));
}
@ApiOperation
(
value
=
"同步支付状态"
,
tags
=
{
TAG
})
@PostMapping
(
value
=
"/private/pay/get"
)
public
JsonResult
<
PayVO
>
get
(
@RequestBody
@Valid
SyncPayRequest
request
)
{
...
...
app/src/main/resources/application-canary.yml
View file @
283a9c1f
...
...
@@ -19,3 +19,5 @@ finance:
cashier
:
"
001"
ali_native
:
"
002"
wx_native
:
"
003"
ali_app
:
"
002"
wx_app
:
"
003"
\ No newline at end of file
app/src/main/resources/application-dev.yml
View file @
283a9c1f
...
...
@@ -19,3 +19,5 @@ finance:
cashier
:
"
001"
ali_native
:
"
002"
wx_native
:
"
003"
ali_app
:
"
002"
wx_app
:
"
003"
\ No newline at end of file
app/src/main/resources/application-local.yml
View file @
283a9c1f
...
...
@@ -24,3 +24,5 @@ finance:
cashier
:
"
001"
ali_native
:
"
002"
wx_native
:
"
003"
ali_app
:
"
002"
wx_app
:
"
003"
\ No newline at end of file
app/src/main/resources/application-prod.yml
View file @
283a9c1f
...
...
@@ -19,3 +19,5 @@ finance:
cashier
:
"
001"
ali_native
:
"
002"
wx_native
:
"
003"
ali_app
:
"
002"
wx_app
:
"
003"
\ No newline at end of file
app/src/main/resources/application-rc.yml
View file @
283a9c1f
...
...
@@ -19,3 +19,5 @@ finance:
cashier
:
"
001"
ali_native
:
"
002"
wx_native
:
"
003"
ali_app
:
"
002"
wx_app
:
"
003"
service/src/main/java/com/jiejing/fitness/finance/service/config/PayChannelProperties.java
View file @
283a9c1f
...
...
@@ -19,4 +19,8 @@ public class PayChannelProperties {
private
String
wxNative
;
private
String
wxApp
;
private
String
aliApp
;
}
service/src/main/java/com/jiejing/fitness/finance/service/pay/PayService.java
View file @
283a9c1f
package
com
.
jiejing
.
fitness
.
finance
.
service
.
pay
;
import
com.jiejing.fitness.finance.service.pay.params.AppPayParams
;
import
com.jiejing.fitness.finance.service.pay.params.NativePayParams
;
import
com.jiejing.fitness.finance.service.pay.params.StudioMerchantPayParams
;
import
com.jiejing.fitness.finance.service.pay.params.BrandMerchantRefundParams
;
...
...
@@ -35,6 +36,14 @@ public interface PayService {
PayVO
nativePay
(
NativePayParams
params
);
/**
* App支付
*
* @param params 参数
* @return 结果
*/
PayVO
appPay
(
AppPayParams
params
);
/**
* 支付
*
* @param params 请求参数
...
...
service/src/main/java/com/jiejing/fitness/finance/service/pay/impl/PayServiceImpl.java
View file @
283a9c1f
...
...
@@ -35,6 +35,7 @@ import com.jiejing.fitness.finance.service.enums.GlobalConfigEnums;
import
com.jiejing.fitness.finance.service.pay.PayService
;
import
com.jiejing.fitness.finance.service.pay.convert.PayConvert
;
import
com.jiejing.fitness.finance.service.pay.enums.PayFailMessageReplaceEnums
;
import
com.jiejing.fitness.finance.service.pay.params.AppPayParams
;
import
com.jiejing.fitness.finance.service.pay.params.BrandMerchantRefundParams
;
import
com.jiejing.fitness.finance.service.pay.params.NativePayParams
;
import
com.jiejing.fitness.finance.service.pay.params.StudioMerchantPayParams
;
...
...
@@ -185,6 +186,11 @@ public class PayServiceImpl implements PayService {
}
@Override
public
PayVO
appPay
(
AppPayParams
params
)
{
return
payRpcService
.
pay
(
convertAppPay
(
params
));
}
@Override
public
PayVO
merchantPay
(
StudioMerchantPayParams
params
)
{
Pair
<
PartyToMerchant
,
StudioVO
>
pair
=
this
.
checkBeforeMerchantPay
(
params
);
...
...
@@ -444,6 +450,17 @@ public class PayServiceImpl implements PayService {
}
}
private
String
getChannelNo
(
AppPayParams
params
)
{
switch
(
params
.
getChannel
())
{
case
WX:
return
config
.
getWxApp
();
case
ALI:
return
config
.
getAliApp
();
default
:
throw
new
BizException
(
FinanceErrorEnums
.
NOT_SUPPORT_TYPE
);
}
}
private
PayRequest
convertNativePay
(
NativePayParams
params
)
{
PayRequest
req
=
new
PayRequest
();
req
.
setChannelNo
(
getChannelNo
(
params
));
...
...
@@ -459,6 +476,22 @@ public class PayServiceImpl implements PayService {
return
req
;
}
private
PayRequest
convertAppPay
(
AppPayParams
params
)
{
PayRequest
req
=
new
PayRequest
();
req
.
setChannelNo
(
getChannelNo
(
params
));
req
.
setTransNo
(
IdWorker
.
getIdStr
());
req
.
setAmount
(
params
.
getAmount
());
req
.
setPayType
(
PayTypeEnums
.
APP
);
req
.
setGoods
(
params
.
getGoods
());
req
.
setOrderNo
(
params
.
getOrderNo
());
req
.
setOrderType
(
params
.
getOrderType
().
getCode
());
req
.
setTimeExpire
(
params
.
getTimeExpire
());
req
.
setTradingTime
(
new
Date
());
req
.
setExtra
(
params
.
getExtra
());
return
req
;
}
private
void
sendPaySuccessMessage
(
PayEvent
e
)
{
Long
studioId
=
e
.
getExtra
().
getLong
(
"studioId"
);
String
buyerName
=
e
.
getExtra
().
getString
(
"buyerName"
);
...
...
service/src/main/java/com/jiejing/fitness/finance/service/pay/params/AppPayParams.java
0 → 100644
View file @
283a9c1f
package
com
.
jiejing
.
fitness
.
finance
.
service
.
pay
.
params
;
import
com.alibaba.fastjson.JSONObject
;
import
com.jiejing.fitness.enums.finance.PayOrderTypeEnum
;
import
com.jiejing.paycenter.common.enums.common.PayChannelEnums
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.math.BigDecimal
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author chengyubing
* @since 2024/4/11 13:58
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel
(
description
=
"App支付请求"
)
public
class
AppPayParams
{
@ApiModelProperty
(
name
=
"业务订单号"
,
required
=
true
)
@NotBlank
(
message
=
"业务订单号不能为空"
)
private
String
orderNo
;
@ApiModelProperty
(
name
=
"支付渠道"
,
required
=
true
)
@NotNull
(
message
=
"支付渠道不能为空"
)
private
PayChannelEnums
channel
;
@ApiModelProperty
(
name
=
"业务订单类型"
,
required
=
true
)
@NotNull
(
message
=
"业务订单类型不能为空"
)
private
PayOrderTypeEnum
orderType
;
@ApiModelProperty
(
name
=
"商品名称"
,
required
=
true
)
@NotBlank
(
message
=
"商品名称不能为空"
)
private
String
goods
;
@ApiModelProperty
(
name
=
"支付总金额(元)"
,
required
=
true
)
@NotNull
(
message
=
"支付总金额不能为空"
)
private
BigDecimal
amount
;
@ApiModelProperty
(
name
=
"过期时间(单位:秒)"
,
required
=
true
)
@NotNull
(
message
=
"过期时间不能为空"
)
@Min
(
value
=
60
,
message
=
"过期时间最低60秒"
)
private
Integer
timeExpire
;
@ApiModelProperty
(
name
=
"业务扩展信息"
,
required
=
true
)
@NotNull
(
message
=
"业务参扩展信息不能为空"
)
private
JSONObject
extra
;
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment