提交修改

This commit is contained in:
quyixiao 2025-11-09 21:10:09 +08:00
parent 5c054bb781
commit fc9c279a49
5 changed files with 61 additions and 18 deletions

View File

@ -0,0 +1,18 @@
package com.heyu.api.alibaba.request.mm.order;
import com.heyu.api.alibaba.request.vv.AppBaseRequest;
import lombok.Data;
@Data
public class AppCloseDTO extends AppBaseRequest {
/***
* 订单id
*/
private Long tradeOrderId;
}

View File

@ -143,6 +143,7 @@ public class JsapiPrepay {
if (!queryString.isEmpty()) {
uri = uri + "?" + queryString;
}
log.info("JsapiPrepay queryOrder uri:{},params:{}",uri,JSON.toJSONString(args));
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
reqBuilder.addHeader("Accept", "application/json");
reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId);
@ -153,7 +154,7 @@ public class JsapiPrepay {
OkHttpClient client = new OkHttpClient.Builder().build();
try (Response httpResponse = client.newCall(httpRequest).execute()) {
String respBody = WXPayUtility.extractBody(httpResponse);
log.info("JsapiPrepay queryOrder respBody = " + respBody);
log.info("JsapiPrepay queryOrder respBody = " + respBody);
if (httpResponse.code() >= 200 && httpResponse.code() < 300) {
// 2XX 成功验证应答签名
WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey,
@ -173,16 +174,17 @@ public class JsapiPrepay {
* 关闭订单
* https://pay.weixin.qq.com/doc/v3/merchant/4012791901
*/
public void close(String tradeOrderId) {
public void close(Long tradeOrderId) {
String HOST = "https://api.mch.weixin.qq.com";
String METHOD = "POST";
String PATH = "/v3/pay/transactions/out-trade-no/{out_trade_no}/close";
CloseOrderRequest request = new CloseOrderRequest();
request.setOutTradeNo(tradeOrderId);
request.setOutTradeNo(tradeOrderId + "");
request.setMchid(mchid);
String uri = PATH;
uri = uri.replace("{out_trade_no}", WXPayUtility.urlEncode(request.outTradeNo));
String reqBody = WXPayUtility.toJson(request);
log.info("JsapiPrepay close reqBody = " + reqBody);
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
reqBuilder.addHeader("Accept", "application/json");
reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId);
@ -196,6 +198,7 @@ public class JsapiPrepay {
OkHttpClient client = new OkHttpClient.Builder().build();
try (Response httpResponse = client.newCall(httpRequest).execute()) {
String respBody = WXPayUtility.extractBody(httpResponse);
log.info("JsapiPrepay close respBody = " + respBody);
if (httpResponse.code() >= 200 && httpResponse.code() < 300) {
// 2XX 成功验证应答签名
WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey,
@ -229,7 +232,6 @@ public class JsapiPrepay {
* UNSETTLED: 仅对出行预付押金退款适用指定从未结算资金出资
*/
request.fundsAccount = ReqFundsAccount.AVAILABLE; // 退款资金来源 若传递此参数则使用对应的资金账户退款
// 金额信息订单退款金额信息
request.amount = new AmountReq();
@ -243,7 +245,7 @@ public class JsapiPrepay {
String HOST = "https://api.mch.weixin.qq.com";
String METHOD = "POST";
String uri = "/v3/refund/domestic/refunds";
log.info("RefundServiceImpl refund params :{}", JSON.toJSONString(request));
log.info("JsapiPrepay refund params :{}", JSON.toJSONString(request));
String reqBody = WXPayUtility.toJson(request);
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
reqBuilder.addHeader("Accept", "application/json");
@ -257,7 +259,7 @@ public class JsapiPrepay {
OkHttpClient client = new OkHttpClient.Builder().build();
try (Response httpResponse = client.newCall(httpRequest).execute()) {
String respBody = WXPayUtility.extractBody(httpResponse);
log.info("order refund respBody:{}", respBody);
log.info("JsapiPrepay order refund respBody:{}", respBody);
if (httpResponse.code() >= 200 && httpResponse.code() < 300) {
// 2XX 成功验证应答签名
WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey,
@ -291,6 +293,7 @@ public class JsapiPrepay {
request.outRefundNo = reverseOrderId + ""; // 商户退款单号 商户申请退款时传入的商户系统内部退款单号
String uri = PATH;
uri = uri.replace("{out_refund_no}", WXPayUtility.urlEncode(request.outRefundNo));
log.info("JsapiPrepay queryRefund params :{},uri:{}", JSON.toJSONString(request),uri);
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
reqBuilder.addHeader("Accept", "application/json");
reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId);
@ -302,6 +305,7 @@ public class JsapiPrepay {
OkHttpClient client = new OkHttpClient.Builder().build();
try (Response httpResponse = client.newCall(httpRequest).execute()) {
String respBody = WXPayUtility.extractBody(httpResponse);
log.info("JsapiPrepay queryRefund respBody:{}", respBody);
if (httpResponse.code() >= 200 && httpResponse.code() < 300) {
// 2XX 成功验证应答签名
WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey,
@ -322,6 +326,7 @@ public class JsapiPrepay {
String METHOD = "POST";
String PATH = "/v3/pay/transactions/jsapi";
String uri = PATH;
log.info("JsapiPrepay doPay params :{}", JSON.toJSONString(request));
String reqBody = WXPayUtility.toJson(request);
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
reqBuilder.addHeader("Accept", "application/json");

View File

@ -4,6 +4,7 @@ package com.heyu.api.controller.vv;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.heyu.api.alibaba.request.mm.enums.OrderStatusEnums;
import com.heyu.api.alibaba.request.mm.order.AppCloseDTO;
import com.heyu.api.alibaba.request.mm.order.AppDeliveredDTO;
import com.heyu.api.alibaba.request.mm.order.VvTradeOrderLineTrackNumberDTO;
import com.heyu.api.alibaba.request.mm.order.resp.*;
@ -91,6 +92,9 @@ public class AppOrderController {
@Value("${eb.config.weixin.pay.privateKeyFilePath}")
private String privateKey;
@Autowired
private JsapiPrepay jsApiPrepay;
/***
* https://api.1024api.com/api-interface/app/order/list
*
@ -399,7 +403,6 @@ public class AppOrderController {
@Describe("删除订单")
@RequestMapping("/delete")
public R add(@RequestBody VvTradeOrderDeleteDTO vvOrderRequest) {
if (StringUtils.isNotEmpty(vvOrderRequest.getTrackNumber())) {
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumberBuyerId(
vvOrderRequest.getTrackNumber(),vvOrderRequest.getBuyerId());
@ -441,12 +444,39 @@ public class AppOrderController {
}
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
tradeOrderLineEntity.setStatus(OrderStatusEnums.delivered.getStatus());
tradeOrderLineEntity.setGmtDelivered(new Date());
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
}
return R.ok();
}
/***
* 订单关闭 /app/order/close
*/
@Describe("订单关闭")
@RequestMapping("/close")
public R close(@RequestBody AppCloseDTO appCloseDTO) {
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(appCloseDTO.getTradeOrderId());
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
if (!OrderStatusEnums.wait_pay.getStatus().equals(tradeOrderLineEntity.getStatus())) {
return R.error("订单状态不是wait_pay不对");
}
}
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
tradeOrderLineEntity.setStatus(OrderStatusEnums.close.getStatus());
tradeOrderLineEntity.setGmtClose(new Date());
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
}
jsApiPrepay.close(appCloseDTO.getTradeOrderId() );
return R.ok();
}

View File

@ -65,9 +65,7 @@ public class AppReverseController {
@Describe("逆向订单创建")
@RequestMapping("/add")
public R add(@RequestBody AppliyReverseRequest appliyReverseRequest) {
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumber(appliyReverseRequest.getTrackNumber());
return reverseOrderService.createReverseOrder(vvTradeOrderLineEntityList, appliyReverseRequest);
}
@ -114,21 +112,13 @@ public class AppReverseController {
@Describe("逆向订单关闭")
@RequestMapping("/close")
public R close(@RequestBody AppliyReverseCloseRequest appliyReverseRequest) {
VvReverseOrderEntity vvReverseOrderEntity = vvReverseOrderDao.selectVvReverseOrderById(appliyReverseRequest.getReverseOrderId());
vvReverseOrderEntity.setStatus(ReverseStatusEnums.close.getStatus());
vvReverseOrderEntity.setGmtClose(new Date());
vvReverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity);
List<VvReverseOrderLineEntity> vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(appliyReverseRequest.getReverseOrderId());
List<Long> tradeOrderLineIds = SanUtils.list2list(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId);
List<VvTradeOrderLineEntity> tradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(tradeOrderLineIds);
for (VvTradeOrderLineEntity tradeOrderLineEntity : tradeOrderLineEntities) {
tradeOrderLineEntity.setReverseStatus(ReverseStatusEnums.close.getStatus());

View File

@ -106,7 +106,7 @@ public class AppWeiXinRefundNotifyController {
String refund_status = reqInfo.get("refund_status");//退款状态
String out_trade_no = reqInfo.get("out_trade_no"); //订单号
String out_refund_no = reqInfo.get("out_refund_no"); //订单号
log.info("AppWeiXinRefundNotifyController refundNotifyUrl out_trade_no:{} refund_status:{} resultStr :{} " ,out_trade_no,refund_status,resultStr);
log.info("AppWeiXinRefundNotifyController refundNotifyUrl out_trade_no:{} ,out_refund_no:{} refund_status:{} resultStr :{} " ,out_trade_no,out_refund_no,refund_status,resultStr);
Map<String, Object> parm = new HashMap<>();
if (!StringUtils.isEmpty(refund_status) && "SUCCESS".equals(refund_status)) {
VvReverseOrderEntity vvReverseOrderEntity = reverseOrderDao.selectVvReverseOrderById(NumberUtil.objToLong(out_refund_no));