记得上下班打卡 | git大法好,push需谨慎

Commit bdd81e6e authored by 姜秀龙's avatar 姜秀龙

收钱吧 下单成功

parent 576523ac
...@@ -26,4 +26,8 @@ public class GoblinSqbOrderParam { ...@@ -26,4 +26,8 @@ public class GoblinSqbOrderParam {
@ApiModelProperty(required = true, value = "关联演出ID") @ApiModelProperty(required = true, value = "关联演出ID")
@NotBlank(message = "关联演出ID不能为空") @NotBlank(message = "关联演出ID不能为空")
private String performancesId; private String performancesId;
@ApiModelProperty(required = true, value = "微信 openId(对应支付小程序 appid 下的用户唯一 openid)")
@NotBlank(message = "openId不能为空")
private String openId;
} }
package com.liquidnet.service.goblin.dto.vo; package com.liquidnet.service.goblin.dto.vo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
@Data @Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class GoblinSqbOrderVo implements Serializable { public class GoblinSqbOrderVo implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -14,6 +16,12 @@ public class GoblinSqbOrderVo implements Serializable { ...@@ -14,6 +16,12 @@ public class GoblinSqbOrderVo implements Serializable {
private String performancesId; private String performancesId;
/**
* 微信 openId(对应支付小程序 appid 下的用户唯一 openid)
* 用于收钱吧创建预支付时的 identity,以及待支付状态下的再次拉起支付。
*/
private String openId;
// 正在spuId // 正在spuId
private String spuId; private String spuId;
......
...@@ -190,6 +190,7 @@ public class SqbBiz { ...@@ -190,6 +190,7 @@ public class SqbBiz {
public CreateWechatPrepayOrderData createWechatPrepayOrder(String acquiringSn, public CreateWechatPrepayOrderData createWechatPrepayOrder(String acquiringSn,
String signature, String signature,
String userId, String userId,
String identity,
String amount, String amount,
String requestSn, String requestSn,
CashierQueryData.PayTool payTool, CashierQueryData.PayTool payTool,
...@@ -201,13 +202,12 @@ public class SqbBiz { ...@@ -201,13 +202,12 @@ public class SqbBiz {
orderRequest.setSeller(cachedSeller); orderRequest.setSeller(cachedSeller);
orderRequest.setAcquiringSn(acquiringSn); orderRequest.setAcquiringSn(acquiringSn);
orderRequest.setSignature(signature); orderRequest.setSignature(signature);
orderRequest.setUsingPayTools(buildUsingPayTools(requestSn, payTool, channelExt, amount, userId)); orderRequest.setUsingPayTools(buildUsingPayTools(requestSn, payTool, channelExt, amount, identity));
orderRequest.setSelectedSignature(selectedSignature); orderRequest.setSelectedSignature(selectedSignature);
orderRequest.setSeq(seq); orderRequest.setSeq(seq);
return createWechatPrepayOrder(orderRequest); return createWechatPrepayOrder(orderRequest);
} }
/** /**
* 查询券码 * 查询券码
*/ */
...@@ -445,13 +445,13 @@ public class SqbBiz { ...@@ -445,13 +445,13 @@ public class SqbBiz {
CashierQueryData.PayTool payTool, CashierQueryData.PayTool payTool,
Map<String, Object> channelExt, Map<String, Object> channelExt,
String amount, String amount,
String userId) { String identity) {
CreateWechatPrepayOrderRequest.UsingPayTool tool = new CreateWechatPrepayOrderRequest.UsingPayTool(); CreateWechatPrepayOrderRequest.UsingPayTool tool = new CreateWechatPrepayOrderRequest.UsingPayTool();
tool.setId(payTool.getId()); tool.setId(payTool.getId());
tool.setPayTool(Integer.valueOf(payTool.getCode())); tool.setPayTool(Integer.valueOf(payTool.getCode()));
tool.setPayMode(4); // TODO 需要确认 tool.setPayMode(4); // TODO 需要确认
tool.setAmount(amount); tool.setAmount(amount);
tool.setIdentity(userId); tool.setIdentity(identity);
tool.setAmountComposition(payTool.getAmountComposition()); tool.setAmountComposition(payTool.getAmountComposition());
tool.setRequestSn(requestSn); tool.setRequestSn(requestSn);
tool.setChannelExt(channelExt); tool.setChannelExt(channelExt);
......
...@@ -66,6 +66,10 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService { ...@@ -66,6 +66,10 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
String spuId = orderParam.getSpuId(); String spuId = orderParam.getSpuId();
String performancesId = orderParam.getPerformancesId(); String performancesId = orderParam.getPerformancesId();
Integer quantity = orderParam.getQuantity(); Integer quantity = orderParam.getQuantity();
String openId = orderParam.getOpenId();
if (openId == null || openId.trim().isEmpty()) {
return ResponseDto.failure("微信 openId 不能为空");
}
// Step 1: 分布式锁防重 // Step 1: 分布式锁防重
boolean locked = goblinSqbRedisUtils.tryOrderLock(userId, skuId); boolean locked = goblinSqbRedisUtils.tryOrderLock(userId, skuId);
...@@ -189,6 +193,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService { ...@@ -189,6 +193,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
CreateWechatPrepayOrderData prepayData = sqbBiz.createWechatPrepayOrder(sqbAcquiringSn, CreateWechatPrepayOrderData prepayData = sqbBiz.createWechatPrepayOrder(sqbAcquiringSn,
sqbAcquiringSign, sqbAcquiringSign,
userId, userId,
openId,
String.valueOf(cashierData.getAmount()), String.valueOf(cashierData.getAmount()),
buildRequestId(IDGenerator.nextSnowId()), buildRequestId(IDGenerator.nextSnowId()),
payTool, payTool,
...@@ -275,6 +280,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService { ...@@ -275,6 +280,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
orderVo.setOrderId(orderId); orderVo.setOrderId(orderId);
orderVo.setUserId(userId); orderVo.setUserId(userId);
orderVo.setPerformancesId(performancesId); orderVo.setPerformancesId(performancesId);
orderVo.setOpenId(openId);
orderVo.setSpuId(spuId); orderVo.setSpuId(spuId);
orderVo.setSkuId(skuId); orderVo.setSkuId(skuId);
orderVo.setQuantity(quantity); orderVo.setQuantity(quantity);
...@@ -501,6 +507,9 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService { ...@@ -501,6 +507,9 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
} }
try { try {
if (orderVo.getOpenId() == null || orderVo.getOpenId().trim().isEmpty()) {
return ResponseDto.failure("缺少微信 openId,无法拉起支付");
}
// 重新查询收银台,获取新的 selectedSignature + seq // 重新查询收银台,获取新的 selectedSignature + seq
CashierQueryData cashierData = sqbBiz.queryCashier(orderVo.getSqbAcquiringSn(), orderVo.getSqbOrderSignature(), userId); CashierQueryData cashierData = sqbBiz.queryCashier(orderVo.getSqbAcquiringSn(), orderVo.getSqbOrderSignature(), userId);
if (cashierData == null) return ResponseDto.failure("查询收银台失败,请稍后重试"); if (cashierData == null) return ResponseDto.failure("查询收银台失败,请稍后重试");
...@@ -527,6 +536,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService { ...@@ -527,6 +536,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
orderVo.getSqbAcquiringSn(), orderVo.getSqbAcquiringSn(),
orderVo.getSqbAcquiringSign(), orderVo.getSqbAcquiringSign(),
userId, userId,
orderVo.getOpenId(),
String.valueOf(cashierData.getAmount()), String.valueOf(cashierData.getAmount()),
buildRequestId(IDGenerator.nextSnowId()), buildRequestId(IDGenerator.nextSnowId()),
payTool, payTool,
...@@ -613,7 +623,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService { ...@@ -613,7 +623,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
usingTool.setPayTool(payTool.getType()); usingTool.setPayTool(payTool.getType());
usingTool.setPayMode(4); usingTool.setPayMode(4);
usingTool.setAmount(payTool.getShowAmount() != null ? String.valueOf(payTool.getShowAmount()) : "0"); usingTool.setAmount(payTool.getShowAmount() != null ? String.valueOf(payTool.getShowAmount()) : "0");
usingTool.setIdentity("wzwl"); usingTool.setIdentity(null);
usingTool.setRequestSn(IDGenerator.nextSnowId()); usingTool.setRequestSn(IDGenerator.nextSnowId());
usingPayTools.add(usingTool); usingPayTools.add(usingTool);
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment