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
docs/sql/init.sql
View file @
29a249b5
...
...
@@ -761,7 +761,7 @@ INSERT INTO t_pay_interface_define (if_code, if_name, is_mch_mode, is_isv_mode,
VALUES
(
'jeepluspay'
,
'计全付'
,
1
,
0
,
1
,
NULL
,
NULL
,
'[{"name":"signType","desc":"签名方式","type":"radio","verify":"required","values":"MD5,RSA2","titles":"MD5,RSA2"},{"name":"merchantNo","desc":"计全付商户号","type":"text","verify":"required"},{"name":"appId","desc":"应用ID","type":"text","verify":"required"},{"name":"appSecret","desc":"md5秘钥","type":"textarea","verify":"required","star":"1"},{"name":"rsa2AppPrivateKey","desc":"RSA2: 应用私钥","type":"text","verify":"required","star":"1"},{"name":"rsa2PayPublicKey","desc":"RSA2: 支付网关公钥","type":"text","verify":"required","star":"1"}]'
,
'[{"name":"signType","desc":"签名方式","type":"radio","verify":"required","values":"MD5,RSA2","titles":"MD5,RSA2"},{"name":"merchantNo","desc":"计全付商户号","type":"text","verify":"required"},{"name":"appId","desc":"应用ID","type":"text","verify":"required"},{"name":"appSecret","desc":"md5秘钥","type":"textarea","verify":"required","star":"1"},{"name":"rsa2AppPrivateKey","desc":"RSA2: 应用私钥","type":"text
area
","verify":"required","star":"1"},{"name":"rsa2PayPublicKey","desc":"RSA2: 支付网关公钥","type":"text
area
","verify":"required","star":"1"}]'
,
'[{"wayCode": "ALI_APP"}, {"wayCode": "ALI_BAR"}, {"wayCode": "ALI_JSAPI"}, {"wayCode": "ALI_LITE"}, {"wayCode": "ALI_PC"}, {"wayCode": "ALI_QR"}, {"wayCode": "ALI_WAP"}, {"wayCode": "WX_APP"}, {"wayCode": "WX_BAR"}, {"wayCode": "WX_H5"}, {"wayCode": "WX_JSAPI"}, {"wayCode": "WX_LITE"}, {"wayCode": "WX_NATIVE"}]'
,
'http://jeequan.oss-cn-beijing.aliyuncs.com/jeepay/img/jeepluspay.svg'
,
'#0CACFF'
,
1
,
'计全付'
);
docs/sql/patch.sql
View file @
29a249b5
...
...
@@ -262,6 +262,6 @@ INSERT INTO t_pay_interface_define (if_code, if_name, is_mch_mode, is_isv_mode,
VALUES
(
'jeepluspay'
,
'计全付'
,
1
,
0
,
1
,
NULL
,
NULL
,
'[{"name":"signType","desc":"签名方式","type":"radio","verify":"required","values":"MD5,RSA2","titles":"MD5,RSA2"},{"name":"merchantNo","desc":"计全付商户号","type":"text","verify":"required"},{"name":"appId","desc":"应用ID","type":"text","verify":"required"},{"name":"appSecret","desc":"md5秘钥","type":"textarea","verify":"required","star":"1"},{"name":"rsa2AppPrivateKey","desc":"RSA2: 应用私钥","type":"text","verify":"required","star":"1"},{"name":"rsa2PayPublicKey","desc":"RSA2: 支付网关公钥","type":"text","verify":"required","star":"1"}]'
,
'[{"name":"signType","desc":"签名方式","type":"radio","verify":"required","values":"MD5,RSA2","titles":"MD5,RSA2"},{"name":"merchantNo","desc":"计全付商户号","type":"text","verify":"required"},{"name":"appId","desc":"应用ID","type":"text","verify":"required"},{"name":"appSecret","desc":"md5秘钥","type":"textarea","verify":"required","star":"1"},{"name":"rsa2AppPrivateKey","desc":"RSA2: 应用私钥","type":"text
area
","verify":"required","star":"1"},{"name":"rsa2PayPublicKey","desc":"RSA2: 支付网关公钥","type":"text
area
","verify":"required","star":"1"}]'
,
'[{"wayCode": "ALI_APP"}, {"wayCode": "ALI_BAR"}, {"wayCode": "ALI_JSAPI"}, {"wayCode": "ALI_LITE"}, {"wayCode": "ALI_PC"}, {"wayCode": "ALI_QR"}, {"wayCode": "ALI_WAP"}, {"wayCode": "WX_APP"}, {"wayCode": "WX_BAR"}, {"wayCode": "WX_H5"}, {"wayCode": "WX_JSAPI"}, {"wayCode": "WX_LITE"}, {"wayCode": "WX_NATIVE"}]'
,
'http://jeequan.oss-cn-beijing.aliyuncs.com/jeepay/img/jeepluspay.svg'
,
'#0CACFF'
,
1
,
'计全付'
);
jeepay-core/src/main/java/com/jeequan/jeepay/core/model/params/jeepluspay/JeepluspayConfig.java
View file @
29a249b5
...
...
@@ -36,12 +36,13 @@ public class JeepluspayConfig {
public
static
String
PAY_STATE_FAIL
=
"3"
;
// 3-支付失败
/** 退款订单状态 */
public
static
String
R
efund
_STATE_SUCCESS
=
"2"
;
// 2-退款成功
public
static
String
R
efund
_STATE_FAIL
=
"3"
;
// 3-退款失败
public
static
String
R
EFUND
_STATE_SUCCESS
=
"2"
;
// 2-退款成功
public
static
String
R
EFUND
_STATE_FAIL
=
"3"
;
// 3-退款失败
/** 支付方式 */
public
static
String
ALI_BAR
=
"ALI_BAR"
;
// 支付宝条码
public
static
String
ALI_JSAPI
=
"ALI_JSAPI"
;
// 支付宝生活号
public
static
String
ALI_LITE
=
"ALI_LITE"
;
// 支付宝小程序
public
static
String
ALI_APP
=
"ALI_APP"
;
// 支付宝APP
public
static
String
ALI_WAP
=
"ALI_WAP"
;
// 支付宝WAP
public
static
String
ALI_PC
=
"ALI_PC"
;
// 支付宝PC网站
...
...
jeepay-core/src/main/java/com/jeequan/jeepay/core/model/params/jeepluspay/JeepluspayNormalMchParams.java
View file @
29a249b5
...
...
@@ -42,7 +42,7 @@ public class JeepluspayNormalMchParams extends NormalMchParams {
private
String
signType
;
/** md5秘钥 */
private
String
A
ppSecret
;
private
String
a
ppSecret
;
/** RSA2: 应用私钥 */
private
String
rsa2AppPrivateKey
;
...
...
@@ -55,8 +55,8 @@ public class JeepluspayNormalMchParams extends NormalMchParams {
public
String
deSenData
()
{
JeepluspayNormalMchParams
mchParams
=
this
;
if
(
StringUtils
.
isNotBlank
(
this
.
A
ppSecret
))
{
mchParams
.
setAppSecret
(
StringKit
.
str2Star
(
this
.
A
ppSecret
,
4
,
4
,
6
));
if
(
StringUtils
.
isNotBlank
(
this
.
a
ppSecret
))
{
mchParams
.
setAppSecret
(
StringKit
.
str2Star
(
this
.
a
ppSecret
,
4
,
4
,
6
));
}
return
((
JSONObject
)
JSON
.
toJSON
(
mchParams
)).
toJSONString
();
}
...
...
jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayChannelNoticeService.java
View file @
29a249b5
...
...
@@ -80,17 +80,10 @@ public class JeepluspayChannelNoticeService extends AbstractChannelNoticeService
// 验签成功后判断上游订单状态
ResponseEntity
okResponse
=
textResp
(
"success"
);
// 支付状态: 0-订单生成, 1-支付中, 2-支付成功, 3-支付失败, 4-已撤销, 5-已退款, 6-订单关闭
String
status
=
paramsJson
.
getString
(
"state"
);
ChannelRetMsg
result
=
new
ChannelRetMsg
();
result
.
setResponseEntity
(
okResponse
);
result
.
setChannelOrderId
(
paramsJson
.
getString
(
"payOrderId"
));
result
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
WAITING
);
// 默认支付中
if
(
JeepluspayConfig
.
PAY_STATE_SUCCESS
.
equals
(
status
))
{
result
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_SUCCESS
);
}
else
if
(
JeepluspayConfig
.
PAY_STATE_FAIL
.
equals
(
status
))
{
result
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
}
result
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_SUCCESS
);
return
result
;
}
catch
(
Exception
e
)
{
log
.
error
(
"error"
,
e
);
...
...
@@ -119,6 +112,12 @@ public class JeepluspayChannelNoticeService extends AbstractChannelNoticeService
log
.
info
(
"验签失败! 回调参数:parameter = {}"
,
jsonParams
);
return
false
;
}
// 支付状态: 0-订单生成, 1-支付中, 2-支付成功, 3-支付失败, 4-已撤销, 5-已退款, 6-订单关闭
String
status
=
jsonParams
.
getString
(
"state"
);
if
(!
JeepluspayConfig
.
PAY_STATE_SUCCESS
.
equals
(
status
))
{
log
.
info
(
"订单状态错误! state = {}"
,
status
);
return
false
;
}
return
true
;
}
catch
(
Exception
e
)
{
log
.
error
(
"error"
,
e
);
...
...
jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayChannelRefundNoticeService.java
View file @
29a249b5
...
...
@@ -81,20 +81,11 @@ public class JeepluspayChannelRefundNoticeService extends AbstractChannelRefundN
//验签成功后判断上游订单状态
ResponseEntity
okResponse
=
textResp
(
"success"
);
// 退款状态 0-订单生成 1-退款中 2-退款成功 3-退款失败 4-退款关闭
String
status
=
jsonParams
.
getString
(
"state"
);
ChannelRetMsg
result
=
new
ChannelRetMsg
();
result
.
setChannelOrderId
(
jsonParams
.
getString
(
"refundOrderId"
));
//渠道订单号
result
.
setResponseEntity
(
okResponse
);
//响应数据
result
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_SUCCESS
);
result
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
WAITING
);
// 默认退款中
if
(
JeepluspayConfig
.
Refund_STATE_SUCCESS
.
equals
(
status
))
{
result
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_SUCCESS
);
}
else
if
(
JeepluspayConfig
.
Refund_STATE_FAIL
.
equals
(
status
))
{
result
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
}
return
result
;
}
catch
(
Exception
e
)
{
log
.
error
(
"error"
,
e
);
...
...
@@ -123,6 +114,12 @@ public class JeepluspayChannelRefundNoticeService extends AbstractChannelRefundN
log
.
info
(
"验签失败! 回调参数:parameter = {}"
,
jsonParams
);
return
false
;
}
// 退款状态 0-订单生成 1-退款中 2-退款成功 3-退款失败 4-退款关闭
String
status
=
jsonParams
.
getString
(
"state"
);
if
(!
JeepluspayConfig
.
REFUND_STATE_SUCCESS
.
equals
(
status
))
{
log
.
info
(
"订单状态错误! state = {}"
,
status
);
return
false
;
}
return
true
;
}
catch
(
Exception
e
)
{
log
.
error
(
"error"
,
e
);
...
...
jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayKit.java
0 → 100644
View file @
29a249b5
package
com.jeequan.jeepay.pay.channel.jeepluspay
;
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.core.utils.SpringBeansUtil
;
import
com.jeequan.jeepay.exception.JeepayException
;
import
com.jeequan.jeepay.model.PayOrderCreateReqModel
;
import
com.jeequan.jeepay.pay.model.MchAppConfigContext
;
import
com.jeequan.jeepay.pay.service.ConfigContextQueryService
;
import
com.jeequan.jeepay.request.PayOrderCreateRequest
;
import
com.jeequan.jeepay.response.JeepayResponse
;
import
com.jeequan.jeepay.response.PayOrderCreateResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
/*
* 工具类
*
* @author xiaoyu
* @site https://www.jeequan.com
* @date 2022/8/23 16:29
*/
@Slf4j
public
class
JeepluspayKit
{
public
static
PayOrderCreateResponse
payRequest
(
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
,
PayOrderCreateReqModel
model
)
throws
JeepayException
{
// 发起统一下单
PayOrderCreateResponse
response
=
new
PayOrderCreateResponse
();
ConfigContextQueryService
configContextQueryService
=
SpringBeansUtil
.
getBean
(
ConfigContextQueryService
.
class
);
JeepluspayNormalMchParams
normalMchParams
=
(
JeepluspayNormalMchParams
)
configContextQueryService
.
queryNormalMchParams
(
mchAppConfigContext
.
getMchNo
(),
mchAppConfigContext
.
getAppId
(),
CS
.
IF_CODE
.
JEEPLUSPAY
);
// 构建请求数据
PayOrderCreateRequest
request
=
new
PayOrderCreateRequest
();
model
.
setMchNo
(
normalMchParams
.
getMerchantNo
());
// 商户号
model
.
setAppId
(
normalMchParams
.
getAppId
());
// 应用ID
model
.
setMchOrderNo
(
payOrder
.
getPayOrderId
());
// 商户订单号
model
.
setAmount
(
payOrder
.
getAmount
());
// 金额,单位分
model
.
setCurrency
(
payOrder
.
getCurrency
());
// 币种,目前只支持cny
model
.
setClientIp
(
payOrder
.
getClientIp
());
// 发起支付请求客户端的IP地址
model
.
setSubject
(
payOrder
.
getSubject
());
// 商品标题
model
.
setBody
(
payOrder
.
getBody
());
// 商品描述
request
.
setBizModel
(
model
);
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
);
}
else
if
(
normalMchParams
.
getSignType
().
equals
(
JeepluspayConfig
.
SIGN_TYPE_RSA2
))
{
JeepayClient
jeepayClient
=
JeepayClient
.
getInstance
(
normalMchParams
.
getAppId
(),
normalMchParams
.
getRsa2AppPrivateKey
(),
Jeepay
.
getApiBase
());
response
=
jeepayClient
.
executeByRSA2
(
request
);
}
return
response
;
}
public
static
Boolean
checkPayResp
(
JeepayResponse
response
,
MchAppConfigContext
mchAppConfigContext
)
{
ConfigContextQueryService
configContextQueryService
=
SpringBeansUtil
.
getBean
(
ConfigContextQueryService
.
class
);
JeepluspayNormalMchParams
normalMchParams
=
(
JeepluspayNormalMchParams
)
configContextQueryService
.
queryNormalMchParams
(
mchAppConfigContext
.
getMchNo
(),
mchAppConfigContext
.
getAppId
(),
CS
.
IF_CODE
.
JEEPLUSPAY
);
boolean
isSuccess
=
false
;
if
(
normalMchParams
.
getSignType
().
equals
(
JeepluspayConfig
.
DEFAULT_SIGN_TYPE
)
||
StringUtils
.
isEmpty
(
normalMchParams
.
getSignType
()))
{
isSuccess
=
response
.
isSuccess
(
normalMchParams
.
getAppSecret
());
}
else
if
(
normalMchParams
.
getSignType
().
equals
(
JeepluspayConfig
.
SIGN_TYPE_RSA2
))
{
isSuccess
=
response
.
isSuccessByRsa2
(
normalMchParams
.
getRsa2PayPublicKey
());
}
return
isSuccess
;
}
}
jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayPayOrderQueryService.java
View file @
29a249b5
...
...
@@ -63,23 +63,20 @@ public class JeepluspayPayOrderQueryService implements IPayOrderQueryService {
request
.
setBizModel
(
model
);
// 发起请求
PayOrderQueryResponse
response
=
new
PayOrderQueryResponse
();
boolean
checkSign
=
false
;
boolean
isSuccess
=
false
;
if
(
normalMchParams
.
getSignType
().
equals
(
JeepluspayConfig
.
DEFAULT_SIGN_TYPE
)
||
StringUtils
.
isEmpty
(
normalMchParams
.
getSignType
()))
{
if
(
StringUtils
.
isEmpty
(
normalMchParams
.
getSignType
())
||
normalMchParams
.
getSignType
().
equals
(
JeepluspayConfig
.
DEFAULT_SIGN_TYPE
))
{
JeepayClient
jeepayClient
=
JeepayClient
.
getInstance
(
normalMchParams
.
getAppId
(),
normalMchParams
.
getAppSecret
(),
Jeepay
.
getApiBase
());
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
());
response
=
jeepayClient
.
executeByRSA2
(
request
);
checkSign
=
response
.
checkSignByRsa2
(
normalMchParams
.
getRsa2PayPublicKey
());
isSuccess
=
response
.
isSuccessByRsa2
(
normalMchParams
.
getRsa2PayPublicKey
());
}
// 下单返回状态
Boolean
isSuccess
=
JeepluspayKit
.
checkPayResp
(
response
,
mchAppConfigContext
);
// 请求响应状态
if
(
isSuccess
&&
checkSign
)
{
if
(
isSuccess
)
{
// 如果查询请求成功
if
(
JeepluspayConfig
.
PAY_STATE_SUCCESS
.
equals
(
String
.
valueOf
(
response
.
get
().
getState
())))
{
return
ChannelRetMsg
.
confirmSuccess
(
response
.
get
().
getPayOrderId
());
...
...
jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayRefundService.java
View file @
29a249b5
...
...
@@ -76,32 +76,30 @@ public class JeepluspayRefundService extends AbstractRefundService {
try
{
// 发起退款
RefundOrderCreateResponse
response
=
new
RefundOrderCreateResponse
();
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
());
}
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
());
}
if
(
checkSign
)
{
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getRefundOrderId
());
// 退款发送成功
if
(
isSuccess
)
{
// 下单返回状态
Boolean
isSuccess
=
JeepluspayKit
.
checkPayResp
(
response
,
mchAppConfigContext
);
// 退款发送成功
if
(
isSuccess
)
{
if
(
JeepluspayConfig
.
REFUND_STATE_SUCCESS
.
equals
(
response
.
get
().
getState
().
toString
()))
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_SUCCESS
);
}
else
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
channelRetMsg
.
setChannelErrCode
(
response
.
getCode
().
toString
());
channelRetMsg
.
setChannelErrMsg
(
response
.
getMsg
());
}
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getRefundOrderId
());
}
else
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
channelRetMsg
.
setChannelErrCode
(
response
.
getCode
().
toString
());
channelRetMsg
.
setChannelErrMsg
(
response
.
getMsg
());
}
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
WAITING
);
}
catch
(
JeepayException
e
)
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
}
...
...
@@ -120,22 +118,19 @@ public class JeepluspayRefundService extends AbstractRefundService {
request
.
setBizModel
(
model
);
// 发起请求
RefundOrderQueryResponse
response
=
new
RefundOrderQueryResponse
();
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
.
isSuccessByRsa2
(
normalMchParams
.
getRsa2PayPublicKey
());
}
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
());
}
// 下单返回状态
Boolean
isSuccess
=
JeepluspayKit
.
checkPayResp
(
response
,
mchAppConfigContext
);
// 请求响应状态
if
(
isSuccess
&&
checkSign
)
{
if
(
isSuccess
)
{
// 如果查询请求成功
if
(
JeepluspayConfig
.
PAY_STATE_SUCCESS
.
equals
(
response
.
get
().
getState
().
toString
()))
{
return
ChannelRetMsg
.
confirmSuccess
(
response
.
get
().
getRefundOrderId
());
...
...
jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliApp.java
View file @
29a249b5
...
...
@@ -16,14 +16,12 @@
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.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.msg.ChannelRetMsg;
import
com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.AliAppOrderRS
;
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
;
/*
...
...
@@ -53,59 +49,38 @@ public class AliApp extends JeepluspayPaymentService {
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
{
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
.
ALI_APP
);
// 支付方式
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
(
"payDataType"
,
CS
.
PAY_DATA_TYPE
.
ALI_APP
);
model
.
setChannelExtra
(
channelExtra
.
toString
());
// 支付宝app支付参数
request
.
setBizModel
(
model
);
// 构造函数响应数据
AliAppOrderRS
res
=
ApiResBuilder
.
buildSuccess
(
AliAppOrderRS
.
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
.
ALI_APP
);
// 异步通知地址
model
.
setNotifyUrl
(
getNotifyUrl
());
// 支付宝app支付参数
JSONObject
channelExtra
=
new
JSONObject
();
channelExtra
.
put
(
"payDataType"
,
CS
.
PAY_DATA_TYPE
.
ALI_APP
);
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
)
{
// 下单成功
String
payData
=
response
.
getData
().
getString
(
"payData"
);
res
.
setPayData
(
payData
);
channelRetMsg
.
setChannelAttach
(
payData
);
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getPayOrderId
());
if
(
isSuccess
)
{
// 下单成功
JSONObject
payData
=
response
.
getData
().
getJSONObject
(
"payData"
);
res
.
setPayData
(
payData
.
toJSONString
());
channelRetMsg
.
setChannelAttach
(
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/AliBar.java
View file @
29a249b5
...
...
@@ -16,15 +16,12 @@
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
;
...
...
@@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.AliBarOrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.AliBarOrderRS
;
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
;
...
...
@@ -60,56 +56,41 @@ public class AliBar extends JeepluspayPaymentService {
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
{
AliBarOrderRQ
bizRQ
=
(
AliBarOrderRQ
)
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
.
ALI_BAR
);
// 支付方式
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
(
"authCode"
,
bizRQ
.
getAuthCode
());
model
.
setChannelExtra
(
channelExtra
.
toString
());
// 用户付款码值
request
.
setBizModel
(
model
);
// 构造函数响应数据
AliBarOrderRS
res
=
ApiResBuilder
.
buildSuccess
(
AliBarOrderRS
.
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
.
ALI_BAR
);
// 异步通知地址
model
.
setNotifyUrl
(
getNotifyUrl
());
// 用户付款码值
JSONObject
channelExtra
=
new
JSONObject
();
channelExtra
.
put
(
"authCode"
,
bizRQ
.
getAuthCode
());
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
)
{
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getPayOrderId
());
if
(
isSuccess
)
{
//
下单
成功
// 下单成功
if
(
isSuccess
)
{
if
(
JeepluspayConfig
.
PAY_STATE_SUCCESS
.
equals
(
response
.
getData
().
getString
(
"orderState"
))
)
{
//
支付
成功
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_SUCCESS
);
}
else
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
channelRetMsg
.
setChannelErrCode
(
response
.
get
().
getErrCode
());
channelRetMsg
.
setChannelErrMsg
(
response
.
get
().
getErrMsg
());
}
else
{
// 支付中
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
WAITING
);
}
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getPayOrderId
());
}
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/AliJsapi.java
View file @
29a249b5
...
...
@@ -16,15 +16,12 @@
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
;
...
...
@@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.AliJsapiOrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.AliJsapiOrderRS
;
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
;
...
...
@@ -60,59 +56,38 @@ public class AliJsapi extends JeepluspayPaymentService {
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
throws
Exception
{
AliJsapiOrderRQ
bizRQ
=
(
AliJsapiOrderRQ
)
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
.
ALI_JSAPI
);
// 支付方式
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
(
"buyerUserId"
,
bizRQ
.
getBuyerUserId
());
model
.
setChannelExtra
(
channelExtra
.
toString
());
// 支付宝用户ID
request
.
setBizModel
(
model
);
// 构造函数响应数据
AliJsapiOrderRS
res
=
ApiResBuilder
.
buildSuccess
(
AliJsapiOrderRS
.
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
.
ALI_JSAPI
);
// 异步通知地址
model
.
setNotifyUrl
(
getNotifyUrl
());
// 支付宝用户ID
JSONObject
channelExtra
=
new
JSONObject
();
channelExtra
.
put
(
"buyerUserId"
,
bizRQ
.
getBuyerUserId
());
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
)
{
// 下单成功
JSONObject
payData
=
response
.
getData
().
getJSONObject
(
"payData"
);
res
.
setAlipayTradeNo
(
payData
.
getString
(
"alipayTradeNo"
));
res
.
setPayData
(
payData
.
toJSONString
());
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getPayOrderId
());
if
(
isSuccess
)
{
// 下单成功
JSONObject
payData
=
response
.
getData
().
getJSONObject
(
"payData"
);
res
.
setAlipayTradeNo
(
payData
.
getString
(
"alipayTradeNo"
));
res
.
setPayData
(
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/AliLite.java
View file @
29a249b5
...
...
@@ -16,15 +16,12 @@
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
;
...
...
@@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.AliLiteOrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.AliLiteOrderRS
;
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
;
...
...
@@ -60,59 +56,38 @@ public class AliLite extends JeepluspayPaymentService {
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
throws
Exception
{
AliLiteOrderRQ
bizRQ
=
(
AliLiteOrderRQ
)
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
(
"buyerUserId"
,
bizRQ
.
getBuyerUserId
());
model
.
setChannelExtra
(
channelExtra
.
toString
());
// 支付宝用户ID
request
.
setBizModel
(
model
);
// 构造函数响应数据
AliLiteOrderRS
res
=
ApiResBuilder
.
buildSuccess
(
AliLiteOrderRS
.
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
.
ALI_LITE
);
// 异步通知地址
model
.
setNotifyUrl
(
getNotifyUrl
());
// 支付宝用户ID
JSONObject
channelExtra
=
new
JSONObject
();
channelExtra
.
put
(
"buyerUserId"
,
bizRQ
.
getBuyerUserId
());
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
)
{
// 下单成功
JSONObject
payData
=
response
.
getData
().
getJSONObject
(
"payData"
);
res
.
setAlipayTradeNo
(
payData
.
getString
(
"alipayTradeNo"
));
res
.
setPayData
(
payData
.
toJSONString
());
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getPayOrderId
());
if
(
isSuccess
)
{
// 下单成功
JSONObject
payData
=
response
.
getData
().
getJSONObject
(
"payData"
);
res
.
setAlipayTradeNo
(
payData
.
getString
(
"alipayTradeNo"
));
res
.
setPayData
(
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/AliPc.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
;
...
...
@@ -30,9 +28,7 @@ import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg;
import
com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.AliPcOrderRS
;
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
;
/*
...
...
@@ -52,62 +48,44 @@ public class AliPc extends JeepluspayPaymentService {
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
{
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
.
ALI_PC
);
// 支付方式
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
);
// 构造函数响应数据
AliPcOrderRS
res
=
ApiResBuilder
.
buildSuccess
(
AliPcOrderRS
.
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
.
ALI_PC
);
// 异步通知地址
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
)
{
// 下单成功
String
payUrl
=
response
.
getData
().
getString
(
"payData"
);
String
payDataType
=
response
.
getData
().
getString
(
"payDataType"
);
if
(
CS
.
PAY_DATA_TYPE
.
FORM
.
equals
(
payDataType
))
{
//表单方式
res
.
setFormContent
(
payUrl
);
}
else
if
(
CS
.
PAY_DATA_TYPE
.
CODE_IMG_URL
.
equals
(
payDataType
))
{
//二维码图片地址
res
.
setCodeImgUrl
(
payUrl
);
}
else
{
// 默认都为 payUrl方式
res
.
setPayUrl
(
payUrl
);
}
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
WAITING
);
if
(
isSuccess
)
{
// 下单成功
String
payUrl
=
response
.
getData
().
getString
(
"payData"
);
String
payDataType
=
response
.
getData
().
getString
(
"payDataType"
);
if
(
CS
.
PAY_DATA_TYPE
.
FORM
.
equals
(
payDataType
))
{
//表单方式
res
.
setFormContent
(
payUrl
);
}
else
if
(
CS
.
PAY_DATA_TYPE
.
CODE_IMG_URL
.
equals
(
payDataType
))
{
//二维码图片地址
res
.
setCodeImgUrl
(
payUrl
);
}
else
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
channelRetMsg
.
setChannelErrCode
(
response
.
get
().
getErrCode
());
channelRetMsg
.
setChannelErrMsg
(
response
.
get
().
getErrMsg
());
// 默认都为 payUrl方式
res
.
setPayUrl
(
payUrl
);
}
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
);
...
...
jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliQr.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.AliQrOrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.AliQrOrderRS
;
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 AliQr extends JeepluspayPaymentService {
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
throws
Exception
{
AliQrOrderRQ
aliQrOrderRQ
=
(
AliQrOrderRQ
)
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
.
ALI_QR
);
// 支付方式
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
);
// 构造函数响应数据
AliQrOrderRS
res
=
ApiResBuilder
.
buildSuccess
(
AliQrOrderRS
.
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
.
ALI_QR
);
// 异步通知地址
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
(
aliQrOrderRQ
.
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
(
aliQrOrderRQ
.
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
);
...
...
jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliWap.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
;
...
...
@@ -30,9 +28,7 @@ import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg;
import
com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.AliWapOrderRS
;
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
;
/*
...
...
@@ -52,62 +48,44 @@ public class AliWap extends JeepluspayPaymentService {
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
{
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
.
ALI_WAP
);
// 支付方式
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
);
// 构造函数响应数据
AliWapOrderRS
res
=
ApiResBuilder
.
buildSuccess
(
AliWapOrderRS
.
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
.
ALI_WAP
);
// 异步通知地址
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
)
{
// 下单成功
String
payUrl
=
response
.
getData
().
getString
(
"payData"
);
String
payDataType
=
response
.
getData
().
getString
(
"payDataType"
);
if
(
CS
.
PAY_DATA_TYPE
.
FORM
.
equals
(
payDataType
))
{
//表单方式
res
.
setFormContent
(
payUrl
);
}
else
if
(
CS
.
PAY_DATA_TYPE
.
CODE_IMG_URL
.
equals
(
payDataType
))
{
//二维码图片地址
res
.
setCodeImgUrl
(
payUrl
);
}
else
{
// 默认都为 payUrl方式
res
.
setPayUrl
(
payUrl
);
}
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
WAITING
);
if
(
isSuccess
)
{
// 下单成功
String
payUrl
=
response
.
getData
().
getString
(
"payData"
);
String
payDataType
=
response
.
getData
().
getString
(
"payDataType"
);
if
(
CS
.
PAY_DATA_TYPE
.
FORM
.
equals
(
payDataType
))
{
//表单方式
res
.
setFormContent
(
payUrl
);
}
else
if
(
CS
.
PAY_DATA_TYPE
.
CODE_IMG_URL
.
equals
(
payDataType
))
{
//二维码图片地址
res
.
setCodeImgUrl
(
payUrl
);
}
else
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
channelRetMsg
.
setChannelErrCode
(
response
.
get
().
getErrCode
());
channelRetMsg
.
setChannelErrMsg
(
response
.
get
().
getErrMsg
());
// 默认都为 payUrl方式
res
.
setPayUrl
(
payUrl
);
}
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
);
...
...
jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxApp.java
View file @
29a249b5
...
...
@@ -16,14 +16,12 @@
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.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.msg.ChannelRetMsg;
import
com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.WxAppOrderRS
;
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
;
/*
...
...
@@ -53,60 +49,39 @@ public class WxApp extends JeepluspayPaymentService {
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
throws
Exception
{
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_APP
);
// 支付方式
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
(
"payDataType"
,
CS
.
PAY_DATA_TYPE
.
WX_APP
);
model
.
setChannelExtra
(
channelExtra
.
toString
());
// 微信app支付参数
request
.
setBizModel
(
model
);
// 构造函数响应数据
WxAppOrderRS
res
=
ApiResBuilder
.
buildSuccess
(
WxAppOrderRS
.
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_APP
);
// 异步通知地址
model
.
setNotifyUrl
(
getNotifyUrl
());
// 微信app支付参数
JSONObject
channelExtra
=
new
JSONObject
();
channelExtra
.
put
(
"payDataType"
,
CS
.
PAY_DATA_TYPE
.
WX_APP
);
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
)
{
// 下单成功
JSONObject
resJSON
=
new
JSONObject
();
resJSON
.
put
(
"package"
,
response
.
getData
().
getString
(
"payData"
));
res
.
setPayInfo
(
resJSON
.
toJSONString
());
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getPayOrderId
());
if
(
isSuccess
)
{
// 下单成功
JSONObject
payData
=
response
.
getData
().
getJSONObject
(
"payData"
);
JSONObject
resJSON
=
new
JSONObject
();
resJSON
.
put
(
"package"
,
payData
.
toJSONString
());
res
.
setPayInfo
(
resJSON
.
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/WxBar.java
View file @
29a249b5
...
...
@@ -16,15 +16,12 @@
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
;
...
...
@@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.AliBarOrderRS
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.WxBarOrderRQ
;
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
;
...
...
@@ -60,56 +56,42 @@ public class WxBar extends JeepluspayPaymentService {
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
throws
Exception
{
WxBarOrderRQ
bizRQ
=
(
WxBarOrderRQ
)
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_BAR
);
// 支付方式
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
(
"authCode"
,
bizRQ
.
getAuthCode
());
model
.
setChannelExtra
(
channelExtra
.
toString
());
// 用户付款码值
request
.
setBizModel
(
model
);
// 构造函数响应数据
AliBarOrderRS
res
=
ApiResBuilder
.
buildSuccess
(
AliBarOrderRS
.
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_BAR
);
// 异步通知地址
model
.
setNotifyUrl
(
getNotifyUrl
());
JSONObject
channelExtra
=
new
JSONObject
();
channelExtra
.
put
(
"authCode"
,
bizRQ
.
getAuthCode
());
// 用户付款码值
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
)
{
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getPayOrderId
());
if
(
isSuccess
)
{
//
下单
成功
if
(
isSuccess
)
{
// 下单成功
if
(
JeepluspayConfig
.
PAY_STATE_SUCCESS
.
equals
(
response
.
getData
().
getString
(
"orderState"
))
)
{
//
支付
成功
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_SUCCESS
);
}
else
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
channelRetMsg
.
setChannelErrCode
(
response
.
get
().
getErrCode
());
channelRetMsg
.
setChannelErrMsg
(
response
.
get
().
getErrMsg
());
}
else
{
// 支付中
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
WAITING
);
}
channelRetMsg
.
setChannelOrderId
(
response
.
get
().
getPayOrderId
());
}
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/WxH5.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
;
...
...
@@ -30,9 +28,7 @@ import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg;
import
com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.WxH5OrderRS
;
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
;
/*
...
...
@@ -52,63 +48,44 @@ public class WxH5 extends JeepluspayPaymentService {
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
{
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_H5
);
// 支付方式
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
);
// 构造函数响应数据
WxH5OrderRS
res
=
ApiResBuilder
.
buildSuccess
(
WxH5OrderRS
.
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_H5
);
// 异步通知地址
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
)
{
// 下单成功
String
payUrl
=
response
.
getData
().
getString
(
"payData"
);
String
payDataType
=
response
.
getData
().
getString
(
"payDataType"
);
if
(
CS
.
PAY_DATA_TYPE
.
FORM
.
equals
(
payDataType
))
{
//表单方式
res
.
setFormContent
(
payUrl
);
}
else
if
(
CS
.
PAY_DATA_TYPE
.
CODE_IMG_URL
.
equals
(
payDataType
))
{
//二维码图片地址
res
.
setCodeImgUrl
(
payUrl
);
}
else
{
// 默认都为 payUrl方式
res
.
setPayUrl
(
payUrl
);
}
// 支付中
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
WAITING
);
if
(
isSuccess
)
{
// 下单成功
String
payUrl
=
response
.
getData
().
getString
(
"payData"
);
String
payDataType
=
response
.
getData
().
getString
(
"payDataType"
);
if
(
CS
.
PAY_DATA_TYPE
.
FORM
.
equals
(
payDataType
))
{
//表单方式
res
.
setFormContent
(
payUrl
);
}
else
if
(
CS
.
PAY_DATA_TYPE
.
CODE_IMG_URL
.
equals
(
payDataType
))
{
//二维码图片地址
res
.
setCodeImgUrl
(
payUrl
);
}
else
{
channelRetMsg
.
setChannelState
(
ChannelRetMsg
.
ChannelState
.
CONFIRM_FAIL
);
channelRetMsg
.
setChannelErrCode
(
response
.
get
().
getErrCode
());
channelRetMsg
.
setChannelErrMsg
(
response
.
get
().
getErrMsg
());
// 默认都为 payUrl方式
res
.
setPayUrl
(
payUrl
);
}
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
);
...
...
jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxJsapi.java
View file @
29a249b5
...
...
@@ -16,15 +16,12 @@
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
;
...
...
@@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.WxJsapiOrderRQ
;
import
com.jeequan.jeepay.pay.rqrs.payorder.payway.WxJsapiOrderRS
;
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
;
...
...
@@ -62,58 +58,38 @@ public class WxJsapi extends JeepluspayPaymentService {
@Override
public
AbstractRS
pay
(
UnifiedOrderRQ
rq
,
PayOrder
payOrder
,
MchAppConfigContext
mchAppConfigContext
)
throws
Exception
{
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_JSAPI
);
// 支付方式
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
);
// 构造函数响应数据
WxJsapiOrderRS
res
=
ApiResBuilder
.
buildSuccess
(
WxJsapiOrderRS
.
class
);
ChannelRetMsg
channelRetMsg
=
new
ChannelRetMsg
();
res
.
setChannelRetMsg
(
channelRetMsg
);
try
{
// 构建请求数据
PayOrderCreateReqModel
model
=
new
PayOrderCreateReqModel
();
// 支付方式
model
.
setWayCode
(
JeepluspayConfig
.
WX_JSAPI
);
// 异步通知地址
model
.
setNotifyUrl
(
getNotifyUrl
());
JSONObject
channelExtra
=
new
JSONObject
();
channelExtra
.
put
(
"openid"
,
bizRQ
.
getOpenid
());
// 微信openId
model
.
setChannelExtra
(
channelExtra
.
toString
());
// 发起统一下单
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
());
PayOrderCreateResponse
response
=
JeepluspayKit
.
payRequest
(
payOrder
,
mchAppConfigContext
,
model
);
// 下单返回状态
Boolean
isSuccess
=
JeepluspayKit
.
checkPayResp
(
response
,
mchAppConfigContext
);
}
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
());
}
if
(
isSuccess
)
{
// 下单成功
res
.
setPayInfo
(
response
.
getData
().
getString
(
"payData"
));
if
(
checkSign
)
{
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
);
...
...
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