Merge branch 'main' into zhangli-test
This commit is contained in:
@ -1,9 +1,7 @@
|
||||
package com.sczx.pay.controller;
|
||||
|
||||
import com.alipay.api.*;
|
||||
|
||||
import com.alipay.api.domain.AlipayCommerceRentOrderCloseModel;
|
||||
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;
|
||||
@ -30,9 +28,9 @@ public class AliPayOrderCloseController {
|
||||
*/
|
||||
@ApiOperation(value = "支付宝订单关闭接口")
|
||||
@PostMapping("/orderClose")
|
||||
public AlipayCommerceRentOrderCloseResponse aliPayOrderClose(@RequestBody AlipayOrderCloseRequest alipayOrderCloseRequest) {
|
||||
log.info("支付宝订单关闭接口请求: {}", alipayOrderCloseRequest);
|
||||
return aliPayOrderCloseService.aliPayOrderClose(alipayOrderCloseRequest);
|
||||
public AlipayCommerceRentOrderCloseResponse aliPayOrderClose(@RequestBody AlipayCommerceRentOrderCloseModel model) {
|
||||
log.info("支付宝订单关闭接口请求: {}", model);
|
||||
return aliPayOrderCloseService.aliPayOrderClose(model);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
package com.sczx.pay.controller;
|
||||
|
||||
|
||||
import com.alipay.api.domain.AlipayCommerceRentOrderFulfillmentFinishModel;
|
||||
import com.alipay.api.response.AlipayCommerceRentOrderFulfillmentApproveResponse;
|
||||
import com.alipay.api.domain.AlipayCommerceRentOrderFulfillmentApproveModel;
|
||||
import com.alipay.api.response.AlipayCommerceRentOrderFulfillmentFinishResponse;
|
||||
import com.sczx.pay.service.AliPayOrderFulfillmentService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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;
|
||||
|
||||
|
||||
|
||||
@Api(value = "支付宝订单履约接口", tags = "支付宝租赁履约接口")
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/alipay/orderFulfillment")
|
||||
public class AliPayOrderFulfillmentController {
|
||||
|
||||
@Autowired
|
||||
private AliPayOrderFulfillmentService aliPayOrderFulfillmentService;
|
||||
|
||||
/**
|
||||
* 支付宝订单履约审核接口
|
||||
*/
|
||||
@ApiOperation(value = "支付宝订单履约审核接口")
|
||||
@PostMapping("/approve")
|
||||
public AlipayCommerceRentOrderFulfillmentApproveResponse aliPayOrderFulfillmentApprove(@RequestBody AlipayCommerceRentOrderFulfillmentApproveModel model) {
|
||||
log.info("支付宝订单履约审核接口请求: {}", model);
|
||||
return aliPayOrderFulfillmentService.aliPayOrderFulfillmentApprove(model);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 支付宝订单履约完成接口
|
||||
*/
|
||||
@ApiOperation(value = "支付宝订单履约完成接口")
|
||||
@PostMapping("/finish")
|
||||
public AlipayCommerceRentOrderFulfillmentFinishResponse aliPayOrderFulfillmentFinish(@RequestBody AlipayCommerceRentOrderFulfillmentFinishModel model) {
|
||||
log.info("支付宝订单履约审核接口请求: {}", model);
|
||||
return aliPayOrderFulfillmentService.aliPayOrderFulfillmentFinish(model);
|
||||
}
|
||||
}
|
||||
@ -1,15 +0,0 @@
|
||||
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; // 买家支付宝用户唯一标识
|
||||
|
||||
}
|
||||
@ -1,15 +1,15 @@
|
||||
package com.sczx.pay.service;
|
||||
|
||||
import com.alipay.api.domain.AlipayCommerceRentOrderCloseModel;
|
||||
import com.alipay.api.response.AlipayCommerceRentOrderCloseResponse;
|
||||
import com.sczx.pay.dto.AlipayOrderCloseRequest;
|
||||
|
||||
public interface AliPayOrderCloseService {
|
||||
|
||||
/**
|
||||
* 支付宝订单关闭接口
|
||||
* @param alipayOrderCloseRequest
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
public AlipayCommerceRentOrderCloseResponse aliPayOrderClose(AlipayOrderCloseRequest alipayOrderCloseRequest);
|
||||
public AlipayCommerceRentOrderCloseResponse aliPayOrderClose(AlipayCommerceRentOrderCloseModel model);
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
package com.sczx.pay.service;
|
||||
|
||||
import com.alipay.api.domain.AlipayCommerceRentOrderFulfillmentApproveModel;
|
||||
import com.alipay.api.domain.AlipayCommerceRentOrderFulfillmentFinishModel;
|
||||
import com.alipay.api.response.AlipayCommerceRentOrderFulfillmentApproveResponse;
|
||||
import com.alipay.api.response.AlipayCommerceRentOrderFulfillmentFinishResponse;
|
||||
|
||||
public interface AliPayOrderFulfillmentService {
|
||||
|
||||
/**
|
||||
* 支付宝订单履约审核
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
public AlipayCommerceRentOrderFulfillmentApproveResponse aliPayOrderFulfillmentApprove(AlipayCommerceRentOrderFulfillmentApproveModel model);
|
||||
|
||||
|
||||
/**
|
||||
* 支付宝订单履约完成
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
public AlipayCommerceRentOrderFulfillmentFinishResponse aliPayOrderFulfillmentFinish(AlipayCommerceRentOrderFulfillmentFinishModel model);
|
||||
|
||||
}
|
||||
@ -412,11 +412,6 @@ public class WechatPayService {
|
||||
|
||||
if(OrderStatus.equals("WAIT_PAY")){
|
||||
orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"WAIT_PICK");
|
||||
String subOrderId = orderPayMapper.getSubOrderIdByTradeNo(outTradeNo).toString();
|
||||
if (!subOrderId.isEmpty()) {
|
||||
String result = sendSubOrderId(subOrderId);
|
||||
logger.info("调用subOrder接口结果: {}", result);
|
||||
}
|
||||
}else if (OrderStatus.equals("RERENT_WAIT_PAY")){
|
||||
OrderSub orderSub = orderPayMapper.getSubOrderByTradeNo(outTradeNo);
|
||||
orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),orderSub.getReturnTime(),0,orderMain.getOrderAmount().add(orderSub.getAmount()),"RENT_ING");
|
||||
@ -565,49 +560,4 @@ public class WechatPayService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送subOrderId到指定接口
|
||||
* @param subOrderId 子订单ID
|
||||
* @return 响应结果
|
||||
*/
|
||||
public String sendSubOrderId(String subOrderId) {
|
||||
try {
|
||||
// 构造完整的URL,将subOrderId作为参数传递
|
||||
String url = "http://115.190.8.52:8016/send/subOrder/" + subOrderId;
|
||||
|
||||
// 创建URL对象
|
||||
java.net.URL obj = new java.net.URL(url);
|
||||
java.net.HttpURLConnection connection = (java.net.HttpURLConnection) obj.openConnection();
|
||||
|
||||
// 设置请求方法为GET
|
||||
connection.setRequestMethod("GET");
|
||||
|
||||
// 设置连接超时和读取超时
|
||||
connection.setConnectTimeout(5000);
|
||||
connection.setReadTimeout(5000);
|
||||
|
||||
// 获取响应码
|
||||
int responseCode = connection.getResponseCode();
|
||||
logger.info("发送subOrderId请求,URL: {}, 响应码: {}", url, responseCode);
|
||||
|
||||
// 读取响应内容
|
||||
java.io.BufferedReader in = new java.io.BufferedReader(
|
||||
new java.io.InputStreamReader(connection.getInputStream())
|
||||
);
|
||||
String inputLine;
|
||||
StringBuilder response = new StringBuilder();
|
||||
|
||||
while ((inputLine = in.readLine()) != null) {
|
||||
response.append(inputLine);
|
||||
}
|
||||
in.close();
|
||||
|
||||
return response.toString();
|
||||
} catch (Exception e) {
|
||||
logger.error("发送subOrderId到接口失败,subOrderId: {}", subOrderId, e);
|
||||
return "ERROR: " + e.getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
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.OrderMain;
|
||||
import com.sczx.pay.entity.PayStatus;
|
||||
import com.sczx.pay.entity.ReasonCodes;
|
||||
import com.sczx.pay.mapper.OrderPayMapper;
|
||||
@ -12,7 +11,6 @@ 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
|
||||
@ -27,25 +25,15 @@ public class AliPayOrderCloseServiceImpl implements AliPayOrderCloseService {
|
||||
/**
|
||||
* 支付宝订单关闭接口
|
||||
*
|
||||
* @param alipayOrderCloseRequest
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public AlipayCommerceRentOrderCloseResponse aliPayOrderClose(AlipayOrderCloseRequest alipayOrderCloseRequest) {
|
||||
public AlipayCommerceRentOrderCloseResponse aliPayOrderClose(AlipayCommerceRentOrderCloseModel model) {
|
||||
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());
|
||||
@ -62,10 +50,14 @@ public class AliPayOrderCloseServiceImpl implements AliPayOrderCloseService {
|
||||
if (response.isSuccess()) {
|
||||
log.info("支付宝订单关闭接口调用成功,开始更新订单状态");
|
||||
/** 更新订单状态 */
|
||||
orderPayMapper.updateOrderStatus(alipayOrderCloseRequest.getOutOrderId(), PayStatus.CLOSED.getCode());
|
||||
/** 履约审核通过,更新订单状态为租赁中 */
|
||||
OrderMain orderMain = orderPayMapper.getOrderStatusByOrderNo(model.getOutOrderId());
|
||||
orderPayMapper.updateOrderStatus(orderMain.getOrderNo(), PayStatus.CLOSED.getCode());
|
||||
}else{
|
||||
log.error("支付宝订单关闭接口调用失败,OutOrderId: {}", model.getOutOrderId());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("支付宝关闭异常,订单号: {}", alipayOrderCloseRequest.getOutOrderId(), e);
|
||||
log.error("支付宝关闭异常,OutOrderId: {}", model.getOutOrderId(), e);
|
||||
response.setCode("FAIL");
|
||||
response.setMsg("关闭订单失败异常: " + e.getMessage());
|
||||
}
|
||||
|
||||
@ -0,0 +1,82 @@
|
||||
package com.sczx.pay.service.impl;
|
||||
|
||||
import com.alipay.api.domain.AlipayCommerceRentOrderFulfillmentApproveModel;
|
||||
import com.alipay.api.domain.AlipayCommerceRentOrderFulfillmentFinishModel;
|
||||
import com.alipay.api.request.AlipayCommerceRentOrderFulfillmentApproveRequest;
|
||||
import com.alipay.api.request.AlipayCommerceRentOrderFulfillmentFinishRequest;
|
||||
import com.alipay.api.response.AlipayCommerceRentOrderFulfillmentApproveResponse;
|
||||
import com.alipay.api.response.AlipayCommerceRentOrderFulfillmentFinishResponse;
|
||||
import com.sczx.pay.entity.OrderMain;
|
||||
import com.sczx.pay.entity.OrderSub;
|
||||
import com.sczx.pay.entity.PayStatus;
|
||||
import com.sczx.pay.mapper.OrderPayMapper;
|
||||
import com.sczx.pay.service.AliPayOrderFulfillmentService;
|
||||
import com.sczx.pay.utils.AlipaySdkUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class AliPayOrderFulfillmentServiceImpl implements AliPayOrderFulfillmentService {
|
||||
|
||||
@Autowired
|
||||
private AlipaySdkUtil alipaySdkUtil;
|
||||
@Autowired
|
||||
private OrderPayMapper orderPayMapper;
|
||||
|
||||
public AlipayCommerceRentOrderFulfillmentApproveResponse aliPayOrderFulfillmentApprove(AlipayCommerceRentOrderFulfillmentApproveModel model) {
|
||||
AlipayCommerceRentOrderFulfillmentApproveResponse response = new AlipayCommerceRentOrderFulfillmentApproveResponse();
|
||||
try{
|
||||
// 构造请求参数以调用接口
|
||||
AlipayCommerceRentOrderFulfillmentApproveRequest request = new AlipayCommerceRentOrderFulfillmentApproveRequest();
|
||||
|
||||
request.setBizModel(model);
|
||||
|
||||
response = alipaySdkUtil.execute(request);
|
||||
log.info("支付宝订单履约审核接口响应 : {}",response.getBody());
|
||||
if (response.isSuccess()) {
|
||||
log.info("支付宝订单履约审核接口调用成功,更新订单状态为租赁中,订单号: {}", model.getOutOrderId());
|
||||
/** 履约审核通过,更新订单状态为租赁中 */
|
||||
OrderMain orderMain = orderPayMapper.getOrderStatusByOrderNo(model.getOutOrderId());
|
||||
orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"RENT_ING");
|
||||
} else {
|
||||
log.error("支付宝订单履约审核接口调用失败,OutOrderId: {}", model.getOutOrderId());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("支付宝订单履约审核异常,OutOrderId: {}", model.getOutOrderId(), e);
|
||||
response.setCode("FAIL");
|
||||
response.setMsg("支付宝订单履约审核失败异常: " + e.getMessage());
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AlipayCommerceRentOrderFulfillmentFinishResponse aliPayOrderFulfillmentFinish(AlipayCommerceRentOrderFulfillmentFinishModel model) {
|
||||
AlipayCommerceRentOrderFulfillmentFinishResponse response = new AlipayCommerceRentOrderFulfillmentFinishResponse();
|
||||
try{
|
||||
// 构造请求参数以调用接口
|
||||
AlipayCommerceRentOrderFulfillmentFinishRequest request = new AlipayCommerceRentOrderFulfillmentFinishRequest();
|
||||
|
||||
request.setBizModel(model);
|
||||
|
||||
response = alipaySdkUtil.execute(request);
|
||||
log.info("支付宝订单履约完成接口响应 : {}",response.getBody());
|
||||
if (response.isSuccess()) {
|
||||
log.info("支付宝订单履约完成接口调用成功,更新订单状态为己结束-还车,订单号: {}", model.getOutOrderId());
|
||||
/** 支付宝订单履约完成通过,更新订单状态为己结束-还车 */
|
||||
//更新主订单状态
|
||||
OrderMain orderMain = orderPayMapper.getOrderStatusByOrderNo(model.getOutOrderId());
|
||||
orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"AUTO_END");
|
||||
} else {
|
||||
log.error("支付宝订单履约完成接口调用失败,OutOrderId: {}", model.getOutOrderId());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("支付宝订单履约完成异常,OutOrderId: {}", model.getOutOrderId(), e);
|
||||
response.setCode("FAIL");
|
||||
response.setMsg("支付宝订单履约完成异常: " + e.getMessage());
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user