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

Commit d47345d6 authored by wangyifan's avatar wangyifan

收钱吧回调相关接口

parent c169b508
......@@ -61,6 +61,7 @@ public class GoblinSqbOrderVo implements Serializable {
private String updatedAt;
// 扩展属性
private Integer couponUsedStatus; // 0-未核销 1-已核销
// 券核销状态 0-未核销 1-已核销
private Integer couponUsedStatus;
}
package com.liquidnet.common.third.sqb.param.callback;
import lombok.Data;
import java.math.BigDecimal;
......@@ -13,95 +12,143 @@ import java.util.List;
*/
public class OrderCallbackContent {
/** 订单号 */
/**
* 订单号
*/
private String orderSn;
/** 支付流水号列表 */
/**
* 支付流水号列表
*/
private List<String> payTsnList;
/** 终端号 */
/**
* 终端号
*/
private String terminalSn;
/** 门店号 */
/**
* 门店号
*/
private String storeSn;
/** 商城名称 */
/**
* 商城名称
*/
private String mallName;
/** 订单金额 */
/**
* 订单金额
*/
private BigDecimal orderAmount;
/** 创建时间 */
/**
* 创建时间
*/
private String createdAt;
/** 订单状态码 0:已创建 10:已支付 35:已完成 40:已取消 */
/**
* 订单状态码 0:已创建 10:已支付 35:已完成 40:已取消
*/
private Integer orderStateCode;
/** 商品明细列表 */
/**
* 商品明细列表
*/
private List<Item> items;
/** 收集的信息 JSON字符串 */
/**
* 收集的信息 JSON字符串
*/
private String collectedInfo;
/** 预订单编码 */
/**
* 预订单编码
*/
private List<String> preOrderSns;
/** 订单签名 */
/**
* 订单签名
*/
private String orderSignature;
/** 支付的代客下单数据 */
/**
* 支付的代客下单数据
*/
private List<PreOrder> preOrderList;
@Data
/**
* 商品明细
*/
* 商品明细
*/
@Data
public static class Item {
/** 商品标题 */
/**
* 商品标题
*/
private String title;
/** 规格描述 */
/**
* 规格描述
*/
private String skuDesc;
/** 数量 */
/**
* 数量
*/
private String quantity;
/** 单位 */
/**
* 单位
*/
private String unit;
}
@Data
/**
* 采集数据
*/
* 采集数据
*/
@Data
public static class CollectedInfo {
/** 控件类型 */
/**
* 控件类型
*/
private String type;
/** 控件格式 */
/**
* 控件格式
*/
private String form;
/** 字段名 */
/**
* 字段名
*/
private String fieldName;
/** 采集数据内容 */
/**
* 采集数据内容
*/
private String content;
}
@Data
/**
* 支付的代客下单数据
*/
* 支付的代客下单数据
*/
@Data
public static class PreOrder {
/** 预订单id */
/**
* 预订单id
*/
private String preOrderId;
/** 预订单编号 */
/**
* 预订单编号
*/
private String preOrderSn;
/** 请求号 */
/**
* 请求号
*/
private String requestId;
}
......
......@@ -383,18 +383,16 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
}
// ================================ 申请退款 ================================
// ================================ 回调处理 ================================
@Override
public ResponseDto<String> handlePayCallback(OrderCallbackContent orderCallbackContent) {
log.info("[收钱吧支付回调] 收到回调参数: {}", orderCallbackContent);
// TODO 可能需要根据收钱吧的orderSn查询正在的orderId
String orderId = orderCallbackContent.getOrderSn();
if (orderId == null) return ResponseDto.failure("缺少订单标识");
String sqbOrderSn = orderCallbackContent.getOrderSn();
if (sqbOrderSn == null) return ResponseDto.failure("缺少订单标识");
String orderId = "";
GoblinSqbOrderVo orderVo = goblinSqbRedisUtils.getSqbOrder(orderId);
if (orderVo == null) return ResponseDto.failure("订单不存在");
......@@ -433,6 +431,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
@Override
public ResponseDto<String> handleCouponCallback(CouponCallbackContent callbackContent) {
log.info("[收钱吧券状态回调] 收到回调参数: {}", callbackContent);
// TODO 可能需要根据收钱吧的orderSn查询正在的orderId
String orderId = callbackContent.getOrderSn();
if (orderId == null) return ResponseDto.failure("缺少订单标识");
......@@ -467,19 +466,22 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
}
try {
CommonRequest.Seller seller = buildSeller();
// 重新查询收银台,获取新的 selectedSignature + seq
CashierQueryRequest cashierReq = buildCashierQueryRequest(
seller, orderVo.getSqbAcquiringSn(), orderVo.getSqbOrderSignature());
CashierQueryData cashierData = sqbBiz.queryCashier(cashierReq);
CashierQueryData cashierData = sqbBiz.queryCashier(orderVo.getSqbAcquiringSn(), orderVo.getSqbOrderSignature(), userId);
if (cashierData == null) return ResponseDto.failure("查询收银台失败,请稍后重试");
// 重新创建微信预支付
CreateWechatPrepayOrderRequest prepayReq = buildWechatPrepayRequest(
seller, orderVo.getSqbAcquiringSn(), orderVo.getSqbOrderSignature(),
cashierData.getSelectedSignature(), cashierData.getSeq(), cashierData);
CreateWechatPrepayOrderData prepayData = sqbBiz.createWechatPrepayOrder(prepayReq);
CreateWechatPrepayOrderData prepayData = sqbBiz.createWechatPrepayOrder(
orderVo.getSqbAcquiringSn(),
orderVo.getSqbAcquiringSign(),
userId,
String.valueOf(cashierData.getAmount()),
buildRequestId(IDGenerator.nextSnowId()),
cashierData.getPayTools().get(0),
new HashMap<String, Object>(), // TODO 需要填写appID
cashierData.getSelectedSignature(),
cashierData.getSeq()
);
if (prepayData == null || prepayData.getPaymentVoucher() == null) {
return ResponseDto.failure("创建微信预支付失败,请稍后重试");
}
......@@ -606,7 +608,6 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
// 1. 同步 Redis
goblinRedisUtils.setGoblinOrder(orderId, storeOrderVo);
// 2. 同步 MongoDB
goblinMongoUtils.updateGoblinStoreOrderVo(orderId, storeOrderVo);
......@@ -621,9 +622,9 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
data = new Object[]{status, now, orderId};
}
java.util.LinkedList<String> sqls = new java.util.LinkedList<>();
LinkedList<String> sqls = new LinkedList<>();
sqls.add(sql);
java.util.LinkedList<Object[]> sqlData = new java.util.LinkedList<>();
LinkedList<Object[]> sqlData = new LinkedList<>();
sqlData.add(data);
if (queueUtils != null) {
......
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