预约挂号-取消预约-接口开发
预约挂号-取消预约-前端整合测试
预约挂号-取消预约-接口开发
需求描述
取消订单分两种情况:
未支付取消订单,直接通知医院更新取消预约状态已支付取消订单,先退款给用户,然后通知医院更新取消预约状态
开发微信退款接口
1配置证书
请下载的证书放在service-order模块/resources/cert文件夹下
在application.properties文件配置证书路径
weixin.cert= C:\yygh_parent\service\service_order\src\main\resources\cert\apiclient_cert.p12 |
首先在模块中引入证书:
然后再配置文件中配置证书的路径:
#微信退款证书
weixin.cert=D:\AnZhuang\Java项目\尚医通代码\yygh_parent\service\service_order\src\main\resources\cert\apiclient_cert.p12
下面书写接口:更新表的信息:
第一个订单表,支付记录,退款表refund_info的信息:
添加获取支付记录接口
退款我们是根据支付记录发起退款的
在PaymentService接口:书写获取支付记录的接口:
实现类实现:
/**
* 获取支付记录
* @param orderId
* @param paymentType
* @return
*/
@Override
public PaymentInfo getPaymentInfo(Long orderId, Integer paymentType) {
QueryWrapper<PaymentInfo> wrapper = new QueryWrapper<>();
wrapper.eq("order_id",orderId);
wrapper.eq("payment_type",paymentType);
PaymentInfo paymentInfo = baseMapper.selectOne(wrapper);
return paymentInfo;
}
退款的实体类:
package com.atguigu.yygh.model.order;
import com.atguigu.yygh.model.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* <p>
* RefundInfo
* </p>
*
* @author qy
*/
@Data
@ApiModel(description = "RefundInfo")
@TableName("refund_info")
public class RefundInfo extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "对外业务编号")
@TableField("out_trade_no")
private String outTradeNo;
@ApiModelProperty(value = "订单编号")
@TableField("order_id")
private Long orderId;
@ApiModelProperty(value = "支付类型(微信 支付宝)")
@TableField("payment_type")
private Integer paymentType;
@ApiModelProperty(value = "交易编号")
@TableField("trade_no")
private String tradeNo;
@ApiModelProperty(value = "退款金额")
@TableField("total_amount")
private BigDecimal totalAmount;
@ApiModelProperty(value = "交易内容")
@TableField("subject")
private String subject;
@ApiModelProperty(value = "退款状态")
@TableField("refund_status")
private Integer refundStatus;
@ApiModelProperty(value = "回调时间")
@TableField("callback_time")
private Date callbackTime;
@ApiModelProperty(value = "回调信息")
@TableField("callback_content")
private String callbackContent;
}
添加退款记录
创建退款表的Mapper:RefundInfoMapper
package com.atguigu.yygh.order.mapper;
import com.atguigu.yygh.model.order.RefundInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface RefundInfoMapper extends BaseMapper<RefundInfo> {
}
package com.atguigu.yygh.order.service;
import com.atguigu.yygh.model.order.PaymentInfo;
import com.atguigu.yygh.model.order.RefundInfo;
import com.baomidou.mybatisplus.extension.service.IService;
public interface RefundInfoService extends IService<RefundInfo> {
/**
* 保存退款记录
* @param paymentInfo
*/
RefundInfo saveRefundInfo(PaymentInfo paymentInfo);
}
实现类:
package com.atguigu.yygh.order.service.impl;
import com.atguigu.yygh.enums.RefundStatusEnum;
import com.atguigu.yygh.model.order.PaymentInfo;
import com.atguigu.yygh.model.order.RefundInfo;
import com.atguigu.yygh.order.mapper.RefundInfoMapper;
import com.atguigu.yygh.order.service.RefundInfoService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.Date;
@Service
public class RefundInfoServiceImpl
extends ServiceImpl<RefundInfoMapper, RefundInfo> implements RefundInfoService {
//保存退款记录
@Override
public RefundInfo saveRefundInfo(PaymentInfo paymentInfo) {
//判断是否有重复数据添加
QueryWrapper<RefundInfo> wrapper = new QueryWrapper<>();
wrapper.eq("order_id",paymentInfo.getOrderId());
wrapper.eq("payment_type",paymentInfo.getPaymentType());
RefundInfo refundInfo = baseMapper.selectOne(wrapper);
if(refundInfo != null) {//有相同数据
return refundInfo;
}
//没有重复记录,添加记录
refundInfo = new RefundInfo();
refundInfo.setCreateTime(new Date());
refundInfo.setOrderId(paymentInfo.getOrderId());
refundInfo.setPaymentType(paymentInfo.getPaymentType());
refundInfo.setOutTradeNo(paymentInfo.getOutTradeNo());
refundInfo.setRefundStatus(RefundStatusEnum.UNREFUND.getStatus());
refundInfo.setSubject(paymentInfo.getSubject());
refundInfo.setTotalAmount(paymentInfo.getTotalAmount());
baseMapper.insert(refundInfo);
return refundInfo;
}
}
文章为作者独立观点,不代表股票交易接口观点