Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Jeepay
Commits
29a249b5
Commit
29a249b5
authored
Aug 24, 2022
by
xiaoyu
Browse files
jeepay支付通道优化
parent
2743de4b
Changes
22
Hide whitespace changes
Inline
Side-by-side
jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxLite.java
View file @
29a249b5
...
@@ -16,24 +16,20 @@
...
@@ -16,24 +16,20 @@
package
com.jeequan.jeepay.pay.channel.jeepluspay.payway
;
package
com.jeequan.jeepay.pay.channel.jeepluspay.payway
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.jeequan.jeepay.Jeepay
;
import
com.jeequan.jeepay.JeepayClient
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.core.entity.PayOrder
;
import
com.jeequan.jeepay.core.entity.PayOrder
;
import
com.jeequan.jeepay.core.exception.BizException
;
import
com.jeequan.jeepay.core.exception.BizException
;
import
com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig
;
import
com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig
;
import
com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams
;
import
com.jeequan.jeepay.exception.JeepayException
;
import
com.jeequan.jeepay.exception.JeepayException
;
import
com.jeequan.jeepay.model.PayOrderCreateReqModel
;
import
com.jeequan.jeepay.model.PayOrderCreateReqModel
;
import
com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit
;
import
com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService
;
import
com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService
;
import
com.jeequan.jeepay.pay.model.MchAppConfigContext
;
import
com.jeequan.jeepay.pay.model.MchAppConfigContext
;
import
com.jeequan.jeepay.pay.rqrs.AbstractRS
;
import
com.jeequan.jeepay.pay.rqrs.AbstractRS
;
import
com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg
;
import
com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg
;
import
com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.Wx
Lite
OrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.Wx
Jsapi
OrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.Wx
Lite
OrderRS
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.Wx
Jsapi
OrderRS
;
import
com.jeequan.jeepay.pay.util.ApiResBuilder
;
import
com.jeequan.jeepay.pay.util.ApiResBuilder
;
import
com.jeequan.jeepay.request.PayOrderCreateRequest
;
import
com.jeequan.jeepay.response.PayOrderCreateResponse
;
import
com.jeequan.jeepay.response.PayOrderCreateResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
@@ -52,7 +48,7 @@ public class WxLite extends JeepluspayPaymentService {
...
@@ -52,7 +48,7 @@ public class WxLite extends JeepluspayPaymentService {
@Override
@Override
public
String
preCheck
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
)
{
public
String
preCheck
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
)
{
Wx
Lite
OrderRQ
bizRQ
=
(
Wx
Lite
OrderRQ
)
rq
;
Wx
Jsapi
OrderRQ
bizRQ
=
(
Wx
Jsapi
OrderRQ
)
rq
;
if
(
StringUtils
.
isEmpty
(
bizRQ
.
getOpenid
()))
{
if
(
StringUtils
.
isEmpty
(
bizRQ
.
getOpenid
()))
{
throw
new
BizException
(
"[openid]不可为空"
);
throw
new
BizException
(
"[openid]不可为空"
);
}
}
...
@@ -61,59 +57,37 @@ public class WxLite extends JeepluspayPaymentService {
...
@@ -61,59 +57,37 @@ public class WxLite extends JeepluspayPaymentService {
@Override
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
throws
Exception
{
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
throws
Exception
{
WxLiteOrderRQ
bizRQ
=
(
WxLiteOrderRQ
)
rq
;
WxJsapiOrderRQ
bizRQ
=
(
WxJsapiOrderRQ
)
rq
;
JeepluspayNormalMchParams
normalMchParams
=
(
JeepluspayNormalMchParams
)
configContextQueryService
.
queryNormalMchParams
(
mchAppConfigContext
.
getMchNo
(),
mchAppConfigContext
.
getAppId
(),
CS
.
IF_CODE
.
JEEPLUSPAY
);
// 构建请求数据
PayOrderCreateRequest
request
=
new
PayOrderCreateRequest
();
PayOrderCreateReqModel
model
=
new
PayOrderCreateReqModel
();
model
.
setMchNo
(
normalMchParams
.
getMerchantNo
());
// 商户号
model
.
setAppId
(
normalMchParams
.
getAppId
());
// 应用ID
model
.
setMchOrderNo
(
payOrder
.
getPayOrderId
());
// 商户订单号
model
.
setWayCode
(
JeepluspayConfig
.
WX_LITE
);
// 支付方式
model
.
setAmount
(
payOrder
.
getAmount
());
// 金额,单位分
model
.
setCurrency
(
payOrder
.
getCurrency
());
// 币种,目前只支持cny
model
.
setClientIp
(
payOrder
.
getClientIp
());
// 发起支付请求客户端的IP地址
model
.
setSubject
(
payOrder
.
getSubject
());
// 商品标题
model
.
setBody
(
payOrder
.
getBody
());
// 商品描述
model
.
setNotifyUrl
(
getNotifyUrl
());
// 异步通知地址
JSONObject
channelExtra
=
new
JSONObject
();
channelExtra
.
put
(
"openid"
,
bizRQ
.
getOpenid
());
model
.
setChannelExtra
(
channelExtra
.
toString
());
// 微信openId
request
.
setBizModel
(
model
);
// 构造函数响应数据
// 构造函数响应数据
Wx
Lite
OrderRS
res
=
ApiResBuilder
.
buildSuccess
(
Wx
Lite
OrderRS
.
class
);
Wx
Jsapi
OrderRS
res
=
ApiResBuilder
.
buildSuccess
(
Wx
Jsapi
OrderRS
.
class
);
ChannelRetMsg
channelRetMsg
=
new
ChannelRetMsg
();
ChannelRetMsg
channelRetMsg
=
new
ChannelRetMsg
();
res
.
setChannelRetMsg
(
channelRetMsg
);
res
.
setChannelRetMsg
(
channelRetMsg
);
try
{
try
{
// 发起统一下单
// 构建请求数据
PayOrderCreateResponse
response
=
new
PayOrderCreateResponse
();
PayOrderCreateReqModel
model
=
new
PayOrderCreateReqModel
();
boolean
checkSign
=
false
;
// 支付方式
boolean
isSuccess
=
false
;
model
.
setWayCode
(
JeepluspayConfig
.
WX_LITE
);
if
(
normalMchParams
.
getSignType
().
equals
(
JeepluspayConfig
.
DEFAULT_SIGN_TYPE
)
||
StringUtils
.
isEmpty
(
normalMchParams
.
getSignType
()))
{
// 异步通知地址
JeepayClient
jeepayClient
=
JeepayClient
.
getInstance
(
normalMchParams
.
getAppId
(),
normalMchParams
.
getAppSecret
(),
Jeepay
.
getApiBase
());
model
.
setNotifyUrl
(
getNotifyUrl
());
response
=
jeepayClient
.
execute
(
request
);
JSONObject
channelExtra
=
new
JSONObject
();
checkSign
=
response
.
checkSign
(
normalMchParams
.
getAppSecret
());
channelExtra
.
put
(
"openid"
,
bizRQ
.
getOpenid
());
isSuccess
=
response
.
isSuccess
(
normalMchParams
.
getAppSecret
());
// 微信openId
model
.
setChannelExtra
(
channelExtra
.
toString
());
}
else
if
(
normalMchParams
.
getSignType
().
equals
(
JeepluspayConfig
.
SIGN_TYPE_RSA2
))
{
// 发起统一下单
JeepayClient
jeepayClient
=
JeepayClient
.
getInstance
(
normalMchParams
.
getAppId
(),
normalMchParams
.
getRsa2AppPrivateKey
(),
Jeepay
.
getApiBase
());
PayOrderCreateResponse
response
=
JeepluspayKit
.
payRequest
(
payOrder
,
mchAppConfigContext
,
model
);
response
=
jeepayClient
.
executeByRSA2
(
request
);
// 下单返回状态
checkSign
=
response
.
checkSignByRsa2
(
normalMchParams
.
getRsa2PayPublicKey
());
Boolean
isSuccess
=
JeepluspayKit
.
checkPayResp
(
response
,
mchAppConfigContext
);
isSuccess
=
response
.
isSuccessByRsa2
(
normalMchParams
.
getRsa2PayPublicKey
());
}
if
(
checkSign
)
{
if
(
isSuccess
)
{
// 下单成功
res
.
setPayInfo
(
response
.
getData
().
getString
(
"payData"
));
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getPayOrderId
());
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getPayOrderId
());
if
(
isSuccess
)
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
WAITING
);
// 下单成功
}
else
{
JSONObject
payData
=
response
.
getData
().
getJSONObject
(
"payData"
);
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
res
.
setPayInfo
(
payData
.
toJSONString
());
channelRetMsg
.
setChannelErrCode
(
response
.
get
().
getErrCode
());
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
WAITING
);
channelRetMsg
.
setChannelErrMsg
(
response
.
get
().
getErrMsg
());
}
else
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
channelRetMsg
.
setChannelErrCode
(
response
.
get
().
getErrCode
());
channelRetMsg
.
setChannelErrMsg
(
response
.
get
().
getErrMsg
());
}
}
}
}
catch
(
JeepayException
e
)
{
}
catch
(
JeepayException
e
)
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
...
...
jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxNative.java
View file @
29a249b5
...
@@ -15,14 +15,12 @@
...
@@ -15,14 +15,12 @@
*/
*/
package
com.jeequan.jeepay.pay.channel.jeepluspay.payway
;
package
com.jeequan.jeepay.pay.channel.jeepluspay.payway
;
import
com.jeequan.jeepay.Jeepay
;
import
com.jeequan.jeepay.JeepayClient
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.core.entity.PayOrder
;
import
com.jeequan.jeepay.core.entity.PayOrder
;
import
com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig
;
import
com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig
;
import
com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams
;
import
com.jeequan.jeepay.exception.JeepayException
;
import
com.jeequan.jeepay.exception.JeepayException
;
import
com.jeequan.jeepay.model.PayOrderCreateReqModel
;
import
com.jeequan.jeepay.model.PayOrderCreateReqModel
;
import
com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit
;
import
com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService
;
import
com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService
;
import
com.jeequan.jeepay.pay.model.MchAppConfigContext
;
import
com.jeequan.jeepay.pay.model.MchAppConfigContext
;
import
com.jeequan.jeepay.pay.rqrs.AbstractRS
;
import
com.jeequan.jeepay.pay.rqrs.AbstractRS
;
...
@@ -31,9 +29,7 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ;
...
@@ -31,9 +29,7 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.WxNativeOrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.WxNativeOrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.WxNativeOrderRS
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.WxNativeOrderRS
;
import
com.jeequan.jeepay.pay.util.ApiResBuilder
;
import
com.jeequan.jeepay.pay.util.ApiResBuilder
;
import
com.jeequan.jeepay.request.PayOrderCreateRequest
;
import
com.jeequan.jeepay.response.PayOrderCreateResponse
;
import
com.jeequan.jeepay.response.PayOrderCreateResponse
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
/*
/*
...
@@ -54,59 +50,37 @@ public class WxNative extends JeepluspayPaymentService {
...
@@ -54,59 +50,37 @@ public class WxNative extends JeepluspayPaymentService {
@Override
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
throws
Exception
{
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
throws
Exception
{
WxNativeOrderRQ
bizRQ
=
(
WxNativeOrderRQ
)
rq
;
WxNativeOrderRQ
bizRQ
=
(
WxNativeOrderRQ
)
rq
;
JeepluspayNormalMchParams
normalMchParams
=
(
JeepluspayNormalMchParams
)
configContextQueryService
.
queryNormalMchParams
(
mchAppConfigContext
.
getMchNo
(),
mchAppConfigContext
.
getAppId
(),
CS
.
IF_CODE
.
JEEPLUSPAY
);
// 构建请求数据
PayOrderCreateRequest
request
=
new
PayOrderCreateRequest
();
PayOrderCreateReqModel
model
=
new
PayOrderCreateReqModel
();
model
.
setMchNo
(
normalMchParams
.
getMerchantNo
());
// 商户号
model
.
setAppId
(
normalMchParams
.
getAppId
());
// 应用ID
model
.
setMchOrderNo
(
payOrder
.
getPayOrderId
());
// 商户订单号
model
.
setWayCode
(
JeepluspayConfig
.
WX_NATIVE
);
// 支付方式
model
.
setAmount
(
payOrder
.
getAmount
());
// 金额,单位分
model
.
setCurrency
(
payOrder
.
getCurrency
());
// 币种,目前只支持cny
model
.
setClientIp
(
payOrder
.
getClientIp
());
// 发起支付请求客户端的IP地址
model
.
setSubject
(
payOrder
.
getSubject
());
// 商品标题
model
.
setBody
(
payOrder
.
getBody
());
// 商品描述
model
.
setNotifyUrl
(
getNotifyUrl
());
// 异步通知地址
request
.
setBizModel
(
model
);
// 构造函数响应数据
// 构造函数响应数据
WxNativeOrderRS
res
=
ApiResBuilder
.
buildSuccess
(
WxNativeOrderRS
.
class
);
WxNativeOrderRS
res
=
ApiResBuilder
.
buildSuccess
(
WxNativeOrderRS
.
class
);
ChannelRetMsg
channelRetMsg
=
new
ChannelRetMsg
();
ChannelRetMsg
channelRetMsg
=
new
ChannelRetMsg
();
res
.
setChannelRetMsg
(
channelRetMsg
);
res
.
setChannelRetMsg
(
channelRetMsg
);
try
{
try
{
// 发起统一下单
// 构建请求数据
PayOrderCreateResponse
response
=
new
PayOrderCreateResponse
();
PayOrderCreateReqModel
model
=
new
PayOrderCreateReqModel
();
boolean
checkSign
=
false
;
// 支付方式
boolean
isSuccess
=
false
;
model
.
setWayCode
(
JeepluspayConfig
.
WX_NATIVE
);
if
(
normalMchParams
.
getSignType
().
equals
(
JeepluspayConfig
.
DEFAULT_SIGN_TYPE
)
||
StringUtils
.
isEmpty
(
normalMchParams
.
getSignType
()))
{
// 异步通知地址
JeepayClient
jeepayClient
=
JeepayClient
.
getInstance
(
normalMchParams
.
getAppId
(),
normalMchParams
.
getAppSecret
(),
Jeepay
.
getApiBase
());
model
.
setNotifyUrl
(
getNotifyUrl
());
response
=
jeepayClient
.
execute
(
request
);
checkSign
=
response
.
checkSign
(
normalMchParams
.
getAppSecret
());
isSuccess
=
response
.
isSuccess
(
normalMchParams
.
getAppSecret
());
}
else
if
(
normalMchParams
.
getSignType
().
equals
(
JeepluspayConfig
.
SIGN_TYPE_RSA2
))
{
// 发起统一下单
JeepayClient
jeepayClient
=
JeepayClient
.
getInstance
(
normalMchParams
.
getAppId
(),
normalMchParams
.
getRsa2AppPrivateKey
(),
Jeepay
.
getApiBase
());
PayOrderCreateResponse
response
=
JeepluspayKit
.
payRequest
(
payOrder
,
mchAppConfigContext
,
model
);
response
=
jeepayClient
.
executeByRSA2
(
request
);
// 下单返回状态
checkSign
=
response
.
checkSignByRsa2
(
normalMchParams
.
getRsa2PayPublicKey
());
Boolean
isSuccess
=
JeepluspayKit
.
checkPayResp
(
response
,
mchAppConfigContext
);
isSuccess
=
response
.
isSuccessByRsa2
(
normalMchParams
.
getRsa2PayPublicKey
());
}
if
(
checkSign
)
{
if
(
isSuccess
)
{
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getPayOrderId
());
// 下单成功
if
(
isSuccess
)
{
// 二维码图片地址
// 下单成功
if
(
CS
.
PAY_DATA_TYPE
.
CODE_IMG_URL
.
equals
(
bizRQ
.
getPayDataType
()))
{
// 二维码图片地址
res
.
setCodeImgUrl
(
sysConfigService
.
getDBApplicationConfig
().
genScanImgUrl
(
response
.
get
().
getPayData
()));
if
(
CS
.
PAY_DATA_TYPE
.
CODE_IMG_URL
.
equals
(
bizRQ
.
getPayDataType
()))
{
res
.
setCodeImgUrl
(
sysConfigService
.
getDBApplicationConfig
().
genScanImgUrl
(
response
.
get
().
getPayData
()));
}
else
{
res
.
setCodeUrl
(
response
.
get
().
getPayData
());
}
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
WAITING
);
}
else
{
}
else
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
res
.
setCodeUrl
(
response
.
get
().
getPayData
());
channelRetMsg
.
setChannelErrCode
(
response
.
get
().
getErrCode
());
channelRetMsg
.
setChannelErrMsg
(
response
.
get
().
getErrMsg
());
}
}
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getPayOrderId
());
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
WAITING
);
}
else
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
channelRetMsg
.
setChannelErrCode
(
response
.
get
().
getErrCode
());
channelRetMsg
.
setChannelErrMsg
(
response
.
get
().
getErrMsg
());
}
}
}
catch
(
JeepayException
e
)
{
}
catch
(
JeepayException
e
)
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
...
...
Prev
1
2
Next
Write
Preview
Supports
Markdown
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