记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
c169b508
Commit
c169b508
authored
Mar 31, 2026
by
姜秀龙
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev-1.6-shouqianba' into dev-1.6-shouqianba
parents
863cf907
7e0d9d42
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
264 additions
and
115 deletions
+264
-115
GoblinSqbOrderVo.java
...com/liquidnet/service/goblin/dto/vo/GoblinSqbOrderVo.java
+34
-1
SqbBiz.java
.../main/java/com/liquidnet/common/third/sqb/biz/SqbBiz.java
+86
-9
SqbConfig.java
...java/com/liquidnet/common/third/sqb/config/SqbConfig.java
+1
-1
CreateWechatPrepayOrderData.java
.../sqb/param/response/data/CreateWechatPrepayOrderData.java
+55
-26
application-dev.yml
liquidnet-bus-config/liquidnet-config/application-dev.yml
+10
-1
application-test.yml
liquidnet-bus-config/liquidnet-config/application-test.yml
+10
-1
liquidnet-service-goblin-dev.yml
...-config/liquidnet-config/liquidnet-service-goblin-dev.yml
+0
-9
liquidnet-service-goblin-test.yml
...config/liquidnet-config/liquidnet-service-goblin-test.yml
+1
-10
GoblinShouQianBaServiceImplTest.java
.../service/goblin/test/GoblinShouQianBaServiceImplTest.java
+9
-9
GoblinSqbOrderController.java
...et/service/order/controller/GoblinSqbOrderController.java
+12
-2
GoblinSqbOrderServiceImpl.java
...service/order/service/impl/GoblinSqbOrderServiceImpl.java
+25
-44
GoblinSqbRedisUtils.java
...om/liquidnet/service/order/utils/GoblinSqbRedisUtils.java
+21
-2
No files found.
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/vo/GoblinSqbOrderVo.java
View file @
c169b508
...
@@ -7,24 +7,57 @@ import java.io.Serializable;
...
@@ -7,24 +7,57 @@ import java.io.Serializable;
@Data
@Data
public
class
GoblinSqbOrderVo
implements
Serializable
{
public
class
GoblinSqbOrderVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
private
String
orderId
;
private
String
orderId
;
private
String
userId
;
private
String
userId
;
private
String
performancesId
;
private
String
performancesId
;
private
String
spuId
;
private
String
spuId
;
private
String
skuId
;
private
String
skuId
;
// 数量
private
Integer
quantity
;
private
Integer
quantity
;
// 金额(分为单位)
private
Long
amount
;
private
Long
amount
;
// 订单编号
private
String
sqbOrderSn
;
private
String
sqbOrderSn
;
// 订单密钥
private
String
sqbOrderSignature
;
private
String
sqbOrderSignature
;
// 收单号
private
String
sqbAcquiringSn
;
private
String
sqbAcquiringSn
;
// 收单密钥
private
String
sqbAcquiringSign
;
private
String
sqbAcquiringSign
;
// 结算项ID
private
String
sqbCheckoutItemsId
;
private
String
sqbCheckoutItemsId
;
// 收钱吧-券码编号
private
String
couponSn
;
private
String
couponSn
;
// 收钱吧-券二维码url
private
String
couponQrCode
;
private
String
couponQrCode
;
// 券核销时间?
private
String
couponExpireTime
;
private
String
couponExpireTime
;
private
Integer
status
;
// 0-待支付 1-已支付 2-已核销 3-已退款 4-退款中 9-失败
// 0-待支付 1-已支付 2-已核销 3-已退款 4-退款中 5-已取消 9-失败
private
Integer
status
;
// 退款备注
private
String
refundReason
;
private
String
refundReason
;
// 创建时间
private
String
createdAt
;
private
String
createdAt
;
// 修改时间
private
String
updatedAt
;
private
String
updatedAt
;
// 扩展属性
// 扩展属性
...
...
liquidnet-bus-common/liquidnet-common-third/liquidnet-common-third-sqb/src/main/java/com/liquidnet/common/third/sqb/biz/SqbBiz.java
View file @
c169b508
...
@@ -76,8 +76,16 @@ public class SqbBiz {
...
@@ -76,8 +76,16 @@ public class SqbBiz {
* @return 收钱吧响应结果;调用失败时返回 null
* @return 收钱吧响应结果;调用失败时返回 null
*/
*/
public
SettlementCreateData
createSettlement
(
SettlementCreateRequest
request
)
{
public
SettlementCreateData
createSettlement
(
SettlementCreateRequest
request
)
{
return
executeShouQianBaRequest
(
"/optimus/core/
mall
/createCheckoutItems"
,
"创建结算明细"
,
request
,
SettlementCreateResponse
.
class
);
return
executeShouQianBaRequest
(
"/optimus/core/
order
/createCheckoutItems"
,
"创建结算明细"
,
request
,
SettlementCreateResponse
.
class
);
}
}
/**
* 创建结算明细
* @param mallSn 商城ID
* @param signature 商城密钥
* @param userId 正在用户ID
* @param checkoutItems 商品
* @return
*/
public
SettlementCreateData
createSettlement
(
String
mallSn
,
String
signature
,
String
userId
,
List
<
SettlementCreateRequest
.
CheckoutItem
>
checkoutItems
)
{
public
SettlementCreateData
createSettlement
(
String
mallSn
,
String
signature
,
String
userId
,
List
<
SettlementCreateRequest
.
CheckoutItem
>
checkoutItems
)
{
SettlementCreateRequest
request
=
new
SettlementCreateRequest
();
SettlementCreateRequest
request
=
new
SettlementCreateRequest
();
request
.
setAppid
(
sqbConfig
.
getAppId
());
request
.
setAppid
(
sqbConfig
.
getAppId
());
...
@@ -94,6 +102,16 @@ public class SqbBiz {
...
@@ -94,6 +102,16 @@ public class SqbBiz {
public
OrderCreateData
createOrder
(
OrderCreateRequest
request
)
{
public
OrderCreateData
createOrder
(
OrderCreateRequest
request
)
{
return
executeShouQianBaRequest
(
"/optimus/core/order/placeOrder"
,
"创建订单"
,
request
,
OrderCreateResponse
.
class
);
return
executeShouQianBaRequest
(
"/optimus/core/order/placeOrder"
,
"创建订单"
,
request
,
OrderCreateResponse
.
class
);
}
}
/**
* 创建订单
* @param mallSn 商城ID
* @param signature 商城密钥
* @param checkoutItemsId 创建结算明细 返回的 结算项ID
* @param userId 正在用户ID
* @param requestId 请求ID
* @param subject 标题
* @return
*/
public
OrderCreateData
createOrder
(
String
mallSn
,
String
signature
,
String
checkoutItemsId
,
String
userId
,
String
requestId
,
String
subject
)
{
public
OrderCreateData
createOrder
(
String
mallSn
,
String
signature
,
String
checkoutItemsId
,
String
userId
,
String
requestId
,
String
subject
)
{
OrderCreateRequest
orderCreateRequest
=
new
OrderCreateRequest
();
OrderCreateRequest
orderCreateRequest
=
new
OrderCreateRequest
();
orderCreateRequest
.
setAppid
(
sqbConfig
.
getAppId
());
orderCreateRequest
.
setAppid
(
sqbConfig
.
getAppId
());
...
@@ -119,6 +137,13 @@ public class SqbBiz {
...
@@ -119,6 +137,13 @@ public class SqbBiz {
public
CashierQueryData
queryCashier
(
CashierQueryRequest
request
)
{
public
CashierQueryData
queryCashier
(
CashierQueryRequest
request
)
{
return
executeShouQianBaRequest
(
"/optimus/core/cashier/queryCashierPage"
,
"查询收银台"
,
request
,
CashierQueryResponse
.
class
);
return
executeShouQianBaRequest
(
"/optimus/core/cashier/queryCashierPage"
,
"查询收银台"
,
request
,
CashierQueryResponse
.
class
);
}
}
/**
* 查询收银台
* @param acquiringSn 收单号
* @param acquiringSignature 收单密钥
* @param userId 正在用户ID
* @return
*/
public
CashierQueryData
queryCashier
(
String
acquiringSn
,
String
acquiringSignature
,
String
userId
)
{
public
CashierQueryData
queryCashier
(
String
acquiringSn
,
String
acquiringSignature
,
String
userId
)
{
CashierQueryRequest
.
PaymentEnv
paymentEnv
=
new
CashierQueryRequest
.
PaymentEnv
();
CashierQueryRequest
.
PaymentEnv
paymentEnv
=
new
CashierQueryRequest
.
PaymentEnv
();
paymentEnv
.
setClient
(
"wechat"
);
paymentEnv
.
setClient
(
"wechat"
);
...
@@ -140,6 +165,19 @@ public class SqbBiz {
...
@@ -140,6 +165,19 @@ public class SqbBiz {
public
CreateWechatPrepayOrderData
createWechatPrepayOrder
(
CreateWechatPrepayOrderRequest
request
)
{
public
CreateWechatPrepayOrderData
createWechatPrepayOrder
(
CreateWechatPrepayOrderRequest
request
)
{
return
executeShouQianBaRequest
(
"/optimus/core/cashier/proxyPreCreatedPay"
,
"创建微信预支付订单"
,
request
,
CreateWechatPrepayOrderResponse
.
class
);
return
executeShouQianBaRequest
(
"/optimus/core/cashier/proxyPreCreatedPay"
,
"创建微信预支付订单"
,
request
,
CreateWechatPrepayOrderResponse
.
class
);
}
}
/**
* 创建微信预支付订单
* @param acquiringSn 收单号
* @param signature 收单签名
* @param userId 正在用户ID
* @param amount 支付金额
* @param requestSn 支付请求号
* @param payTool 支付工具代码
* @param channelExt 通道扩展参数
* @param selectedSignature 支付工具签名
* @param seq 序列号 上一步seq(查询收银台)
* @return
*/
public
CreateWechatPrepayOrderData
createWechatPrepayOrder
(
String
acquiringSn
,
public
CreateWechatPrepayOrderData
createWechatPrepayOrder
(
String
acquiringSn
,
String
signature
,
String
signature
,
String
userId
,
String
userId
,
...
@@ -167,6 +205,12 @@ public class SqbBiz {
...
@@ -167,6 +205,12 @@ public class SqbBiz {
public
CouponQueryData
queryCoupon
(
CouponQueryRequest
request
)
{
public
CouponQueryData
queryCoupon
(
CouponQueryRequest
request
)
{
return
executeShouQianBaRequest
(
"/optimus/core/voucher/queryOrderVoucherList"
,
"查询优惠券"
,
request
,
CouponQueryResponse
.
class
);
return
executeShouQianBaRequest
(
"/optimus/core/voucher/queryOrderVoucherList"
,
"查询优惠券"
,
request
,
CouponQueryResponse
.
class
);
}
}
/**
* 查询券码
* @param sn 订单ID
* @param signature 订单密码
* @return
*/
public
CouponQueryData
queryCoupon
(
String
sn
,
String
signature
)
{
public
CouponQueryData
queryCoupon
(
String
sn
,
String
signature
)
{
CouponQueryRequest
couponQueryRequest
=
new
CouponQueryRequest
();
CouponQueryRequest
couponQueryRequest
=
new
CouponQueryRequest
();
couponQueryRequest
.
setAppid
(
sqbConfig
.
getAppId
());
couponQueryRequest
.
setAppid
(
sqbConfig
.
getAppId
());
...
@@ -182,6 +226,15 @@ public class SqbBiz {
...
@@ -182,6 +226,15 @@ public class SqbBiz {
CouponStatusSyncResponse
response
=
executeRequestAndGetResponse
(
"/optimus/core/voucher/modifyOrderVoucherList"
,
"同步优惠券状态"
,
request
,
CouponStatusSyncResponse
.
class
);
CouponStatusSyncResponse
response
=
executeRequestAndGetResponse
(
"/optimus/core/voucher/modifyOrderVoucherList"
,
"同步优惠券状态"
,
request
,
CouponStatusSyncResponse
.
class
);
return
response
!=
null
&&
Boolean
.
TRUE
.
equals
(
response
.
getSuccess
());
return
response
!=
null
&&
Boolean
.
TRUE
.
equals
(
response
.
getSuccess
());
}
}
/**
* 券码状态同步
* @param redeemMerchantId 用户ID(自定义,核销用户id)
* @param voucherNos 券号
* @param redeemExternalOrderSn 外部单号(${AppCode}+id,AppCode需要分配)
* @param clientSn 核销终端号(自定义)
* @param status 券使用状态(0未核销,1已核销)
* @return
*/
public
boolean
syncCouponStatus
(
String
redeemMerchantId
,
List
<
String
>
voucherNos
,
String
redeemExternalOrderSn
,
String
clientSn
,
Byte
status
)
{
public
boolean
syncCouponStatus
(
String
redeemMerchantId
,
List
<
String
>
voucherNos
,
String
redeemExternalOrderSn
,
String
clientSn
,
Byte
status
)
{
CouponStatusSyncRequest
couponStatusSyncRequest
=
new
CouponStatusSyncRequest
();
CouponStatusSyncRequest
couponStatusSyncRequest
=
new
CouponStatusSyncRequest
();
couponStatusSyncRequest
.
setAppid
(
sqbConfig
.
getAppId
());
couponStatusSyncRequest
.
setAppid
(
sqbConfig
.
getAppId
());
...
@@ -200,6 +253,16 @@ public class SqbBiz {
...
@@ -200,6 +253,16 @@ public class SqbBiz {
public
CouponRefundData
refundCoupon
(
CouponRefundRequest
request
)
{
public
CouponRefundData
refundCoupon
(
CouponRefundRequest
request
)
{
return
executeShouQianBaRequest
(
"/optimus/core/aftersale/applyRefund"
,
"退款优惠券"
,
request
,
CouponRefundResponse
.
class
);
return
executeShouQianBaRequest
(
"/optimus/core/aftersale/applyRefund"
,
"退款优惠券"
,
request
,
CouponRefundResponse
.
class
);
}
}
/**
* @param sn 单号(前置操作后拿到)
* @param signature 密码(前置操作后拿到)
* @param applyAmount 金额
* @param type 退款类型(1商品 2金额)
* @param item
* @param refundReason 退款原因
* @param requestId 退款请求id(${AppCode}+id)
* @return
*/
public
CouponRefundData
refundCoupon
(
String
sn
,
public
CouponRefundData
refundCoupon
(
String
sn
,
String
signature
,
String
signature
,
Long
applyAmount
,
Long
applyAmount
,
...
@@ -223,6 +286,12 @@ public class SqbBiz {
...
@@ -223,6 +286,12 @@ public class SqbBiz {
public
List
<
MallListQueryData
>
queryMallList
(
MallListQueryRequest
request
)
{
public
List
<
MallListQueryData
>
queryMallList
(
MallListQueryRequest
request
)
{
return
executeShouQianBaRequest
(
"/optimus/core/open/mall/queryMallList"
,
"查询门店列表"
,
request
,
MallListQueryResponse
.
class
);
return
executeShouQianBaRequest
(
"/optimus/core/open/mall/queryMallList"
,
"查询门店列表"
,
request
,
MallListQueryResponse
.
class
);
}
}
/**
* 商城列表接口
* @param endCursor 结束游标 上一页的结束游标(首次查询传 null)
* @param count 查询数量 每页返回的最大订单数
* @return
*/
public
List
<
MallListQueryData
>
queryMallList
(
String
endCursor
,
Integer
count
)
{
public
List
<
MallListQueryData
>
queryMallList
(
String
endCursor
,
Integer
count
)
{
MallListQueryRequest
.
Filter
filter
=
new
MallListQueryRequest
.
Filter
();
MallListQueryRequest
.
Filter
filter
=
new
MallListQueryRequest
.
Filter
();
filter
.
setSeller
(
cachedSeller
);
filter
.
setSeller
(
cachedSeller
);
...
@@ -250,6 +319,12 @@ public class SqbBiz {
...
@@ -250,6 +319,12 @@ public class SqbBiz {
public
List
<
MallProductsQueryData
>
queryMallProducts
(
MallProductsQueryRequest
request
)
{
public
List
<
MallProductsQueryData
>
queryMallProducts
(
MallProductsQueryRequest
request
)
{
return
executeShouQianBaRequest
(
"/optimus/core/open/mall/queryMallProducts"
,
"查询门店商品"
,
request
,
MallProductsQueryResponse
.
class
);
return
executeShouQianBaRequest
(
"/optimus/core/open/mall/queryMallProducts"
,
"查询门店商品"
,
request
,
MallProductsQueryResponse
.
class
);
}
}
/**
* 商城商品接口
* @param mallSn 商城ID
* @param signature 商城密码
* @return
*/
public
List
<
MallProductsQueryData
>
queryMallProducts
(
String
mallSn
,
String
signature
)
{
public
List
<
MallProductsQueryData
>
queryMallProducts
(
String
mallSn
,
String
signature
)
{
MallProductsQueryRequest
request
=
new
MallProductsQueryRequest
();
MallProductsQueryRequest
request
=
new
MallProductsQueryRequest
();
request
.
setAppid
(
sqbConfig
.
getAppId
());
request
.
setAppid
(
sqbConfig
.
getAppId
());
...
@@ -311,6 +386,7 @@ public class SqbBiz {
...
@@ -311,6 +386,7 @@ public class SqbBiz {
return
null
;
return
null
;
}
}
private
String
getSign
(
String
bodyJsonStr
)
{
private
String
getSign
(
String
bodyJsonStr
)
{
try
{
try
{
// 签名算法: sign = MD5( CONCAT( body + appkey ) )
// 签名算法: sign = MD5( CONCAT( body + appkey ) )
...
@@ -325,6 +401,15 @@ public class SqbBiz {
...
@@ -325,6 +401,15 @@ public class SqbBiz {
}
}
}
}
/**
* 收钱吧回调推送验签
*/
public
boolean
verifySignature
(
CallbackParams
callbackParams
)
{
// 签名原串 = eventId + timestamp + nonce + content
String
plaintext
=
callbackParams
.
getEventId
()
+
callbackParams
.
getTimestamp
()
+
callbackParams
.
getNonce
()
+
callbackParams
.
getContent
();
return
verifySignatureSHA256WithRSA
(
plaintext
,
callbackParams
.
getSignature
(),
sqbConfig
.
getPublicKey
());
}
private
CommonRequest
.
Mall
buildMall
(
String
mallSn
,
String
signature
)
{
private
CommonRequest
.
Mall
buildMall
(
String
mallSn
,
String
signature
)
{
CommonRequest
.
Mall
mall
=
new
CommonRequest
.
Mall
();
CommonRequest
.
Mall
mall
=
new
CommonRequest
.
Mall
();
mall
.
setMallSn
(
mallSn
);
mall
.
setMallSn
(
mallSn
);
...
@@ -355,14 +440,6 @@ public class SqbBiz {
...
@@ -355,14 +440,6 @@ public class SqbBiz {
return
Collections
.
singletonList
(
tool
);
return
Collections
.
singletonList
(
tool
);
}
}
/**
* 收钱吧回调推送验签
*/
public
boolean
verifySignature
(
CallbackParams
callbackParams
)
{
// 签名原串 = eventId + timestamp + nonce + content
String
plaintext
=
callbackParams
.
getEventId
()
+
callbackParams
.
getTimestamp
()
+
callbackParams
.
getNonce
()
+
callbackParams
.
getContent
();
return
verifySignatureSHA256WithRSA
(
plaintext
,
callbackParams
.
getSignature
(),
sqbConfig
.
getPublicKey
());
}
private
boolean
verifySignatureSHA256WithRSA
(
String
plaintext
,
String
inputSignature
,
String
pubKey
)
{
private
boolean
verifySignatureSHA256WithRSA
(
String
plaintext
,
String
inputSignature
,
String
pubKey
)
{
return
verifySignatureSHA256WithRSA
(
plaintext
.
getBytes
(
StandardCharsets
.
UTF_8
),
inputSignature
,
pubKey
);
return
verifySignatureSHA256WithRSA
(
plaintext
.
getBytes
(
StandardCharsets
.
UTF_8
),
inputSignature
,
pubKey
);
...
...
liquidnet-bus-common/liquidnet-common-third/liquidnet-common-third-sqb/src/main/java/com/liquidnet/common/third/sqb/config/SqbConfig.java
View file @
c169b508
...
@@ -5,7 +5,7 @@ import lombok.Setter;
...
@@ -5,7 +5,7 @@ import lombok.Setter;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
@ConfigurationProperties
(
prefix
=
"liquidnet.s
houqianba
"
)
@ConfigurationProperties
(
prefix
=
"liquidnet.s
qb
"
)
@Component
@Component
@Setter
@Setter
@Getter
@Getter
...
...
liquidnet-bus-common/liquidnet-common-third/liquidnet-common-third-sqb/src/main/java/com/liquidnet/common/third/sqb/param/response/data/CreateWechatPrepayOrderData.java
View file @
c169b508
package
com
.
liquidnet
.
common
.
third
.
sqb
.
param
.
response
.
data
;
package
com
.
liquidnet
.
common
.
third
.
sqb
.
param
.
response
.
data
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
lombok.Data
;
import
lombok.Data
;
/**
/**
...
@@ -13,22 +11,34 @@ import lombok.Data;
...
@@ -13,22 +11,34 @@ import lombok.Data;
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
CreateWechatPrepayOrderData
{
public
class
CreateWechatPrepayOrderData
{
/** 收单号 */
/**
* 收单号
*/
private
String
acquiringSn
;
private
String
acquiringSn
;
/** 收单签名 */
/**
* 收单签名
*/
private
String
signature
;
private
String
signature
;
/** 收单状态 */
/**
* 收单状态
*/
private
Byte
acquiringState
;
private
Byte
acquiringState
;
/** 金额明细 */
/**
* 金额明细
*/
private
AmountDetails
amount
;
private
AmountDetails
amount
;
/** 支付凭证 */
/**
* 支付凭证
*/
private
PaymentVoucher
paymentVoucher
;
private
PaymentVoucher
paymentVoucher
;
/** 通道信息 */
/**
* 通道信息
*/
private
ChannelInfo
channelInfo
;
private
ChannelInfo
channelInfo
;
@Data
@Data
...
@@ -38,39 +48,57 @@ public class CreateWechatPrepayOrderData {
...
@@ -38,39 +48,57 @@ public class CreateWechatPrepayOrderData {
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
static
class
AmountDetails
{
public
static
class
AmountDetails
{
/** 收单总金额 */
/**
* 收单总金额
*/
private
Long
totalAmount
;
private
Long
totalAmount
;
/** 已付总金额 */
/**
* 已付总金额
*/
private
Long
paidAmount
;
private
Long
paidAmount
;
/** 已退总金额 */
/**
* 已退总金额
*/
private
Long
refundedAmount
;
private
Long
refundedAmount
;
}
}
@Data
/**
/**
* 支付凭证详情
* 支付凭证详情
*/
*/
@Data
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
static
class
PaymentVoucher
{
public
static
class
PaymentVoucher
{
/** 时间戳 */
/**
* 时间戳
*/
private
String
timeStamp
;
private
String
timeStamp
;
/** 订单详情扩展字符串 */
/**
* 订单详情扩展字符串
*/
private
String
packageStr
;
private
String
packageStr
;
/** 签名 */
/**
* 签名
*/
private
String
paySign
;
private
String
paySign
;
/** Appid */
/**
* Appid
*/
private
String
appId
;
private
String
appId
;
/** 签名方式 */
/**
* 签名方式
*/
private
String
signType
;
private
String
signType
;
/** 随机字符串 */
/**
* 随机字符串
*/
private
String
nonceStr
;
private
String
nonceStr
;
}
}
...
@@ -81,10 +109,11 @@ public class CreateWechatPrepayOrderData {
...
@@ -81,10 +109,11 @@ public class CreateWechatPrepayOrderData {
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
static
class
ChannelInfo
{
public
static
class
ChannelInfo
{
/** 收钱吧通道流水号 */
/**
* 收钱吧通道流水号
*/
private
String
payTsn
;
private
String
payTsn
;
}
}
}
}
liquidnet-bus-config/liquidnet-config/application-dev.yml
View file @
c169b508
...
@@ -252,3 +252,12 @@ liquidnet:
...
@@ -252,3 +252,12 @@ liquidnet:
privateKey
:
xxxx
privateKey
:
xxxx
#application-dev-end
#application-dev-end
sqb
:
base-api
:
'
https://open-apisix.iwosai.com'
app-id
:
'
2025082700005615'
app-key
:
'
4d5c7647853bba34a0b5af42bc2400e7'
app-code
:
'
DWTY'
public-key
:
'
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3Hlg887xrRWYxPqLDX53oimjsxfd7PDdhQ4zHUYA1eQP6PMyhAo+GU/oq4RQVpW6LrG0PWA6CoD7qva6T0NwsDWn5/fmWhmH+Ad6K5WG5jY9ZVjnys9R+HGeFyE7hSkhqSgiSlEMv9IBJD5p9ZqBZ0FAPotMS/RIBHANVA37J0Zlp9wakvUegcXb3hl9xp+aRsjikhS5h89qiPPXGkWq9dsQrbpDODP8RziqskxzIzu4tYtvLkUZ/Ak9LCRu63SSGX+yAj24mG9Q+4taWGX32AmuVFK9CGDoec0IYx8ouUtiGWVBqZz0dRteKbBbL6MtnPjUxT+wMc6rarPL8zj9vwIDAQAB'
merchant-id
:
'
fd567f94-9a44-4ae5-879f-9acc919d0f89'
merchant-user-id
:
'
42c556cc-1509-4de0-bfc3-dfbcb48eae57'
role
:
'
super_admin'
\ No newline at end of file
liquidnet-bus-config/liquidnet-config/application-test.yml
View file @
c169b508
...
@@ -251,3 +251,12 @@ liquidnet:
...
@@ -251,3 +251,12 @@ liquidnet:
pubKey
:
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAph6mXcV8gPoEE6ZJJiaSk6x6jwWThLuzHDpZ9CMreZrMRUkGrV0WC920Ktp0tGlpo+BNfF+yBrapTAM8Y0Ztz5XcZWnx7gsfcsV48GHJ09qWbkJfXaBY30iX6O6q59jqWJMITQKz6OLL6HL3wxhoXooKHjXamQ983RTsI6wT4nWsTtBp8mTXCY+8XOQ4rw87AeHHetIoAtogk8H2etKgu1nDaQGXaA+ng+khab+b42pZSBX5g6jWlNCZviAoiy7e3upyu/6lqOhuLDEYzxD0i0oZ/46oIsILvEBCYQvXpbEz8KAM8dD5RBylNSpbu2edrrhytCq+0HFA4f1yp2D7WQIDAQAB
pubKey
:
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAph6mXcV8gPoEE6ZJJiaSk6x6jwWThLuzHDpZ9CMreZrMRUkGrV0WC920Ktp0tGlpo+BNfF+yBrapTAM8Y0Ztz5XcZWnx7gsfcsV48GHJ09qWbkJfXaBY30iX6O6q59jqWJMITQKz6OLL6HL3wxhoXooKHjXamQ983RTsI6wT4nWsTtBp8mTXCY+8XOQ4rw87AeHHetIoAtogk8H2etKgu1nDaQGXaA+ng+khab+b42pZSBX5g6jWlNCZviAoiy7e3upyu/6lqOhuLDEYzxD0i0oZ/46oIsILvEBCYQvXpbEz8KAM8dD5RBylNSpbu2edrrhytCq+0HFA4f1yp2D7WQIDAQAB
privateKey
:
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCR3u0lL7LvLHK0VG8/FXcA6hjLC+oY4ra/zqs7QRg4EVR8GGQ1G3hg5av6LJxBN5lR07ONYojAOgzmxkoPdM4+aTn9XMfk2sAWen7RMMNcdpyx1eNdCFlm1GzT419CXkIS0Z+gUsxF+PasGamjzfB/Lg66DNZ1zHh1YPa/hwt4KKO1YHiReBCO0hLo7/uGTFUdfzB9pCUIzOTQwaYJPqRc0pz0/9MSF65K/Qtc9lqFpsVXmcWQOZZjoDJGIH6XEbyWXzMRPy5MLryvF3s6ZNURuU7j8t16DVkUTx3p+bEm2U3GmL5btltiouduPUBXHZjRUWAAyFVzc9EMQDQDA89rAgMBAAECggEAQPEHkQuoVPTr6D7C/EnZHk4aVaNrSEL+62veLdYwKx4EB+9wBXjCYhk+NHXR5vMSziw6/tIEYdg2UDOtWy48d+qvB45b7BY7eIZ2mTllcG/aGQ5JV+zUqIQgI0FR8qE2N1yd/Wl/ShOp9jrCnIud63Ec21XF0NIEOvW9RM2hnI+G6YLT9j3NbvJvB4zS7U7tejEXfDP1Oxtjk0ba7Qq04yYdeX16TOrs8VTpAzrj+xW/VJDLBoDfgLvE2G/PqhpFOFfH5V6zKTYfk9VQLh1H9dTj1CkFgRHEJfrFc7XcIIb9nxjnV5JXZmcPjmErQUg1t8JLzjJuQIvzCda5Ba9JEQKBgQDL+iSWlSfyJQyx283VIjhIJ3w9ZRAIWsm/Z1205tdnBeFAzsiItLamASf7Y1zMIMYxFyUD41npFUqetjzdxVHiWlOg2/cE7t2SQWbfrbgqwG0z23If4jUdIj3CJq9yLVWAXvvvm/I/Zrj4oGycYkWV0eGZwoAqIIHIOmTPslacUwKBgQC3Eve/jAHkcgCRppwvDvrw9AYKd6rrs9dyCcsj7Zz2sT7CTw89JcjmjwsLx5+v+zSGgkceG21uIusAfWoAbAYadIGP7zCOBWGVdFvt5hqqKtwL7sLdWrauKw5NId8SlVu0Jvy2dVjzyJ3jfYj1tXt/kCNLgf0zL4yZ+q9G+KBdiQKBgQCkNcSu1XVLIziNFv8lzl6w99i1NF8r2qsARB7UO+K9NaaZnd8i7xj7m4Kshtl2HAxyCMfr0WPYmSNxkhR+FRROvZkFrw+2EPaff7dp61iQUkmXrdq6gElyItbFLo+fw49JwS3hQBJNqEzRG5VUcGjErCqKtmKnh3Pz1c7CxjejsQKBgEbJ6cxCGdU4k6m+D7ROiY+z+8X+YbPEFXF+AfOBhGkLPiYqJc1SF+22r+G9La0BaFz+cPteRaEJlW7aD6vcGTwPgq2iIlc4E3STypwhlnvoGK/wgZ7P3cVY1q3ShAwOfqgZTyxKEbwp/YsiVlwT8Y3wsQUYXUx2fVpoyW+a4X9pAoGBAIQSQ/Dig/6kU7yb9F4uFYVGnrArQk9bFC3tXe1rgyw6nUq5txAmc6ovvrmCVMilQ2nfYuzAtuKy6ouf71u+nTDaTV9LxGOxKzSDu+58R8qZrzcnSerfPivocWmlpN5mse45RVRnlw3EvObCwKE3zkDYKk5PgxKsmLrLAgaF4CGg
privateKey
:
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCR3u0lL7LvLHK0VG8/FXcA6hjLC+oY4ra/zqs7QRg4EVR8GGQ1G3hg5av6LJxBN5lR07ONYojAOgzmxkoPdM4+aTn9XMfk2sAWen7RMMNcdpyx1eNdCFlm1GzT419CXkIS0Z+gUsxF+PasGamjzfB/Lg66DNZ1zHh1YPa/hwt4KKO1YHiReBCO0hLo7/uGTFUdfzB9pCUIzOTQwaYJPqRc0pz0/9MSF65K/Qtc9lqFpsVXmcWQOZZjoDJGIH6XEbyWXzMRPy5MLryvF3s6ZNURuU7j8t16DVkUTx3p+bEm2U3GmL5btltiouduPUBXHZjRUWAAyFVzc9EMQDQDA89rAgMBAAECggEAQPEHkQuoVPTr6D7C/EnZHk4aVaNrSEL+62veLdYwKx4EB+9wBXjCYhk+NHXR5vMSziw6/tIEYdg2UDOtWy48d+qvB45b7BY7eIZ2mTllcG/aGQ5JV+zUqIQgI0FR8qE2N1yd/Wl/ShOp9jrCnIud63Ec21XF0NIEOvW9RM2hnI+G6YLT9j3NbvJvB4zS7U7tejEXfDP1Oxtjk0ba7Qq04yYdeX16TOrs8VTpAzrj+xW/VJDLBoDfgLvE2G/PqhpFOFfH5V6zKTYfk9VQLh1H9dTj1CkFgRHEJfrFc7XcIIb9nxjnV5JXZmcPjmErQUg1t8JLzjJuQIvzCda5Ba9JEQKBgQDL+iSWlSfyJQyx283VIjhIJ3w9ZRAIWsm/Z1205tdnBeFAzsiItLamASf7Y1zMIMYxFyUD41npFUqetjzdxVHiWlOg2/cE7t2SQWbfrbgqwG0z23If4jUdIj3CJq9yLVWAXvvvm/I/Zrj4oGycYkWV0eGZwoAqIIHIOmTPslacUwKBgQC3Eve/jAHkcgCRppwvDvrw9AYKd6rrs9dyCcsj7Zz2sT7CTw89JcjmjwsLx5+v+zSGgkceG21uIusAfWoAbAYadIGP7zCOBWGVdFvt5hqqKtwL7sLdWrauKw5NId8SlVu0Jvy2dVjzyJ3jfYj1tXt/kCNLgf0zL4yZ+q9G+KBdiQKBgQCkNcSu1XVLIziNFv8lzl6w99i1NF8r2qsARB7UO+K9NaaZnd8i7xj7m4Kshtl2HAxyCMfr0WPYmSNxkhR+FRROvZkFrw+2EPaff7dp61iQUkmXrdq6gElyItbFLo+fw49JwS3hQBJNqEzRG5VUcGjErCqKtmKnh3Pz1c7CxjejsQKBgEbJ6cxCGdU4k6m+D7ROiY+z+8X+YbPEFXF+AfOBhGkLPiYqJc1SF+22r+G9La0BaFz+cPteRaEJlW7aD6vcGTwPgq2iIlc4E3STypwhlnvoGK/wgZ7P3cVY1q3ShAwOfqgZTyxKEbwp/YsiVlwT8Y3wsQUYXUx2fVpoyW+a4X9pAoGBAIQSQ/Dig/6kU7yb9F4uFYVGnrArQk9bFC3tXe1rgyw6nUq5txAmc6ovvrmCVMilQ2nfYuzAtuKy6ouf71u+nTDaTV9LxGOxKzSDu+58R8qZrzcnSerfPivocWmlpN5mse45RVRnlw3EvObCwKE3zkDYKk5PgxKsmLrLAgaF4CGg
#application-test-end
#application-test-end
sqb
:
base-api
:
'
https://open-apisix.iwosai.com'
app-id
:
'
2025082700005615'
app-key
:
'
4d5c7647853bba34a0b5af42bc2400e7'
app-code
:
'
DWTY'
public-key
:
'
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3Hlg887xrRWYxPqLDX53oimjsxfd7PDdhQ4zHUYA1eQP6PMyhAo+GU/oq4RQVpW6LrG0PWA6CoD7qva6T0NwsDWn5/fmWhmH+Ad6K5WG5jY9ZVjnys9R+HGeFyE7hSkhqSgiSlEMv9IBJD5p9ZqBZ0FAPotMS/RIBHANVA37J0Zlp9wakvUegcXb3hl9xp+aRsjikhS5h89qiPPXGkWq9dsQrbpDODP8RziqskxzIzu4tYtvLkUZ/Ak9LCRu63SSGX+yAj24mG9Q+4taWGX32AmuVFK9CGDoec0IYx8ouUtiGWVBqZz0dRteKbBbL6MtnPjUxT+wMc6rarPL8zj9vwIDAQAB'
merchant-id
:
'
fd567f94-9a44-4ae5-879f-9acc919d0f89'
merchant-user-id
:
'
42c556cc-1509-4de0-bfc3-dfbcb48eae57'
role
:
'
super_admin'
\ No newline at end of file
liquidnet-bus-config/liquidnet-config/liquidnet-service-goblin-dev.yml
View file @
c169b508
...
@@ -26,14 +26,5 @@ liquidnet:
...
@@ -26,14 +26,5 @@ liquidnet:
public-key
:
"
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArR8pqWsRMqiunn8uEZGF9AeizJK0vuWjlcNnTbw9Sb96dMVuYu3SRj+Dx4E4SgyEL4CYROou1xwY57kAKEqHdH7o1W41O9jYjXZG38BrtBR+D9Qh9OqGxCZ+e4Gi38XHGg6fn67iXefOqp1kWGd4qc8tIZO1lIDXS19R09D/mESNBMulQdVPyZF7gvd11A+7EEOfRlSOjrtqIoUWV0GIqhLPUtGJk8Uq/d9NLitJyvK3tgz8cvJ4RyK6UpGtRDrqiBiQxbvK9EqMd1sw3zkvM03szSWon4LHFNqvDr6RYfFyFUCvX9UPYmeritENnroEuTBlTFLLb68ed4HZEZDPTQIDAQAB"
public-key
:
"
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArR8pqWsRMqiunn8uEZGF9AeizJK0vuWjlcNnTbw9Sb96dMVuYu3SRj+Dx4E4SgyEL4CYROou1xwY57kAKEqHdH7o1W41O9jYjXZG38BrtBR+D9Qh9OqGxCZ+e4Gi38XHGg6fn67iXefOqp1kWGd4qc8tIZO1lIDXS19R09D/mESNBMulQdVPyZF7gvd11A+7EEOfRlSOjrtqIoUWV0GIqhLPUtGJk8Uq/d9NLitJyvK3tgz8cvJ4RyK6UpGtRDrqiBiQxbvK9EqMd1sw3zkvM03szSWon4LHFNqvDr6RYfFyFUCvX9UPYmeritENnroEuTBlTFLLb68ed4HZEZDPTQIDAQAB"
private-key
:
"
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDJAOaA1ikJzDL0vUuTyl3/vlHyuSod6/gFLLrSTD6EJkma5Ld34HHu82/5pEojEvbcU113L9j3fUJlpyjX6CFk6j2KjMIuyFxhgrVFi5WT5m74wYohoWNifkQrgwsO3oxI7cewWFu/w7/yCK9dzI4QxasGUKH9iPweI+26IR0DBbOfC9GVudOy2b2xLrGAevEEHdVTNqrQNdlrTzqAH7r3uk8s2vaBZX+O4gyf7eKdHdC4CVSWfYPLO1sA48MxNwI7OExxfGeV+0wmBMGRSoZ5FhWsqZs+f9jGcmfF+uEfAO71PqHjezXYxq7+oWDfDBPCTc5fo9w5v1HV0aZaYOe1AgMBAAECggEBAI4yR98fInse7XF8NOpBwIv6/QhEfAoc9CHdCfFaJOPiHjIo2a5BpvhPWYj288eqU998TmPSAqDbCUzWm6taOb2lhJHukDT+Y3RMPqcLX275Fsp+SJUQEjoMb3eExh7ny8CQDrOvXoDkH3c/M6ic3Gf7Hslh46dz8D/2VOhXIqoObPlSLzniwiMTDBEwB7IRc3Q+r4V6ZnKt8wjKQZpotBA3TlJlEBBj/h5SbWokwMQbTqFkjl7gVe0ase2WfV+cD4qhPZx6CWphPVyWelg+wpDqXOIQdnE8pgri5a9ZkzgPTOrKyCm+EOa9lZAp81tnb2iFhrlkKPSWUW8zLtZzxMECgYEA+sNyF0U9anyxeKxXtlGKKuMHJSnBpZeU6FSvZjTewFH2Sxh3QwZjg6h5BfvTLH1XfNerx3gdpAPJ+EyAZuEibDr47bp+j4CtT27dVolz5XQ5ugOadwzdNZkq6vhuq1aGATmS/mlNE1/pdMEP9F6hi2HYncER6BFOy0xSwMKCnRECgYEAzTNxhvZ0pb2hPKylxHUydkm3Uznq5Zkquv6II6W5aiKvceETHwdRZLoKc+I0kd0/4fBfJI2Jsjexy51ERiG+8y4wVrcrky6NLw6mnXSvnTSQCftbexheJTg9c5dpfKIj+rxtuBeZ3Sj1MJQ6OSBUYu3iTqstO0Rgp/1ofWQJ8GUCgYEAspxzr0+KJ0cZwbI/54S8vT9n33iWjbQiRDnNlScjYij/HQ4YJI1wZF6jlTeBerbskeesWy+bLS/ltA4Jhz3knuKCXBHyA5TL3UBCN1lAS7c1RuE6LIHlLkAi6ap6aV//ou+3W671T0+JobfB/XVJ61WOTQ8wCfQKA5QhfVsOXYECgYEAvzbm3Ysfm6qfazi+p9lGErASov1fhGA8T1AMcJtnsh1sO8Qu20UodaJfRylNL3dqphIltpwl6eq4RTLhgjDEDTvHU6cQdfB1I5qVbDhlxSpL5uFRl91XLXvA18wKQledC3M3Esr7V/loscIOl1knCaD+t6wPVCEdqK0dB2uHT3kCgYEA3p3rlmCmWzkZ/U8jE4087YEkJWV+r86YC63r4YZEqZtfHk4hNchAYke4jYPqkTtmRVZi2C6KuVr5M3ASHmGWorBY0VA9Abd3daniNocZCeMOt4Z7U6MIbqW7KYSrjx8V8HIsdH7HF97ofRuMH6oaz9bFMM6XwrEAMY+zTdH9A4Y="
private-key
:
"
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDJAOaA1ikJzDL0vUuTyl3/vlHyuSod6/gFLLrSTD6EJkma5Ld34HHu82/5pEojEvbcU113L9j3fUJlpyjX6CFk6j2KjMIuyFxhgrVFi5WT5m74wYohoWNifkQrgwsO3oxI7cewWFu/w7/yCK9dzI4QxasGUKH9iPweI+26IR0DBbOfC9GVudOy2b2xLrGAevEEHdVTNqrQNdlrTzqAH7r3uk8s2vaBZX+O4gyf7eKdHdC4CVSWfYPLO1sA48MxNwI7OExxfGeV+0wmBMGRSoZ5FhWsqZs+f9jGcmfF+uEfAO71PqHjezXYxq7+oWDfDBPCTc5fo9w5v1HV0aZaYOe1AgMBAAECggEBAI4yR98fInse7XF8NOpBwIv6/QhEfAoc9CHdCfFaJOPiHjIo2a5BpvhPWYj288eqU998TmPSAqDbCUzWm6taOb2lhJHukDT+Y3RMPqcLX275Fsp+SJUQEjoMb3eExh7ny8CQDrOvXoDkH3c/M6ic3Gf7Hslh46dz8D/2VOhXIqoObPlSLzniwiMTDBEwB7IRc3Q+r4V6ZnKt8wjKQZpotBA3TlJlEBBj/h5SbWokwMQbTqFkjl7gVe0ase2WfV+cD4qhPZx6CWphPVyWelg+wpDqXOIQdnE8pgri5a9ZkzgPTOrKyCm+EOa9lZAp81tnb2iFhrlkKPSWUW8zLtZzxMECgYEA+sNyF0U9anyxeKxXtlGKKuMHJSnBpZeU6FSvZjTewFH2Sxh3QwZjg6h5BfvTLH1XfNerx3gdpAPJ+EyAZuEibDr47bp+j4CtT27dVolz5XQ5ugOadwzdNZkq6vhuq1aGATmS/mlNE1/pdMEP9F6hi2HYncER6BFOy0xSwMKCnRECgYEAzTNxhvZ0pb2hPKylxHUydkm3Uznq5Zkquv6II6W5aiKvceETHwdRZLoKc+I0kd0/4fBfJI2Jsjexy51ERiG+8y4wVrcrky6NLw6mnXSvnTSQCftbexheJTg9c5dpfKIj+rxtuBeZ3Sj1MJQ6OSBUYu3iTqstO0Rgp/1ofWQJ8GUCgYEAspxzr0+KJ0cZwbI/54S8vT9n33iWjbQiRDnNlScjYij/HQ4YJI1wZF6jlTeBerbskeesWy+bLS/ltA4Jhz3knuKCXBHyA5TL3UBCN1lAS7c1RuE6LIHlLkAi6ap6aV//ou+3W671T0+JobfB/XVJ61WOTQ8wCfQKA5QhfVsOXYECgYEAvzbm3Ysfm6qfazi+p9lGErASov1fhGA8T1AMcJtnsh1sO8Qu20UodaJfRylNL3dqphIltpwl6eq4RTLhgjDEDTvHU6cQdfB1I5qVbDhlxSpL5uFRl91XLXvA18wKQledC3M3Esr7V/loscIOl1knCaD+t6wPVCEdqK0dB2uHT3kCgYEA3p3rlmCmWzkZ/U8jE4087YEkJWV+r86YC63r4YZEqZtfHk4hNchAYke4jYPqkTtmRVZi2C6KuVr5M3ASHmGWorBY0VA9Abd3daniNocZCeMOt4Z7U6MIbqW7KYSrjx8V8HIsdH7HF97ofRuMH6oaz9bFMM6XwrEAMY+zTdH9A4Y="
notify-url
:
'
https://testgoblin.zhengzai.tv/goblin/bracelet/callback'
notify-url
:
'
https://testgoblin.zhengzai.tv/goblin/bracelet/callback'
shouqianba
:
base-api
:
'
https://open-apisix.iwosai.com'
app-id
:
'
2025082700005615'
app-key
:
'
4d5c7647853bba34a0b5af42bc2400e7'
app-code
:
'
DWTY'
public-key
:
'
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3Hlg887xrRWYxPqLDX53oimjsxfd7PDdhQ4zHUYA1eQP6PMyhAo+GU/oq4RQVpW6LrG0PWA6CoD7qva6T0NwsDWn5/fmWhmH+Ad6K5WG5jY9ZVjnys9R+HGeFyE7hSkhqSgiSlEMv9IBJD5p9ZqBZ0FAPotMS/RIBHANVA37J0Zlp9wakvUegcXb3hl9xp+aRsjikhS5h89qiPPXGkWq9dsQrbpDODP8RziqskxzIzu4tYtvLkUZ/Ak9LCRu63SSGX+yAj24mG9Q+4taWGX32AmuVFK9CGDoec0IYx8ouUtiGWVBqZz0dRteKbBbL6MtnPjUxT+wMc6rarPL8zj9vwIDAQAB'
merchant-id
:
'
fd567f94-9a44-4ae5-879f-9acc919d0f89'
merchant-user-id
:
'
42c556cc-1509-4de0-bfc3-dfbcb48eae57'
role
:
'
super_admin'
liquidnet-bus-config/liquidnet-config/liquidnet-service-goblin-test.yml
View file @
c169b508
...
@@ -26,12 +26,3 @@ liquidnet:
...
@@ -26,12 +26,3 @@ liquidnet:
public-key
:
"
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArR8pqWsRMqiunn8uEZGF9AeizJK0vuWjlcNnTbw9Sb96dMVuYu3SRj+Dx4E4SgyEL4CYROou1xwY57kAKEqHdH7o1W41O9jYjXZG38BrtBR+D9Qh9OqGxCZ+e4Gi38XHGg6fn67iXefOqp1kWGd4qc8tIZO1lIDXS19R09D/mESNBMulQdVPyZF7gvd11A+7EEOfRlSOjrtqIoUWV0GIqhLPUtGJk8Uq/d9NLitJyvK3tgz8cvJ4RyK6UpGtRDrqiBiQxbvK9EqMd1sw3zkvM03szSWon4LHFNqvDr6RYfFyFUCvX9UPYmeritENnroEuTBlTFLLb68ed4HZEZDPTQIDAQAB"
public-key
:
"
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArR8pqWsRMqiunn8uEZGF9AeizJK0vuWjlcNnTbw9Sb96dMVuYu3SRj+Dx4E4SgyEL4CYROou1xwY57kAKEqHdH7o1W41O9jYjXZG38BrtBR+D9Qh9OqGxCZ+e4Gi38XHGg6fn67iXefOqp1kWGd4qc8tIZO1lIDXS19R09D/mESNBMulQdVPyZF7gvd11A+7EEOfRlSOjrtqIoUWV0GIqhLPUtGJk8Uq/d9NLitJyvK3tgz8cvJ4RyK6UpGtRDrqiBiQxbvK9EqMd1sw3zkvM03szSWon4LHFNqvDr6RYfFyFUCvX9UPYmeritENnroEuTBlTFLLb68ed4HZEZDPTQIDAQAB"
private-key
:
"
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDJAOaA1ikJzDL0vUuTyl3/vlHyuSod6/gFLLrSTD6EJkma5Ld34HHu82/5pEojEvbcU113L9j3fUJlpyjX6CFk6j2KjMIuyFxhgrVFi5WT5m74wYohoWNifkQrgwsO3oxI7cewWFu/w7/yCK9dzI4QxasGUKH9iPweI+26IR0DBbOfC9GVudOy2b2xLrGAevEEHdVTNqrQNdlrTzqAH7r3uk8s2vaBZX+O4gyf7eKdHdC4CVSWfYPLO1sA48MxNwI7OExxfGeV+0wmBMGRSoZ5FhWsqZs+f9jGcmfF+uEfAO71PqHjezXYxq7+oWDfDBPCTc5fo9w5v1HV0aZaYOe1AgMBAAECggEBAI4yR98fInse7XF8NOpBwIv6/QhEfAoc9CHdCfFaJOPiHjIo2a5BpvhPWYj288eqU998TmPSAqDbCUzWm6taOb2lhJHukDT+Y3RMPqcLX275Fsp+SJUQEjoMb3eExh7ny8CQDrOvXoDkH3c/M6ic3Gf7Hslh46dz8D/2VOhXIqoObPlSLzniwiMTDBEwB7IRc3Q+r4V6ZnKt8wjKQZpotBA3TlJlEBBj/h5SbWokwMQbTqFkjl7gVe0ase2WfV+cD4qhPZx6CWphPVyWelg+wpDqXOIQdnE8pgri5a9ZkzgPTOrKyCm+EOa9lZAp81tnb2iFhrlkKPSWUW8zLtZzxMECgYEA+sNyF0U9anyxeKxXtlGKKuMHJSnBpZeU6FSvZjTewFH2Sxh3QwZjg6h5BfvTLH1XfNerx3gdpAPJ+EyAZuEibDr47bp+j4CtT27dVolz5XQ5ugOadwzdNZkq6vhuq1aGATmS/mlNE1/pdMEP9F6hi2HYncER6BFOy0xSwMKCnRECgYEAzTNxhvZ0pb2hPKylxHUydkm3Uznq5Zkquv6II6W5aiKvceETHwdRZLoKc+I0kd0/4fBfJI2Jsjexy51ERiG+8y4wVrcrky6NLw6mnXSvnTSQCftbexheJTg9c5dpfKIj+rxtuBeZ3Sj1MJQ6OSBUYu3iTqstO0Rgp/1ofWQJ8GUCgYEAspxzr0+KJ0cZwbI/54S8vT9n33iWjbQiRDnNlScjYij/HQ4YJI1wZF6jlTeBerbskeesWy+bLS/ltA4Jhz3knuKCXBHyA5TL3UBCN1lAS7c1RuE6LIHlLkAi6ap6aV//ou+3W671T0+JobfB/XVJ61WOTQ8wCfQKA5QhfVsOXYECgYEAvzbm3Ysfm6qfazi+p9lGErASov1fhGA8T1AMcJtnsh1sO8Qu20UodaJfRylNL3dqphIltpwl6eq4RTLhgjDEDTvHU6cQdfB1I5qVbDhlxSpL5uFRl91XLXvA18wKQledC3M3Esr7V/loscIOl1knCaD+t6wPVCEdqK0dB2uHT3kCgYEA3p3rlmCmWzkZ/U8jE4087YEkJWV+r86YC63r4YZEqZtfHk4hNchAYke4jYPqkTtmRVZi2C6KuVr5M3ASHmGWorBY0VA9Abd3daniNocZCeMOt4Z7U6MIbqW7KYSrjx8V8HIsdH7HF97ofRuMH6oaz9bFMM6XwrEAMY+zTdH9A4Y="
private-key
:
"
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDJAOaA1ikJzDL0vUuTyl3/vlHyuSod6/gFLLrSTD6EJkma5Ld34HHu82/5pEojEvbcU113L9j3fUJlpyjX6CFk6j2KjMIuyFxhgrVFi5WT5m74wYohoWNifkQrgwsO3oxI7cewWFu/w7/yCK9dzI4QxasGUKH9iPweI+26IR0DBbOfC9GVudOy2b2xLrGAevEEHdVTNqrQNdlrTzqAH7r3uk8s2vaBZX+O4gyf7eKdHdC4CVSWfYPLO1sA48MxNwI7OExxfGeV+0wmBMGRSoZ5FhWsqZs+f9jGcmfF+uEfAO71PqHjezXYxq7+oWDfDBPCTc5fo9w5v1HV0aZaYOe1AgMBAAECggEBAI4yR98fInse7XF8NOpBwIv6/QhEfAoc9CHdCfFaJOPiHjIo2a5BpvhPWYj288eqU998TmPSAqDbCUzWm6taOb2lhJHukDT+Y3RMPqcLX275Fsp+SJUQEjoMb3eExh7ny8CQDrOvXoDkH3c/M6ic3Gf7Hslh46dz8D/2VOhXIqoObPlSLzniwiMTDBEwB7IRc3Q+r4V6ZnKt8wjKQZpotBA3TlJlEBBj/h5SbWokwMQbTqFkjl7gVe0ase2WfV+cD4qhPZx6CWphPVyWelg+wpDqXOIQdnE8pgri5a9ZkzgPTOrKyCm+EOa9lZAp81tnb2iFhrlkKPSWUW8zLtZzxMECgYEA+sNyF0U9anyxeKxXtlGKKuMHJSnBpZeU6FSvZjTewFH2Sxh3QwZjg6h5BfvTLH1XfNerx3gdpAPJ+EyAZuEibDr47bp+j4CtT27dVolz5XQ5ugOadwzdNZkq6vhuq1aGATmS/mlNE1/pdMEP9F6hi2HYncER6BFOy0xSwMKCnRECgYEAzTNxhvZ0pb2hPKylxHUydkm3Uznq5Zkquv6II6W5aiKvceETHwdRZLoKc+I0kd0/4fBfJI2Jsjexy51ERiG+8y4wVrcrky6NLw6mnXSvnTSQCftbexheJTg9c5dpfKIj+rxtuBeZ3Sj1MJQ6OSBUYu3iTqstO0Rgp/1ofWQJ8GUCgYEAspxzr0+KJ0cZwbI/54S8vT9n33iWjbQiRDnNlScjYij/HQ4YJI1wZF6jlTeBerbskeesWy+bLS/ltA4Jhz3knuKCXBHyA5TL3UBCN1lAS7c1RuE6LIHlLkAi6ap6aV//ou+3W671T0+JobfB/XVJ61WOTQ8wCfQKA5QhfVsOXYECgYEAvzbm3Ysfm6qfazi+p9lGErASov1fhGA8T1AMcJtnsh1sO8Qu20UodaJfRylNL3dqphIltpwl6eq4RTLhgjDEDTvHU6cQdfB1I5qVbDhlxSpL5uFRl91XLXvA18wKQledC3M3Esr7V/loscIOl1knCaD+t6wPVCEdqK0dB2uHT3kCgYEA3p3rlmCmWzkZ/U8jE4087YEkJWV+r86YC63r4YZEqZtfHk4hNchAYke4jYPqkTtmRVZi2C6KuVr5M3ASHmGWorBY0VA9Abd3daniNocZCeMOt4Z7U6MIbqW7KYSrjx8V8HIsdH7HF97ofRuMH6oaz9bFMM6XwrEAMY+zTdH9A4Y="
notify-url
:
'
https://testgoblin.zhengzai.tv/goblin/bracelet/callback'
notify-url
:
'
https://testgoblin.zhengzai.tv/goblin/bracelet/callback'
shouqianba
:
base-api
:
'
https://open-apisix.iwosai.com'
app-id
:
'
2025082700005615'
app-key
:
'
4d5c7647853bba34a0b5af42bc2400e7'
app-code
:
'
DWTY'
public-key
:
'
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3Hlg887xrRWYxPqLDX53oimjsxfd7PDdhQ4zHUYA1eQP6PMyhAo+GU/oq4RQVpW6LrG0PWA6CoD7qva6T0NwsDWn5/fmWhmH+Ad6K5WG5jY9ZVjnys9R+HGeFyE7hSkhqSgiSlEMv9IBJD5p9ZqBZ0FAPotMS/RIBHANVA37J0Zlp9wakvUegcXb3hl9xp+aRsjikhS5h89qiPPXGkWq9dsQrbpDODP8RziqskxzIzu4tYtvLkUZ/Ak9LCRu63SSGX+yAj24mG9Q+4taWGX32AmuVFK9CGDoec0IYx8ouUtiGWVBqZz0dRteKbBbL6MtnPjUxT+wMc6rarPL8zj9vwIDAQAB'
merchant-id
:
'
fd567f94-9a44-4ae5-879f-9acc919d0f89'
merchant-user-id
:
'
42c556cc-1509-4de0-bfc3-dfbcb48eae57'
role
:
'
super_admin'
\ No newline at end of file
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/test/java/com/liquidnet/service/goblin/test/GoblinShouQianBaServiceImplTest.java
View file @
c169b508
package
com
.
liquidnet
.
service
.
goblin
.
test
;
package
com
.
liquidnet
.
service
.
goblin
.
test
;
import
com.liquidnet.
service.goblin.param.shouqianba.request.CommonRequest
;
import
com.liquidnet.
common.third.sqb.biz.SqbBiz
;
import
com.liquidnet.
service.goblin.param.shouqianba.request.MallListQuery
Request
;
import
com.liquidnet.
common.third.sqb.param.request.Common
Request
;
import
com.liquidnet.
service.goblin.param.shouqianba.request.MallProducts
QueryRequest
;
import
com.liquidnet.
common.third.sqb.param.request.MallList
QueryRequest
;
import
com.liquidnet.
service.goblin.param.shouqianba.response.data.MallListQueryData
;
import
com.liquidnet.
common.third.sqb.param.request.MallProductsQueryRequest
;
import
com.liquidnet.
service.goblin.param.shouqianba.response.data.MallProducts
QueryData
;
import
com.liquidnet.
common.third.sqb.param.response.data.MallList
QueryData
;
import
com.liquidnet.
service.goblin.service.IGoblinShouQianBaService
;
import
com.liquidnet.
common.third.sqb.param.response.data.MallProductsQueryData
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.Assert
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.junit.Test
;
...
@@ -23,7 +23,7 @@ import java.util.List;
...
@@ -23,7 +23,7 @@ import java.util.List;
public
class
GoblinShouQianBaServiceImplTest
{
public
class
GoblinShouQianBaServiceImplTest
{
@Autowired
@Autowired
private
IGoblinShouQianBaService
goblinShouQianBaService
;
private
SqbBiz
sqbBiz
;
@Test
@Test
...
@@ -51,7 +51,7 @@ public class GoblinShouQianBaServiceImplTest {
...
@@ -51,7 +51,7 @@ public class GoblinShouQianBaServiceImplTest {
mallListQueryRequest
.
setCursor
(
cursor
);
mallListQueryRequest
.
setCursor
(
cursor
);
mallListQueryRequest
.
setSort
(
sort
);
mallListQueryRequest
.
setSort
(
sort
);
List
<
MallListQueryData
>
mallListQueryData
=
goblinShouQianBaService
.
queryMallList
(
mallListQueryRequest
);
List
<
MallListQueryData
>
mallListQueryData
=
sqbBiz
.
queryMallList
(
mallListQueryRequest
);
Assert
.
assertNotNull
(
mallListQueryData
);
Assert
.
assertNotNull
(
mallListQueryData
);
}
}
...
@@ -72,7 +72,7 @@ public class GoblinShouQianBaServiceImplTest {
...
@@ -72,7 +72,7 @@ public class GoblinShouQianBaServiceImplTest {
mallProductsQueryRequest
.
setSeller
(
seller
);
mallProductsQueryRequest
.
setSeller
(
seller
);
mallProductsQueryRequest
.
setMallID
(
mall
);
mallProductsQueryRequest
.
setMallID
(
mall
);
List
<
MallProductsQueryData
>
queryData
=
goblinShouQianBaService
.
queryMallProducts
(
mallProductsQueryRequest
);
List
<
MallProductsQueryData
>
queryData
=
sqbBiz
.
queryMallProducts
(
mallProductsQueryRequest
);
Assert
.
assertNotNull
(
queryData
);
Assert
.
assertNotNull
(
queryData
);
}
}
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/controller/GoblinSqbOrderController.java
View file @
c169b508
...
@@ -12,12 +12,12 @@ import com.liquidnet.service.base.codec.vo.EncryptedReq;
...
@@ -12,12 +12,12 @@ import com.liquidnet.service.base.codec.vo.EncryptedReq;
import
com.liquidnet.service.goblin.dto.manage.GoblinSqbOrderParam
;
import
com.liquidnet.service.goblin.dto.manage.GoblinSqbOrderParam
;
import
com.liquidnet.service.goblin.dto.vo.GoblinSqbOrderCreateVo
;
import
com.liquidnet.service.goblin.dto.vo.GoblinSqbOrderCreateVo
;
import
com.liquidnet.service.goblin.service.IGoblinSqbOrderService
;
import
com.liquidnet.service.goblin.service.IGoblinSqbOrderService
;
import
com.liquidnet.service.goblin.service.IGoblinSqbService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotBlank
;
...
@@ -38,12 +38,22 @@ public class GoblinSqbOrderController {
...
@@ -38,12 +38,22 @@ public class GoblinSqbOrderController {
*/
*/
@PostMapping
(
"/pre"
)
@PostMapping
(
"/pre"
)
@ApiOperation
(
"创建收钱吧下单"
)
@ApiOperation
(
"创建收钱吧下单"
)
public
ResponseDto
<
GoblinSqbOrderCreateVo
>
preOrder
(
EncryptedReq
<
GoblinSqbOrderParam
>
param
)
{
public
ResponseDto
<
GoblinSqbOrderCreateVo
>
preOrder
(
@RequestBody
EncryptedReq
<
GoblinSqbOrderParam
>
param
)
{
String
userId
=
CurrentUtil
.
getCurrentUid
();
String
userId
=
CurrentUtil
.
getCurrentUid
();
GoblinSqbOrderParam
orderParam
=
param
.
getData
();
GoblinSqbOrderParam
orderParam
=
param
.
getData
();
return
goblinSqbOrderService
.
createOrder
(
userId
,
orderParam
);
return
goblinSqbOrderService
.
createOrder
(
userId
,
orderParam
);
}
}
/**
* 创建收钱吧订单
*/
@PostMapping
(
"/fc7bce6d6c2213b866f76493f9222201"
)
@ApiOperation
(
"创建收钱吧下单"
)
public
ResponseDto
<
GoblinSqbOrderCreateVo
>
preOrder
(
@RequestBody
@Validated
GoblinSqbOrderParam
param
)
{
String
userId
=
CurrentUtil
.
getCurrentUid
();
return
goblinSqbOrderService
.
createOrder
(
userId
,
param
);
}
/**
/**
* 查询支付状态
* 查询支付状态
*/
*/
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/GoblinSqbOrderServiceImpl.java
View file @
c169b508
...
@@ -85,21 +85,11 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
...
@@ -85,21 +85,11 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
}
}
}
}
}
}
if
(!
skuIdExists
)
{
if
(!
skuIdExists
)
{
log
.
error
(
"[收钱吧下单] 演出-商品关联不存在或已禁用,performancesId={}, skuId={}"
,
performancesId
,
skuId
);
log
.
error
(
"[收钱吧下单] 演出-商品关联不存在或已禁用,performancesId={}, skuId={}"
,
performancesId
,
skuId
);
return
ResponseDto
.
failure
(
"商品与演出关联不存在"
);
return
ResponseDto
.
failure
(
"商品与演出关联不存在"
);
}
}
// Step 3: 原子扣减库存
int
remaining
=
goblinRedisUtils
.
decrSkuStock
(
null
,
skuId
,
quantity
);
if
(
remaining
<
0
)
{
goblinRedisUtils
.
incrSkuStock
(
null
,
skuId
,
quantity
);
log
.
warn
(
"[收钱吧下单] 库存不足,skuId={}, quantity={}"
,
skuId
,
quantity
);
return
ResponseDto
.
failure
(
"库存不足"
);
}
log
.
info
(
"[收钱吧下单] 扣减库存成功,skuId={}, remaining={}"
,
skuId
,
remaining
);
GoblinGoodsSkuInfoVo
skuVo
=
goblinRedisUtils
.
getGoodsSkuInfoVo
(
skuId
);
GoblinGoodsSkuInfoVo
skuVo
=
goblinRedisUtils
.
getGoodsSkuInfoVo
(
skuId
);
if
(
skuVo
==
null
)
{
if
(
skuVo
==
null
)
{
log
.
error
(
"[收钱吧下单] 未找到商品, skuId: {}, spuId: {}"
,
skuId
,
spuId
);
log
.
error
(
"[收钱吧下单] 未找到商品, skuId: {}, spuId: {}"
,
skuId
,
spuId
);
...
@@ -108,6 +98,19 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
...
@@ -108,6 +98,19 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
if
(!
skuId
.
equals
(
skuVo
.
getSkuId
()))
{
if
(!
skuId
.
equals
(
skuVo
.
getSkuId
()))
{
return
ResponseDto
.
failure
(
"下单失败"
);
return
ResponseDto
.
failure
(
"下单失败"
);
}
}
if
(!
skuVo
.
getShelvesStatus
().
equals
(
"3"
))
{
log
.
info
(
"[收钱吧下单] 商品已下架 skuId: {}, spuId: {}"
,
skuId
,
spuId
);
return
ResponseDto
.
failure
(
"商品已下架"
);
}
// Step 3: 原子扣减库存
int
remaining
=
goblinRedisUtils
.
decrSkuStock
(
null
,
skuId
,
quantity
);
if
(
remaining
<
0
)
{
goblinRedisUtils
.
incrSkuStock
(
null
,
skuId
,
quantity
);
log
.
warn
(
"[收钱吧下单] 库存不足,skuId={}, quantity={}"
,
skuId
,
quantity
);
return
ResponseDto
.
failure
(
"库存不足"
);
}
log
.
info
(
"[收钱吧下单] 扣减库存成功,skuId={}, 剩余库存={}"
,
skuId
,
remaining
);
//TODO 获取该商品对应的商城的编号和密码
//TODO 获取该商品对应的商城的编号和密码
Map
<
String
,
String
>
sqbInfoMap
=
sqbConvertUtils
.
getSqbInfoByzhengzaiSkuIdAndSpuId
(
skuId
,
spuId
);
Map
<
String
,
String
>
sqbInfoMap
=
sqbConvertUtils
.
getSqbInfoByzhengzaiSkuIdAndSpuId
(
skuId
,
spuId
);
...
@@ -116,7 +119,8 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
...
@@ -116,7 +119,8 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
sqbInfoMap
.
get
(
"mallSn"
),
sqbInfoMap
.
get
(
"mallSn"
),
sqbInfoMap
.
get
(
"signature"
),
sqbInfoMap
.
get
(
"signature"
),
userId
,
userId
,
Collections
.
singletonList
(
buildSqbCheckOutItem
(
skuVo
,
quantity
,
sqbInfoMap
.
get
(
"sqbSkuId"
),
sqbInfoMap
.
get
(
"sqbSpuId"
))));
Collections
.
singletonList
(
buildSqbCheckOutItem
(
skuVo
,
quantity
,
sqbInfoMap
.
get
(
"sqbSkuId"
),
sqbInfoMap
.
get
(
"sqbSpuId"
))));
if
(
settlementData
==
null
)
{
if
(
settlementData
==
null
)
{
goblinRedisUtils
.
incrSkuStock
(
null
,
skuId
,
quantity
);
goblinRedisUtils
.
incrSkuStock
(
null
,
skuId
,
quantity
);
return
ResponseDto
.
failure
(
"创建结算明细失败"
);
return
ResponseDto
.
failure
(
"创建结算明细失败"
);
...
@@ -161,7 +165,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
...
@@ -161,7 +165,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
String
.
valueOf
(
cashierData
.
getAmount
()),
String
.
valueOf
(
cashierData
.
getAmount
()),
buildRequestId
(
IDGenerator
.
nextSnowId
()),
buildRequestId
(
IDGenerator
.
nextSnowId
()),
cashierData
.
getPayTools
().
get
(
0
),
cashierData
.
getPayTools
().
get
(
0
),
new
HashMap
<
String
,
Object
>(),
new
HashMap
<
String
,
Object
>(),
// TODO 设置AppID
selectedSignature
,
selectedSignature
,
seq
seq
);
);
...
@@ -252,6 +256,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
...
@@ -252,6 +256,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
orderVo
.
setSqbAcquiringSn
(
sqbAcquiringSn
);
orderVo
.
setSqbAcquiringSn
(
sqbAcquiringSn
);
orderVo
.
setSqbAcquiringSign
(
sqbAcquiringSign
);
orderVo
.
setSqbAcquiringSign
(
sqbAcquiringSign
);
orderVo
.
setSqbCheckoutItemsId
(
checkoutItemsId
);
orderVo
.
setSqbCheckoutItemsId
(
checkoutItemsId
);
orderVo
.
setRefundReason
(
""
);
// 内部状态同步使用
// 内部状态同步使用
orderVo
.
setStatus
(
0
);
orderVo
.
setStatus
(
0
);
orderVo
.
setCreatedAt
(
now
);
orderVo
.
setCreatedAt
(
now
);
...
@@ -330,8 +335,9 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
...
@@ -330,8 +335,9 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"[收钱吧下单] 下单异常,userId={}, skuId={}"
,
userId
,
skuId
,
e
);
log
.
error
(
"[收钱吧下单] 下单异常,userId={}, skuId={}"
,
userId
,
skuId
,
e
);
goblinRedisUtils
.
incrSkuStock
(
null
,
skuId
,
quantity
);
goblinRedisUtils
.
incrSkuStock
(
null
,
skuId
,
quantity
);
return
ResponseDto
.
failure
(
"下单失败"
);
}
finally
{
goblinSqbRedisUtils
.
releaseOrderLock
(
userId
,
skuId
);
goblinSqbRedisUtils
.
releaseOrderLock
(
userId
,
skuId
);
return
ResponseDto
.
failure
(
"下单失败:"
+
e
.
getMessage
());
}
}
}
}
...
@@ -344,7 +350,10 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
...
@@ -344,7 +350,10 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
* @param sqbSpuId
* @param sqbSpuId
* @return
* @return
*/
*/
private
SettlementCreateRequest
.
CheckoutItem
buildSqbCheckOutItem
(
GoblinGoodsSkuInfoVo
skuVo
,
Integer
quantity
,
String
sqbSkuId
,
String
sqbSpuId
)
{
private
SettlementCreateRequest
.
CheckoutItem
buildSqbCheckOutItem
(
GoblinGoodsSkuInfoVo
skuVo
,
Integer
quantity
,
String
sqbSkuId
,
String
sqbSpuId
)
{
// 获取商品与收钱吧商品对应的关联的skuId、spuId
// 获取商品与收钱吧商品对应的关联的skuId、spuId
SettlementCreateRequest
.
CheckoutItem
checkoutItem
=
new
SettlementCreateRequest
.
CheckoutItem
();
SettlementCreateRequest
.
CheckoutItem
checkoutItem
=
new
SettlementCreateRequest
.
CheckoutItem
();
checkoutItem
.
setSpuId
(
sqbSpuId
);
checkoutItem
.
setSpuId
(
sqbSpuId
);
...
@@ -370,35 +379,6 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
...
@@ -370,35 +379,6 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
if
(!
userId
.
equals
(
orderVo
.
getUserId
()))
{
if
(!
userId
.
equals
(
orderVo
.
getUserId
()))
{
return
ResponseDto
.
failure
(
"无权限访问该订单"
);
return
ResponseDto
.
failure
(
"无权限访问该订单"
);
}
}
// 已支付直接返回
if
(
Integer
.
valueOf
(
1
).
equals
(
orderVo
.
getStatus
()))
{
return
ResponseDto
.
success
(
1
);
}
// 调用收钱吧查询收单状态
CommonRequest
.
Seller
seller
=
buildSeller
();
CashierQueryRequest
cashierReq
=
buildCashierQueryRequest
(
seller
,
orderVo
.
getSqbAcquiringSn
(),
orderVo
.
getSqbOrderSignature
());
CashierQueryData
cashierData
=
sqbBiz
.
queryCashier
(
cashierReq
);
if
(
cashierData
==
null
)
{
log
.
warn
(
"[收钱吧支付状态] queryCashier 调用失败,orderId={}"
,
orderId
);
return
ResponseDto
.
success
(
orderVo
.
getStatus
());
}
// acquiringState 通过 cashierData.getAmount() > 0 && 收单签名有效来推断 —— 实际以收钱吧文档为准
// 简化处理:收银台能正常返回且 selectedSignature 非空,视为已支付
if
(
cashierData
.
getSelectedSignature
()
!=
null
)
{
String
now
=
LocalDateTime
.
now
().
format
(
DTF
);
orderVo
.
setStatus
(
1
);
orderVo
.
setUpdatedAt
(
now
);
goblinSqbRedisUtils
.
setSqbOrder
(
orderId
,
orderVo
);
syncOrderStatus
(
orderId
,
1
);
log
.
info
(
"[收钱吧支付状态] 确认支付成功,orderId={}"
,
orderId
);
return
ResponseDto
.
success
(
1
);
}
return
ResponseDto
.
success
(
orderVo
.
getStatus
());
return
ResponseDto
.
success
(
orderVo
.
getStatus
());
}
}
...
@@ -535,7 +515,8 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
...
@@ -535,7 +515,8 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
}
}
private
CashierQueryRequest
buildCashierQueryRequest
(
CommonRequest
.
Seller
seller
,
private
CashierQueryRequest
buildCashierQueryRequest
(
CommonRequest
.
Seller
seller
,
String
acquiringSn
,
String
acquiringSignature
)
{
String
acquiringSn
,
String
acquiringSignature
)
{
CashierQueryRequest
req
=
new
CashierQueryRequest
();
CashierQueryRequest
req
=
new
CashierQueryRequest
();
req
.
setAppid
(
sqbBiz
.
getSqbConfig
().
getAppId
());
req
.
setAppid
(
sqbBiz
.
getSqbConfig
().
getAppId
());
req
.
setSeller
(
seller
);
req
.
setSeller
(
seller
);
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/utils/GoblinSqbRedisUtils.java
View file @
c169b508
...
@@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -29,7 +30,14 @@ public class GoblinSqbRedisUtils {
...
@@ -29,7 +30,14 @@ public class GoblinSqbRedisUtils {
}
}
public
GoblinSqbOrderVo
getSqbOrder
(
String
orderId
)
{
public
GoblinSqbOrderVo
getSqbOrder
(
String
orderId
)
{
return
(
GoblinSqbOrderVo
)
redisUtil
.
get
(
GoblinRedisConst
.
SQB_ORDER
.
concat
(
orderId
));
String
redisKey
=
GoblinRedisConst
.
SQB_ORDER
.
concat
(
orderId
);
Object
object
=
redisUtil
.
get
(
redisKey
);
if
(
null
==
object
)
{
return
null
;
}
else
{
return
(
GoblinSqbOrderVo
)
object
;
}
}
}
public
void
delSqbOrder
(
String
orderId
)
{
public
void
delSqbOrder
(
String
orderId
)
{
...
@@ -42,8 +50,19 @@ public class GoblinSqbRedisUtils {
...
@@ -42,8 +50,19 @@ public class GoblinSqbRedisUtils {
redisUtil
.
set
(
GoblinRedisConst
.
SQB_PERFORMANCE_GOODS
.
concat
(
performancesId
),
list
,
RedisKeyExpireConst
.
SQB_PERFORMANCE_GOODS_EXPIRE
);
redisUtil
.
set
(
GoblinRedisConst
.
SQB_PERFORMANCE_GOODS
.
concat
(
performancesId
),
list
,
RedisKeyExpireConst
.
SQB_PERFORMANCE_GOODS_EXPIRE
);
}
}
/**
* 获取演出关联商品
* @param performancesId
* @return
*/
public
List
<
GoblinSqbPerfGoodsVo
>
getPerfGoods
(
String
performancesId
)
{
public
List
<
GoblinSqbPerfGoodsVo
>
getPerfGoods
(
String
performancesId
)
{
return
(
List
<
GoblinSqbPerfGoodsVo
>)
redisUtil
.
get
(
GoblinRedisConst
.
SQB_PERFORMANCE_GOODS
.
concat
(
performancesId
));
String
key
=
GoblinRedisConst
.
SQB_PERFORMANCE_GOODS
.
concat
(
performancesId
);
Object
object
=
redisUtil
.
get
(
key
);
if
(
null
==
object
)
{
return
Collections
.
emptyList
();
}
else
{
return
(
List
<
GoblinSqbPerfGoodsVo
>)
object
;
}
}
}
public
void
delPerfGoods
(
String
performancesId
)
{
public
void
delPerfGoods
(
String
performancesId
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment