订单关闭接口
This commit is contained in:
@ -0,0 +1,44 @@
|
||||
package com.sczx.pay.controller;
|
||||
|
||||
import com.alipay.api.*;
|
||||
|
||||
import com.alipay.api.response.AlipayCommerceRentOrderCloseResponse;
|
||||
import com.sczx.pay.dto.AlipayOrderCloseRequest;
|
||||
import com.sczx.pay.service.AliPayOrderCloseService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
|
||||
@Api(value = "支付宝租赁订单关闭接口", tags = "支付宝租赁订单关闭接口")
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/alipay/orderClose")
|
||||
public class AliPayOrderCloseController {
|
||||
private static final Logger logger = LoggerFactory.getLogger(AliPayOrderCloseController.class);
|
||||
|
||||
@Autowired
|
||||
private AliPayOrderCloseService aliPayOrderCloseService;
|
||||
|
||||
/**
|
||||
* 支付宝订单关闭接口
|
||||
*/
|
||||
@ApiOperation(value = "支付宝订单关闭接口")
|
||||
@PostMapping("/orderClose")
|
||||
public AlipayCommerceRentOrderCloseResponse aliPayOrderClose(@RequestBody AlipayOrderCloseRequest alipayOrderCloseRequest) {
|
||||
log.info("支付宝订单关闭接口请求: {}", alipayOrderCloseRequest);
|
||||
return aliPayOrderCloseService.aliPayOrderClose(alipayOrderCloseRequest);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
15
src/main/java/com/sczx/pay/dto/AlipayOrderCloseRequest.java
Normal file
15
src/main/java/com/sczx/pay/dto/AlipayOrderCloseRequest.java
Normal file
@ -0,0 +1,15 @@
|
||||
package com.sczx.pay.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AlipayOrderCloseRequest {
|
||||
|
||||
private String reasonCode; // 关单原因编码
|
||||
private String reasonDesc; // 关单原因说明
|
||||
private String orderId; // 交易组件订单号 orderId 和 outOrderId参数 二选一 传入
|
||||
private String outOrderId; // 商户订单号
|
||||
private String buyerId; // 买家ID buyerId 和 buyerOpenId 参数 二选一 传入
|
||||
private String buyerOpenId; // 买家支付宝用户唯一标识
|
||||
|
||||
}
|
||||
165
src/main/java/com/sczx/pay/entity/ReasonCodes.java
Normal file
165
src/main/java/com/sczx/pay/entity/ReasonCodes.java
Normal file
@ -0,0 +1,165 @@
|
||||
package com.sczx.pay.entity;
|
||||
|
||||
public enum ReasonCodes {
|
||||
|
||||
/**
|
||||
* 用户租赁计划有变
|
||||
*/
|
||||
USER_LEASE_PLAN_CHANGED("3103", "用户租赁计划有变"),
|
||||
|
||||
/**
|
||||
* 用户订单信息错误(租期、地址、商品信息等)
|
||||
*/
|
||||
USER_ORDER_INFO_ERROR("3104", "用户订单信息错误(租期、地址、商品信息等)"),
|
||||
|
||||
/**
|
||||
* 用户测试或误操作
|
||||
*/
|
||||
USER_TEST_OR_MISOPERATION("3105", "用户测试或误操作"),
|
||||
|
||||
/**
|
||||
* 用户重复下单
|
||||
*/
|
||||
USER_DUPLICATE_ORDER("3106", "用户重复下单"),
|
||||
|
||||
/**
|
||||
* 用户不接电话
|
||||
*/
|
||||
USER_NOT_ANSWERING_CALLS("3107", "用户不接电话"),
|
||||
|
||||
/**
|
||||
* 租金扣款失败
|
||||
*/
|
||||
RENT_DEDUCTION_FAILED("3108", "租金扣款失败"),
|
||||
|
||||
/**
|
||||
* 用户不愿意预付租金
|
||||
*/
|
||||
USER_REFUSES_PREPAY_RENT("3109", "用户不愿意预付租金"),
|
||||
|
||||
/**
|
||||
* 用户不愿意付押金
|
||||
*/
|
||||
USER_REFUSES_DEPOSIT("3110", "用户不愿意付押金"),
|
||||
|
||||
/**
|
||||
* 用户对价格不认可
|
||||
*/
|
||||
USER_PRICE_DISAGREEMENT("3111", "用户对价格不认可"),
|
||||
|
||||
/**
|
||||
* 用户担心非正品
|
||||
*/
|
||||
USER_WORRIED_NOT_AUTHENTIC("3132", "用户担心非正品"),
|
||||
|
||||
/**
|
||||
* 用户担心商品损坏
|
||||
*/
|
||||
USER_WORRIED_PRODUCT_DAMAGE("3133", "用户担心商品损坏"),
|
||||
|
||||
/**
|
||||
* 用户不要监管机
|
||||
*/
|
||||
USER_REFUSES_SUPERVISED_DEVICE("3134", "用户不要监管机"),
|
||||
|
||||
/**
|
||||
* 收货地区不支持发货
|
||||
*/
|
||||
DELIVERY_AREA_NOT_SUPPORTED("3135", "收货地区不支持发货"),
|
||||
|
||||
/**
|
||||
* 已购买同款商品
|
||||
*/
|
||||
ALREADY_PURCHASED_SAME_PRODUCT("3136", "已购买同款商品"),
|
||||
|
||||
/**
|
||||
* 用户电话空号/关机
|
||||
*/
|
||||
USER_PHONE_UNAVAILABLE("3137", "用户电话空号/关机"),
|
||||
|
||||
/**
|
||||
* 用户提供虚假信息
|
||||
*/
|
||||
USER_PROVIDED_FALSE_INFO("3112", "用户提供虚假信息"),
|
||||
|
||||
/**
|
||||
* 用户不配合补充审核资料
|
||||
*/
|
||||
USER_NOT_COOPERATING_AUDIT("3113", "用户不配合补充审核资料"),
|
||||
|
||||
/**
|
||||
* 用户资质问题
|
||||
*/
|
||||
USER_QUALIFICATION_ISSUES("3114", "用户资质问题"),
|
||||
|
||||
/**
|
||||
* 智安盾高风险用户
|
||||
*/
|
||||
HIGH_RISK_USER("3115", "智安盾高风险用户"),
|
||||
|
||||
/**
|
||||
* 审核时间过长
|
||||
*/
|
||||
AUDIT_TIME_TOO_LONG("3138", "审核时间过长"),
|
||||
|
||||
/**
|
||||
* 商家私下要我隐私资料
|
||||
*/
|
||||
MERCHANT_ASKING_PRIVATE_INFO("3139", "商家私下要我隐私资料"),
|
||||
|
||||
/**
|
||||
* 发货时间来不及
|
||||
*/
|
||||
DELIVERY_TIME_INSUFFICIENT("3116", "发货时间来不及"),
|
||||
|
||||
/**
|
||||
* 商品缺货
|
||||
*/
|
||||
PRODUCT_OUT_OF_STOCK("3117", "商品缺货"),
|
||||
|
||||
/**
|
||||
* 无物流信息
|
||||
*/
|
||||
NO_LOGISTICS_INFO("3140", "无物流信息"),
|
||||
|
||||
/**
|
||||
* 服务态度差
|
||||
*/
|
||||
POOR_SERVICE_ATTITUDE("3141", "服务态度差"),
|
||||
|
||||
/**
|
||||
* 私下收不合理费用
|
||||
*/
|
||||
UNREASONABLE_PRIVATE_CHARGES("3142", "私下收不合理费用"),
|
||||
|
||||
/**
|
||||
* 联系不上商家
|
||||
*/
|
||||
CANNOT_CONTACT_MERCHANT("3143", "联系不上商家"),
|
||||
|
||||
/**
|
||||
* 让我其他方式交易
|
||||
*/
|
||||
ASKED_FOR_OTHER_TRANSACTION_METHOD("3144", "让我其他方式交易");
|
||||
|
||||
private final String code;
|
||||
private final String description;
|
||||
|
||||
ReasonCodes(String code, String description) {
|
||||
this.code = code;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return code;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package com.sczx.pay.service;
|
||||
|
||||
import com.alipay.api.response.AlipayCommerceRentOrderCloseResponse;
|
||||
import com.sczx.pay.dto.AlipayOrderCloseRequest;
|
||||
|
||||
public interface AliPayOrderCloseService {
|
||||
|
||||
/**
|
||||
* 支付宝订单关闭接口
|
||||
* @param alipayOrderCloseRequest
|
||||
* @return
|
||||
*/
|
||||
public AlipayCommerceRentOrderCloseResponse aliPayOrderClose(AlipayOrderCloseRequest alipayOrderCloseRequest);
|
||||
|
||||
}
|
||||
@ -0,0 +1,74 @@
|
||||
package com.sczx.pay.service.impl;
|
||||
|
||||
import com.alipay.api.AlipayResponse;
|
||||
import com.alipay.api.domain.AlipayCommerceRentOrderCloseModel;
|
||||
import com.alipay.api.request.AlipayCommerceRentOrderCloseRequest;
|
||||
import com.alipay.api.response.AlipayCommerceRentOrderCloseResponse;
|
||||
import com.sczx.pay.dto.AlipayOrderCloseRequest;
|
||||
import com.sczx.pay.entity.PayStatus;
|
||||
import com.sczx.pay.entity.ReasonCodes;
|
||||
import com.sczx.pay.mapper.OrderPayMapper;
|
||||
import com.sczx.pay.service.AliPayOrderCloseService;
|
||||
import com.sczx.pay.utils.AlipaySdkUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class AliPayOrderCloseServiceImpl implements AliPayOrderCloseService {
|
||||
|
||||
@Autowired
|
||||
private AlipaySdkUtil alipaySdkUtil;
|
||||
@Autowired
|
||||
private OrderPayMapper orderPayMapper;
|
||||
|
||||
/**
|
||||
* 支付宝订单关闭接口
|
||||
*
|
||||
* @param alipayOrderCloseRequest
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public AlipayCommerceRentOrderCloseResponse aliPayOrderClose(AlipayOrderCloseRequest alipayOrderCloseRequest) {
|
||||
AlipayCommerceRentOrderCloseResponse response = new AlipayCommerceRentOrderCloseResponse();
|
||||
try{
|
||||
// 构造请求参数以调用接口
|
||||
AlipayCommerceRentOrderCloseRequest request = new AlipayCommerceRentOrderCloseRequest();
|
||||
AlipayCommerceRentOrderCloseModel model = new AlipayCommerceRentOrderCloseModel();
|
||||
|
||||
// 设置交易组件订单号
|
||||
model.setOrderId(alipayOrderCloseRequest.getOrderId());
|
||||
|
||||
// 设置商户订单号
|
||||
model.setOutOrderId(alipayOrderCloseRequest.getOutOrderId());
|
||||
|
||||
// 设置买家支付宝用户唯一标识
|
||||
model.setBuyerOpenId(alipayOrderCloseRequest.getBuyerOpenId());
|
||||
|
||||
// 设置关单原因编码
|
||||
model.setReasonCode(ReasonCodes.USER_QUALIFICATION_ISSUES.getCode());
|
||||
|
||||
// 设置关单原因说明
|
||||
model.setReasonDesc(ReasonCodes.USER_QUALIFICATION_ISSUES.getDescription());
|
||||
|
||||
request.setBizModel(model);
|
||||
// 第三方代调用模式下请设置app_auth_token
|
||||
// request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
|
||||
|
||||
response = alipaySdkUtil.execute(request);
|
||||
log.info("支付宝订单关闭接口响应 : {}",response.getBody());
|
||||
if (response.isSuccess()) {
|
||||
log.info("支付宝订单关闭接口调用成功,开始更新订单状态");
|
||||
/** 更新订单状态 */
|
||||
orderPayMapper.updateOrderStatus(alipayOrderCloseRequest.getOutOrderId(), PayStatus.CLOSED.getCode());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("支付宝关闭异常,订单号: {}", alipayOrderCloseRequest.getOutOrderId(), e);
|
||||
response.setCode("FAIL");
|
||||
response.setMsg("关闭订单失败异常: " + e.getMessage());
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user