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

Commit 53170c81 authored by wangyifan's avatar wangyifan

离线支付-下单、回调、查询订单状态接口定义

parent e2af0d21
package com.liquidnet.service.goblin.dto.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
public class GoblinBraceletPayResultVo implements Serializable, Cloneable {
private static final long serialVersionUID = 1L;
private static final GoblinBraceletPayResultVo obj = new GoblinBraceletPayResultVo();
public static GoblinBraceletPayResultVo getNew() {
try {
return (GoblinBraceletPayResultVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new GoblinBraceletPayResultVo();
}
}
package com.liquidnet.service.goblin.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@ApiModel(value = "GoblinBraceletOrderPayParam", description = "手环下单请求参数")
@Data
public class GoblinBraceletOrderPayParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "手环ID")
@NotBlank(message = "wristbandId不能为空")
private String wristbandId;
@ApiModelProperty(value = "金额ID")
@NotBlank(message = "金额ID不能为空")
private String amountId;
@ApiModelProperty(value = "姓名")
@NotBlank(message = "姓名不能为空")
private String name;
@ApiModelProperty(value = "手机号")
@NotBlank(message = "手机号不能为空")
private String mobile;
@ApiModelProperty(value = "身份证号码")
@NotBlank(message = "身份证号码不能为空")
private String idCard;
}
package com.liquidnet.service.goblin.service;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinBraceletPayResultVo;
import com.liquidnet.service.goblin.param.GoblinBraceletOrderPayParam;
public interface IGoblinBraceLetOrderService {
/**
* 下单
* @param data
* @return
*/
ResponseDto<GoblinBraceletPayResultVo> checkOrder(GoblinBraceletOrderPayParam data);
/**
* 校验订单状态
* @param orderId
* @return
*/
ResponseDto<Integer> checkOrderResult(String orderId);
ResponseDto<Boolean> dougongCallBack();
}
package com.liquidnet.service.goblin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 手环订单表实体类
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class GoblinRechargeOrder implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 订单ID
*/
private String orderId;
/**
* 用户ID
*/
private String userId;
/**
* 用户昵称
*/
private String userName;
/**
* 用户手机号
*/
private String userMobile;
/**
* 绑定用户姓名
*/
private String bindName;
/**
* 绑定用户手机号
*/
private String bindMobile;
/**
* 绑定用户身份证号码
*/
private String bindIdcard;
/**
* 请求日期
*/
private String reqDate;
/**
* 商品描述
*/
private String goodsDesc;
/**
* 请求流水号
*/
private String reqSeqId;
/**
* 全局流水号
*/
private String hfSeqId;
/**
* 交易类型:
* T_JSAPI: 微信公众号支付
* T_MINIAPP: 微信小程序支付
* A_JSAPI: 支付宝JS
* A_NATIVE: 支付宝正扫
* U_NATIVE: 银联正扫
* U_JSAPI: 银联 JS
* D_NATIVE: 数字人民币正扫
* T_H5:微信直连H5支付
* T_APP:微信APP支付
* T_NATIVE:微信正扫
*/
private String tradeType;
/**
* ATU真实商户号
*/
private String atuSubMerId;
/**
* 终端类型:
* 01-智能POS
* 02-扫码POS
* 03-云音箱
* 04-台牌
* 05-云打印
* 06-扫脸设备
* 07-收银机
* 08-收银助手
* 09-传统POS
* 10-一体音箱
* 11-虚拟终端
*/
private String deviceType;
/**
* 用户账单上的交易订单号
*/
private String outTransId;
/**
* 用户账单上的商户订单号
*/
private String partyOrderId;
/**
* 支付完成时间 格式yyyyMMddHHmmss
*/
private String endTime;
/**
* 入账时间 格式为yyyyMMdd
*/
private String acctDate;
/**
* 单价
*/
private BigDecimal price;
/**
* 应付价格
*/
private BigDecimal priceTotal;
/**
* 实付价格
*/
private BigDecimal priceActual;
/**
* 退款价格
*/
private BigDecimal priceRefund;
/**
* 退款扣除的手续费金额
*/
private BigDecimal refundPriceCharges;
/**
* 退款数
*/
private Integer refundNumber;
/**
* 支付时间
*/
private String timePay;
/**
* 订单状态:
* 0 待付款
* 1 已付款
* 2 已关闭
* 3 正在退款
* 4 已退款
* 5 待关闭
* 6 部分退款
*/
private Byte status;
/**
* 支付状态:
* 0 未支付
* 1 已支付
* 2 支付失败
*/
private Byte payStatus;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
/**
* 备注
*/
private String comment;
}
package com.liquidnet.service.goblin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 手环订单详情表实体类
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class GoblinRechargeOrderEntities implements Serializable {
/**
* 主键ID
*/
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 订单详情ID
*/
private String orderEntitiesId;
/**
* 订单详情关联ID
*/
private String orderId;
/**
* 商品类型:1:手环 2:充值面值
*/
private Byte goodsType;
/**
* 商品ID wristband_id:手环ID amount_id:充值金额ID
*/
private String goodsId;
/**
* 商品名称
*/
private String goodsName;
/**
* 商品金额
*/
private BigDecimal goodsPrice;
/**
* 订单状态:
* 0 待付款
* 1 已付款
* 2 已关闭
* 3 正在退款
* 4 已退款
* 5 待关闭
* 6 部分退款
*/
private Byte status;
/**
* 支付状态:
* 0 未支付
* 1 已支付
* 2 支付失败
*/
private Byte payStatus;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
}
package com.liquidnet.service.order.controller;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.codec.vo.EncryptedReq;
import com.liquidnet.service.goblin.dto.vo.GoblinBraceletPayResultVo;
import com.liquidnet.service.goblin.param.GoblinBraceletOrderPayParam;
import com.liquidnet.service.goblin.service.IGoblinBraceLetOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
@Slf4j
@Api(tags = "商城-手环相关")
@RestController
@RequestMapping("/goblin/bracelet")
public class GoblinBraceletOrderController {
@Autowired
private IGoblinBraceLetOrderService braceLetOrderService;
@PostMapping("/pre")
// @ApiOperation("下单(加密)")
public ResponseDto<GoblinBraceletPayResultVo> checkOrder(@RequestBody @Valid EncryptedReq<GoblinBraceletOrderPayParam> payParam) {
return braceLetOrderService.checkOrder(payParam.getData());
}
@PostMapping("/fc7bce6d6c2213b866f76493f92224b8")
@ApiOperation("下单(非加密)")
public ResponseDto<GoblinBraceletPayResultVo> checkOrder(@RequestBody @Valid GoblinBraceletOrderPayParam payParam) {
return braceLetOrderService.checkOrder(payParam);
}
@PostMapping("/checkPayment")
@ApiOperation("查询订单状态")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "orderId", value = "订单ID", example = "1"),
})
public ResponseDto<Integer> checkOrderResult(@RequestParam("orderId") @NotBlank(message = "订单ID不能为空") String orderId) {
return braceLetOrderService.checkOrderResult(orderId);
}
@PostMapping("/callback")
@ApiOperation("斗拱支付回调")
public ResponseDto<Boolean> dougongCallBack() {
return braceLetOrderService.dougongCallBack();
}
}
package com.liquidnet.service.order.service.impl;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinBraceletPayResultVo;
import com.liquidnet.service.goblin.param.GoblinBraceletOrderPayParam;
import com.liquidnet.service.goblin.service.IGoblinBraceLetOrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class GoblinBraceLetOrderServiceImpl implements IGoblinBraceLetOrderService {
@Override
public ResponseDto<GoblinBraceletPayResultVo> checkOrder(GoblinBraceletOrderPayParam data) {
// 1. 检查商品
// 2. 计算金额
// 3. 数据库实体创建
// 4. 调用斗拱拉起支付
// 5. 根据响应结构写 redis、mysql
// 6. 响应数据
return null;
}
@Override
public ResponseDto<Integer> checkOrderResult(String orderId) {
return null;
}
@Override
public ResponseDto<Boolean> dougongCallBack() {
return 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