提交修改
This commit is contained in:
parent
5c054bb781
commit
fc9c279a49
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -143,6 +143,7 @@ public class JsapiPrepay {
|
|||||||
if (!queryString.isEmpty()) {
|
if (!queryString.isEmpty()) {
|
||||||
uri = uri + "?" + queryString;
|
uri = uri + "?" + queryString;
|
||||||
}
|
}
|
||||||
|
log.info("JsapiPrepay queryOrder uri:{},params:{}",uri,JSON.toJSONString(args));
|
||||||
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
|
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
|
||||||
reqBuilder.addHeader("Accept", "application/json");
|
reqBuilder.addHeader("Accept", "application/json");
|
||||||
reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId);
|
reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId);
|
||||||
@ -153,7 +154,7 @@ public class JsapiPrepay {
|
|||||||
OkHttpClient client = new OkHttpClient.Builder().build();
|
OkHttpClient client = new OkHttpClient.Builder().build();
|
||||||
try (Response httpResponse = client.newCall(httpRequest).execute()) {
|
try (Response httpResponse = client.newCall(httpRequest).execute()) {
|
||||||
String respBody = WXPayUtility.extractBody(httpResponse);
|
String respBody = WXPayUtility.extractBody(httpResponse);
|
||||||
log.info("JsapiPrepay queryOrder respBody = " + respBody);
|
log.info("JsapiPrepay queryOrder respBody = " + respBody);
|
||||||
if (httpResponse.code() >= 200 && httpResponse.code() < 300) {
|
if (httpResponse.code() >= 200 && httpResponse.code() < 300) {
|
||||||
// 2XX 成功,验证应答签名
|
// 2XX 成功,验证应答签名
|
||||||
WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey,
|
WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey,
|
||||||
@ -173,16 +174,17 @@ public class JsapiPrepay {
|
|||||||
* 关闭订单
|
* 关闭订单
|
||||||
* https://pay.weixin.qq.com/doc/v3/merchant/4012791901
|
* 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 HOST = "https://api.mch.weixin.qq.com";
|
||||||
String METHOD = "POST";
|
String METHOD = "POST";
|
||||||
String PATH = "/v3/pay/transactions/out-trade-no/{out_trade_no}/close";
|
String PATH = "/v3/pay/transactions/out-trade-no/{out_trade_no}/close";
|
||||||
CloseOrderRequest request = new CloseOrderRequest();
|
CloseOrderRequest request = new CloseOrderRequest();
|
||||||
request.setOutTradeNo(tradeOrderId);
|
request.setOutTradeNo(tradeOrderId + "");
|
||||||
request.setMchid(mchid);
|
request.setMchid(mchid);
|
||||||
String uri = PATH;
|
String uri = PATH;
|
||||||
uri = uri.replace("{out_trade_no}", WXPayUtility.urlEncode(request.outTradeNo));
|
uri = uri.replace("{out_trade_no}", WXPayUtility.urlEncode(request.outTradeNo));
|
||||||
String reqBody = WXPayUtility.toJson(request);
|
String reqBody = WXPayUtility.toJson(request);
|
||||||
|
log.info("JsapiPrepay close reqBody = " + reqBody);
|
||||||
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
|
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
|
||||||
reqBuilder.addHeader("Accept", "application/json");
|
reqBuilder.addHeader("Accept", "application/json");
|
||||||
reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId);
|
reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId);
|
||||||
@ -196,6 +198,7 @@ public class JsapiPrepay {
|
|||||||
OkHttpClient client = new OkHttpClient.Builder().build();
|
OkHttpClient client = new OkHttpClient.Builder().build();
|
||||||
try (Response httpResponse = client.newCall(httpRequest).execute()) {
|
try (Response httpResponse = client.newCall(httpRequest).execute()) {
|
||||||
String respBody = WXPayUtility.extractBody(httpResponse);
|
String respBody = WXPayUtility.extractBody(httpResponse);
|
||||||
|
log.info("JsapiPrepay close respBody = " + respBody);
|
||||||
if (httpResponse.code() >= 200 && httpResponse.code() < 300) {
|
if (httpResponse.code() >= 200 && httpResponse.code() < 300) {
|
||||||
// 2XX 成功,验证应答签名
|
// 2XX 成功,验证应答签名
|
||||||
WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey,
|
WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey,
|
||||||
@ -229,7 +232,6 @@ public class JsapiPrepay {
|
|||||||
* UNSETTLED: 仅对出行预付押金退款适用,指定从未结算资金出资。
|
* UNSETTLED: 仅对出行预付押金退款适用,指定从未结算资金出资。
|
||||||
*/
|
*/
|
||||||
request.fundsAccount = ReqFundsAccount.AVAILABLE; // 【退款资金来源】 若传递此参数则使用对应的资金账户退款。
|
request.fundsAccount = ReqFundsAccount.AVAILABLE; // 【退款资金来源】 若传递此参数则使用对应的资金账户退款。
|
||||||
|
|
||||||
// 【金额信息】订单退款金额信息
|
// 【金额信息】订单退款金额信息
|
||||||
request.amount = new AmountReq();
|
request.amount = new AmountReq();
|
||||||
|
|
||||||
@ -243,7 +245,7 @@ public class JsapiPrepay {
|
|||||||
String HOST = "https://api.mch.weixin.qq.com";
|
String HOST = "https://api.mch.weixin.qq.com";
|
||||||
String METHOD = "POST";
|
String METHOD = "POST";
|
||||||
String uri = "/v3/refund/domestic/refunds";
|
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);
|
String reqBody = WXPayUtility.toJson(request);
|
||||||
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
|
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
|
||||||
reqBuilder.addHeader("Accept", "application/json");
|
reqBuilder.addHeader("Accept", "application/json");
|
||||||
@ -257,7 +259,7 @@ public class JsapiPrepay {
|
|||||||
OkHttpClient client = new OkHttpClient.Builder().build();
|
OkHttpClient client = new OkHttpClient.Builder().build();
|
||||||
try (Response httpResponse = client.newCall(httpRequest).execute()) {
|
try (Response httpResponse = client.newCall(httpRequest).execute()) {
|
||||||
String respBody = WXPayUtility.extractBody(httpResponse);
|
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) {
|
if (httpResponse.code() >= 200 && httpResponse.code() < 300) {
|
||||||
// 2XX 成功,验证应答签名
|
// 2XX 成功,验证应答签名
|
||||||
WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey,
|
WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey,
|
||||||
@ -291,6 +293,7 @@ public class JsapiPrepay {
|
|||||||
request.outRefundNo = reverseOrderId + ""; // 【商户退款单号】 商户申请退款时传入的商户系统内部退款单号。
|
request.outRefundNo = reverseOrderId + ""; // 【商户退款单号】 商户申请退款时传入的商户系统内部退款单号。
|
||||||
String uri = PATH;
|
String uri = PATH;
|
||||||
uri = uri.replace("{out_refund_no}", WXPayUtility.urlEncode(request.outRefundNo));
|
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);
|
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
|
||||||
reqBuilder.addHeader("Accept", "application/json");
|
reqBuilder.addHeader("Accept", "application/json");
|
||||||
reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId);
|
reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId);
|
||||||
@ -302,6 +305,7 @@ public class JsapiPrepay {
|
|||||||
OkHttpClient client = new OkHttpClient.Builder().build();
|
OkHttpClient client = new OkHttpClient.Builder().build();
|
||||||
try (Response httpResponse = client.newCall(httpRequest).execute()) {
|
try (Response httpResponse = client.newCall(httpRequest).execute()) {
|
||||||
String respBody = WXPayUtility.extractBody(httpResponse);
|
String respBody = WXPayUtility.extractBody(httpResponse);
|
||||||
|
log.info("JsapiPrepay queryRefund respBody:{}", respBody);
|
||||||
if (httpResponse.code() >= 200 && httpResponse.code() < 300) {
|
if (httpResponse.code() >= 200 && httpResponse.code() < 300) {
|
||||||
// 2XX 成功,验证应答签名
|
// 2XX 成功,验证应答签名
|
||||||
WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey,
|
WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey,
|
||||||
@ -322,6 +326,7 @@ public class JsapiPrepay {
|
|||||||
String METHOD = "POST";
|
String METHOD = "POST";
|
||||||
String PATH = "/v3/pay/transactions/jsapi";
|
String PATH = "/v3/pay/transactions/jsapi";
|
||||||
String uri = PATH;
|
String uri = PATH;
|
||||||
|
log.info("JsapiPrepay doPay params :{}", JSON.toJSONString(request));
|
||||||
String reqBody = WXPayUtility.toJson(request);
|
String reqBody = WXPayUtility.toJson(request);
|
||||||
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
|
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
|
||||||
reqBuilder.addHeader("Accept", "application/json");
|
reqBuilder.addHeader("Accept", "application/json");
|
||||||
|
|||||||
@ -4,6 +4,7 @@ package com.heyu.api.controller.vv;
|
|||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.heyu.api.alibaba.request.mm.enums.OrderStatusEnums;
|
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.AppDeliveredDTO;
|
||||||
import com.heyu.api.alibaba.request.mm.order.VvTradeOrderLineTrackNumberDTO;
|
import com.heyu.api.alibaba.request.mm.order.VvTradeOrderLineTrackNumberDTO;
|
||||||
import com.heyu.api.alibaba.request.mm.order.resp.*;
|
import com.heyu.api.alibaba.request.mm.order.resp.*;
|
||||||
@ -91,6 +92,9 @@ public class AppOrderController {
|
|||||||
@Value("${eb.config.weixin.pay.privateKeyFilePath}")
|
@Value("${eb.config.weixin.pay.privateKeyFilePath}")
|
||||||
private String privateKey;
|
private String privateKey;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private JsapiPrepay jsApiPrepay;
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* https://api.1024api.com/api-interface/app/order/list
|
* https://api.1024api.com/api-interface/app/order/list
|
||||||
*
|
*
|
||||||
@ -399,7 +403,6 @@ public class AppOrderController {
|
|||||||
@Describe("删除订单")
|
@Describe("删除订单")
|
||||||
@RequestMapping("/delete")
|
@RequestMapping("/delete")
|
||||||
public R add(@RequestBody VvTradeOrderDeleteDTO vvOrderRequest) {
|
public R add(@RequestBody VvTradeOrderDeleteDTO vvOrderRequest) {
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(vvOrderRequest.getTrackNumber())) {
|
if (StringUtils.isNotEmpty(vvOrderRequest.getTrackNumber())) {
|
||||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumberBuyerId(
|
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumberBuyerId(
|
||||||
vvOrderRequest.getTrackNumber(),vvOrderRequest.getBuyerId());
|
vvOrderRequest.getTrackNumber(),vvOrderRequest.getBuyerId());
|
||||||
@ -441,12 +444,39 @@ public class AppOrderController {
|
|||||||
}
|
}
|
||||||
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
|
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
|
||||||
tradeOrderLineEntity.setStatus(OrderStatusEnums.delivered.getStatus());
|
tradeOrderLineEntity.setStatus(OrderStatusEnums.delivered.getStatus());
|
||||||
|
tradeOrderLineEntity.setGmtDelivered(new Date());
|
||||||
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
|
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
|
||||||
}
|
}
|
||||||
return R.ok();
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -65,9 +65,7 @@ public class AppReverseController {
|
|||||||
@Describe("逆向订单创建")
|
@Describe("逆向订单创建")
|
||||||
@RequestMapping("/add")
|
@RequestMapping("/add")
|
||||||
public R add(@RequestBody AppliyReverseRequest appliyReverseRequest) {
|
public R add(@RequestBody AppliyReverseRequest appliyReverseRequest) {
|
||||||
|
|
||||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumber(appliyReverseRequest.getTrackNumber());
|
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumber(appliyReverseRequest.getTrackNumber());
|
||||||
|
|
||||||
return reverseOrderService.createReverseOrder(vvTradeOrderLineEntityList, appliyReverseRequest);
|
return reverseOrderService.createReverseOrder(vvTradeOrderLineEntityList, appliyReverseRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -114,21 +112,13 @@ public class AppReverseController {
|
|||||||
@Describe("逆向订单关闭")
|
@Describe("逆向订单关闭")
|
||||||
@RequestMapping("/close")
|
@RequestMapping("/close")
|
||||||
public R close(@RequestBody AppliyReverseCloseRequest appliyReverseRequest) {
|
public R close(@RequestBody AppliyReverseCloseRequest appliyReverseRequest) {
|
||||||
|
|
||||||
VvReverseOrderEntity vvReverseOrderEntity = vvReverseOrderDao.selectVvReverseOrderById(appliyReverseRequest.getReverseOrderId());
|
VvReverseOrderEntity vvReverseOrderEntity = vvReverseOrderDao.selectVvReverseOrderById(appliyReverseRequest.getReverseOrderId());
|
||||||
|
|
||||||
vvReverseOrderEntity.setStatus(ReverseStatusEnums.close.getStatus());
|
vvReverseOrderEntity.setStatus(ReverseStatusEnums.close.getStatus());
|
||||||
|
|
||||||
vvReverseOrderEntity.setGmtClose(new Date());
|
vvReverseOrderEntity.setGmtClose(new Date());
|
||||||
|
|
||||||
vvReverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity);
|
vvReverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity);
|
||||||
|
|
||||||
List<VvReverseOrderLineEntity> vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(appliyReverseRequest.getReverseOrderId());
|
List<VvReverseOrderLineEntity> vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(appliyReverseRequest.getReverseOrderId());
|
||||||
|
|
||||||
List<Long> tradeOrderLineIds = SanUtils.list2list(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId);
|
List<Long> tradeOrderLineIds = SanUtils.list2list(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId);
|
||||||
|
|
||||||
List<VvTradeOrderLineEntity> tradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(tradeOrderLineIds);
|
List<VvTradeOrderLineEntity> tradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(tradeOrderLineIds);
|
||||||
|
|
||||||
for (VvTradeOrderLineEntity tradeOrderLineEntity : tradeOrderLineEntities) {
|
for (VvTradeOrderLineEntity tradeOrderLineEntity : tradeOrderLineEntities) {
|
||||||
|
|
||||||
tradeOrderLineEntity.setReverseStatus(ReverseStatusEnums.close.getStatus());
|
tradeOrderLineEntity.setReverseStatus(ReverseStatusEnums.close.getStatus());
|
||||||
|
|||||||
@ -106,7 +106,7 @@ public class AppWeiXinRefundNotifyController {
|
|||||||
String refund_status = reqInfo.get("refund_status");//退款状态
|
String refund_status = reqInfo.get("refund_status");//退款状态
|
||||||
String out_trade_no = reqInfo.get("out_trade_no"); //订单号
|
String out_trade_no = reqInfo.get("out_trade_no"); //订单号
|
||||||
String out_refund_no = reqInfo.get("out_refund_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<>();
|
Map<String, Object> parm = new HashMap<>();
|
||||||
if (!StringUtils.isEmpty(refund_status) && "SUCCESS".equals(refund_status)) {
|
if (!StringUtils.isEmpty(refund_status) && "SUCCESS".equals(refund_status)) {
|
||||||
VvReverseOrderEntity vvReverseOrderEntity = reverseOrderDao.selectVvReverseOrderById(NumberUtil.objToLong(out_refund_no));
|
VvReverseOrderEntity vvReverseOrderEntity = reverseOrderDao.selectVvReverseOrderById(NumberUtil.objToLong(out_refund_no));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user