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 @@
package
com.jeequan.jeepay.pay.channel.jeepluspay.payway
;
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.exception.BizException
;
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.model.PayOrderCreateReqModel
;
import
com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit
;
import
com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService
;
import
com.jeequan.jeepay.pay.model.MchAppConfigContext
;
import
com.jeequan.jeepay.pay.rqrs.AbstractRS
;
import
com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg
;
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
Lite
OrderRS
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.Wx
Jsapi
OrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.Wx
Jsapi
OrderRS
;
import
com.jeequan.jeepay.pay.util.ApiResBuilder
;
import
com.jeequan.jeepay.request.PayOrderCreateRequest
;
import
com.jeequan.jeepay.response.PayOrderCreateResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -52,7 +48,7 @@ public class WxLite extends JeepluspayPaymentService {
@Override
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
()))
{
throw
new
BizException
(
"[openid]不可为空"
);
}
...
...
@@ -61,59 +57,37 @@ public class WxLite extends JeepluspayPaymentService {
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
throws
Exception
{
WxLiteOrderRQ
bizRQ
=
(
WxLiteOrderRQ
)
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
);
WxJsapiOrderRQ
bizRQ
=
(
WxJsapiOrderRQ
)
rq
;
// 构造函数响应数据
Wx
Lite
OrderRS
res
=
ApiResBuilder
.
buildSuccess
(
Wx
Lite
OrderRS
.
class
);
Wx
Jsapi
OrderRS
res
=
ApiResBuilder
.
buildSuccess
(
Wx
Jsapi
OrderRS
.
class
);
ChannelRetMsg
channelRetMsg
=
new
ChannelRetMsg
();
res
.
setChannelRetMsg
(
channelRetMsg
);
try
{
// 发起统一下单
PayOrderCreateResponse
response
=
new
PayOrderCreateResponse
();
boolean
checkSign
=
false
;
boolean
isSuccess
=
false
;
if
(
normalMchParams
.
getSignType
().
equals
(
JeepluspayConfig
.
DEFAULT_SIGN_TYPE
)
||
StringUtils
.
isEmpty
(
normalMchParams
.
getSignType
()))
{
JeepayClient
jeepayClient
=
JeepayClient
.
getInstance
(
normalMchParams
.
getAppId
(),
normalMchParams
.
getAppSecret
(),
Jeepay
.
getApiBase
());
response
=
jeepayClient
.
execute
(
request
);
checkSign
=
response
.
checkSign
(
normalMchParams
.
getAppSecret
());
isSuccess
=
response
.
isSuccess
(
normalMchParams
.
getAppSecret
());
// 构建请求数据
PayOrderCreateReqModel
model
=
new
PayOrderCreateReqModel
();
// 支付方式
model
.
setWayCode
(
JeepluspayConfig
.
WX_LITE
);
// 异步通知地址
model
.
setNotifyUrl
(
getNotifyUrl
());
JSONObject
channelExtra
=
new
JSONObject
();
channelExtra
.
put
(
"openid"
,
bizRQ
.
getOpenid
());
// 微信openId
model
.
setChannelExtra
(
channelExtra
.
toString
());
}
else
if
(
normalMchParams
.
getSignType
().
equals
(
JeepluspayConfig
.
SIGN_TYPE_RSA2
))
{
JeepayClient
jeepayClient
=
JeepayClient
.
getInstance
(
normalMchParams
.
getAppId
(),
normalMchParams
.
getRsa2AppPrivateKey
(),
Jeepay
.
getApiBase
());
response
=
jeepayClient
.
executeByRSA2
(
request
);
checkSign
=
response
.
checkSignByRsa2
(
normalMchParams
.
getRsa2PayPublicKey
());
isSuccess
=
response
.
isSuccessByRsa2
(
normalMchParams
.
getRsa2PayPublicKey
());
}
// 发起统一下单
PayOrderCreateResponse
response
=
JeepluspayKit
.
payRequest
(
payOrder
,
mchAppConfigContext
,
model
);
// 下单返回状态
Boolean
isSuccess
=
JeepluspayKit
.
checkPayResp
(
response
,
mchAppConfigContext
);
if
(
checkSign
)
{
if
(
isSuccess
)
{
// 下单成功
res
.
setPayInfo
(
response
.
getData
().
getString
(
"payData"
));
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getPayOrderId
());
if
(
isSuccess
)
{
// 下单成功
JSONObject
payData
=
response
.
getData
().
getJSONObject
(
"payData"
);
res
.
setPayInfo
(
payData
.
toJSONString
());
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
WAITING
);
}
else
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
channelRetMsg
.
setChannelErrCode
(
response
.
get
().
getErrCode
());
channelRetMsg
.
setChannelErrMsg
(
response
.
get
().
getErrMsg
());
}
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
)
{
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 @@
*/
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.entity.PayOrder
;
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.model.PayOrderCreateReqModel
;
import
com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit
;
import
com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService
;
import
com.jeequan.jeepay.pay.model.MchAppConfigContext
;
import
com.jeequan.jeepay.pay.rqrs.AbstractRS
;
...
...
@@ -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.WxNativeOrderRS
;
import
com.jeequan.jeepay.pay.util.ApiResBuilder
;
import
com.jeequan.jeepay.request.PayOrderCreateRequest
;
import
com.jeequan.jeepay.response.PayOrderCreateResponse
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
/*
...
...
@@ -54,59 +50,37 @@ public class WxNative extends JeepluspayPaymentService {
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
throws
Exception
{
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
);
ChannelRetMsg
channelRetMsg
=
new
ChannelRetMsg
();
res
.
setChannelRetMsg
(
channelRetMsg
);
try
{
// 发起统一下单
PayOrderCreateResponse
response
=
new
PayOrderCreateResponse
();
boolean
checkSign
=
false
;
boolean
isSuccess
=
false
;
if
(
normalMchParams
.
getSignType
().
equals
(
JeepluspayConfig
.
DEFAULT_SIGN_TYPE
)
||
StringUtils
.
isEmpty
(
normalMchParams
.
getSignType
()))
{
JeepayClient
jeepayClient
=
JeepayClient
.
getInstance
(
normalMchParams
.
getAppId
(),
normalMchParams
.
getAppSecret
(),
Jeepay
.
getApiBase
());
response
=
jeepayClient
.
execute
(
request
);
checkSign
=
response
.
checkSign
(
normalMchParams
.
getAppSecret
());
isSuccess
=
response
.
isSuccess
(
normalMchParams
.
getAppSecret
());
// 构建请求数据
PayOrderCreateReqModel
model
=
new
PayOrderCreateReqModel
();
// 支付方式
model
.
setWayCode
(
JeepluspayConfig
.
WX_NATIVE
);
// 异步通知地址
model
.
setNotifyUrl
(
getNotifyUrl
());
}
else
if
(
normalMchParams
.
getSignType
().
equals
(
JeepluspayConfig
.
SIGN_TYPE_RSA2
))
{
JeepayClient
jeepayClient
=
JeepayClient
.
getInstance
(
normalMchParams
.
getAppId
(),
normalMchParams
.
getRsa2AppPrivateKey
(),
Jeepay
.
getApiBase
());
response
=
jeepayClient
.
executeByRSA2
(
request
);
checkSign
=
response
.
checkSignByRsa2
(
normalMchParams
.
getRsa2PayPublicKey
());
isSuccess
=
response
.
isSuccessByRsa2
(
normalMchParams
.
getRsa2PayPublicKey
());
}
// 发起统一下单
PayOrderCreateResponse
response
=
JeepluspayKit
.
payRequest
(
payOrder
,
mchAppConfigContext
,
model
);
// 下单返回状态
Boolean
isSuccess
=
JeepluspayKit
.
checkPayResp
(
response
,
mchAppConfigContext
);
if
(
checkSign
)
{
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
()));
}
else
{
res
.
setCodeUrl
(
response
.
get
().
getPayData
());
}
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
WAITING
);
if
(
isSuccess
)
{
// 下单成功
// 二维码图片地址
if
(
CS
.
PAY_DATA_TYPE
.
CODE_IMG_URL
.
equals
(
bizRQ
.
getPayDataType
()))
{
res
.
setCodeImgUrl
(
sysConfigService
.
getDBApplicationConfig
().
genScanImgUrl
(
response
.
get
().
getPayData
()));
}
else
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
channelRetMsg
.
setChannelErrCode
(
response
.
get
().
getErrCode
());
channelRetMsg
.
setChannelErrMsg
(
response
.
get
().
getErrMsg
());
res
.
setCodeUrl
(
response
.
get
().
getPayData
());
}
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
)
{
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