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

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

收钱吧 下单成功

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