Compare commits

...

17 Commits

Author SHA1 Message Date
9c84660ded 产品码修改 2025-09-30 00:15:37 +08:00
3403ec5746 增加buyer openId 2025-09-29 23:56:03 +08:00
95a1f85331 免押支付接口 2025-09-29 23:41:32 +08:00
f56236dc93 zhima 2025-09-29 21:53:06 +08:00
553f6374f5 swagger 2025-09-29 01:30:54 +08:00
355710b0c4 rentCategory 2025-09-28 20:11:07 +08:00
6fdd3d6592 撤销idhash 2025-09-28 20:03:07 +08:00
4ce8995e06 测试idhash 2025-09-28 20:00:22 +08:00
4624ff627e identity_hash 2025-09-28 19:49:48 +08:00
58e16118cc 打印日志 2025-09-28 19:25:18 +08:00
02c5209fe8 取消原ITEM接口 2025-09-28 17:25:05 +08:00
f2529153b5 解决续租车辆,还车时间为空的问题 2025-09-28 15:55:54 +08:00
d1c4d4bf93 tongzhizudian 2025-09-28 12:12:17 +08:00
1a3676bc5c 修改通知文案 2025-09-27 22:57:42 +08:00
35342da17a 取消免押修改 2025-09-27 19:27:24 +08:00
81d9fd7645 异步通知成功处理 2025-09-27 18:09:29 +08:00
bfaba5a551 xiugai sdkExecute 2025-09-27 16:59:38 +08:00
12 changed files with 172 additions and 49 deletions

View File

@ -43,7 +43,8 @@ public class ItemController {
public OpenResponse<List<AppxCategoryVO>> categoryList( public OpenResponse<List<AppxCategoryVO>> categoryList(
@ApiParam(value = "商品类型1-售卖类实物2-租赁类实物3-付费充值/兑换类(虚拟)") @RequestParam String itemType, @ApiParam(value = "商品类型1-售卖类实物2-租赁类实物3-付费充值/兑换类(虚拟)") @RequestParam String itemType,
@ApiParam(value = "类目状态默认AUDIT_PASSED", example = "AUDIT_PASSED") @RequestParam(required = false) String catStatus) { @ApiParam(value = "类目状态默认AUDIT_PASSED", example = "AUDIT_PASSED") @RequestParam(required = false) String catStatus) {
return itemService.getCategories(itemType, catStatus); //return itemService.getCategories(itemType, catStatus);
return null;
} }
/** /**
@ -55,7 +56,8 @@ public class ItemController {
public OpenResponse<AlipayOpenAppItemTemplateQueryResponse> queryTemplate( public OpenResponse<AlipayOpenAppItemTemplateQueryResponse> queryTemplate(
@ApiParam(value = "类目ID", required = true) @RequestParam String categoryId, @ApiParam(value = "类目ID", required = true) @RequestParam String categoryId,
@ApiParam(value = "商品类型1-售卖类实物2-租赁类实物3-付费充值/兑换类(虚拟)") @RequestParam(required = false) String itemType) { @ApiParam(value = "商品类型1-售卖类实物2-租赁类实物3-付费充值/兑换类(虚拟)") @RequestParam(required = false) String itemType) {
return itemService.queryTemplate(categoryId, itemType); //return itemService.queryTemplate(categoryId, itemType);
return null;
} }
@ -67,13 +69,15 @@ public class ItemController {
@ApiOperationSupport(order = 4) @ApiOperationSupport(order = 4)
@PostMapping(value = "/rent/create") @PostMapping(value = "/rent/create")
public OpenResponse<String> rentCreate(@RequestBody RentRuleItem request) { public OpenResponse<String> rentCreate(@RequestBody RentRuleItem request) {
return itemService.createRentItem(request); //return itemService.createRentItem(request);
return null;
} }
@PostMapping(value = "/rent/modify") @PostMapping(value = "/rent/modify")
public OpenResponse<String> modifyCreate(@RequestBody RentRuleItem request) { public OpenResponse<String> modifyCreate(@RequestBody RentRuleItem request) {
return itemService.modifyItem(request); //return itemService.modifyItem(request);
return null;
} }
@ApiOperation(value = "商品详情查询") @ApiOperation(value = "商品详情查询")
@ -82,8 +86,9 @@ public class ItemController {
public OpenResponse<AlipayOpenAppItemQueryResponse> query(@ApiParam(value = "支付平台侧商品ID") @RequestParam(required = false) String itemId, public OpenResponse<AlipayOpenAppItemQueryResponse> query(@ApiParam(value = "支付平台侧商品ID") @RequestParam(required = false) String itemId,
@ApiParam(value = "商家侧商品ID") @RequestParam(required = false) String outItemId, @ApiParam(value = "商家侧商品ID") @RequestParam(required = false) String outItemId,
@ApiParam(value = "是否查询编辑版本默认为0", defaultValue = "0") @RequestParam(required = false) String needEditSpu) { @ApiParam(value = "是否查询编辑版本默认为0", defaultValue = "0") @RequestParam(required = false) String needEditSpu) {
return itemService.queryItemDetail(itemId, outItemId, // return itemService.queryItemDetail(itemId, outItemId,
StringUtils.isNumeric(needEditSpu) ? Long.parseLong(needEditSpu) : 0); // StringUtils.isNumeric(needEditSpu) ? Long.parseLong(needEditSpu) : 0);
return null;
} }
/** /**
@ -93,7 +98,9 @@ public class ItemController {
@ApiOperationSupport(order = 4) @ApiOperationSupport(order = 4)
@PostMapping(value = "/template/create") @PostMapping(value = "/template/create")
public OpenResponse<String> templateCreate() { public OpenResponse<String> templateCreate() {
return itemService.syncDeliveryInfo();
//return itemService.syncDeliveryInfo();
return null;
} }
/** /**
@ -103,21 +110,27 @@ public class ItemController {
@ApiOperationSupport(order = 4) @ApiOperationSupport(order = 4)
@PostMapping(value = "/delivery/query") @PostMapping(value = "/delivery/query")
public OpenResponse<String> deliveryQuery() { public OpenResponse<String> deliveryQuery() {
return itemService.deliveryInfoQuery();
//return itemService.deliveryInfoQuery();
return null;
} }
@ApiOperation(value = "租赁类(实物)履约模板创建") @ApiOperation(value = "租赁类(实物)履约模板创建")
@ApiOperationSupport(order = 4) @ApiOperationSupport(order = 4)
@PostMapping(value = "/deliverytemplate/query") @PostMapping(value = "/deliverytemplate/query")
public OpenResponse<String> deliveryTemplateQuery() { public OpenResponse<String> deliveryTemplateQuery() {
return itemService.deliveryTemplateQuery();
//return itemService.deliveryTemplateQuery();
return null;
} }
@ApiOperation(value = "租赁类(实物)履约模板创建") @ApiOperation(value = "租赁类(实物)履约模板创建")
@ApiOperationSupport(order = 4) @ApiOperationSupport(order = 4)
@PostMapping(value = "/shop/query") @PostMapping(value = "/shop/query")
public OpenResponse<String> shopQuery() { public OpenResponse<String> shopQuery() {
return itemService.shopQuery();
//return itemService.shopQuery();
return null;
} }
@ -125,7 +138,8 @@ public class ItemController {
@GetMapping(value = "/sync/item") @GetMapping(value = "/sync/item")
public Map<String,String> syncItem(@RequestParam(required = false) String brandId,@RequestParam(required = false) String carModelId, public Map<String,String> syncItem(@RequestParam(required = false) String brandId,@RequestParam(required = false) String carModelId,
@RequestParam(required = false) String carRuleId,@RequestParam(required = false) String batteryRuleId) { @RequestParam(required = false) String carRuleId,@RequestParam(required = false) String batteryRuleId) {
return rentRuleItemService.syncItem(brandId, carModelId,carRuleId,batteryRuleId); //return rentRuleItemService.syncItem(brandId, carModelId,carRuleId,batteryRuleId);
return null;
} }
} }

View File

@ -3,6 +3,7 @@ package com.sczx.pay.config;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.PathSelectors;
@ -17,6 +18,7 @@ import java.util.Arrays;
@Configuration @Configuration
@EnableSwagger2 @EnableSwagger2
@Profile("!prod") // 除了prod环境外都启用
public class SwaggerConfig { public class SwaggerConfig {
@Bean @Bean
public Docket createRestApi() { public Docket createRestApi() {

View File

@ -165,16 +165,12 @@ public class AliPayNotifyController {
// 这里简化处理,实际应根据支付宝文档实现 // 这里简化处理,实际应根据支付宝文档实现
String orderStatus = params.get("order_status"); String status = params.get("status");
if (!"AUTHORIZED".equals(orderStatus)) {
log.warn("支付宝免押通知状态失败: {}", orderStatus);
return buildResponse("success");
}
if ("SUCCESS".equals(status)) {
log.warn("支付宝免押通知状态: {}", status);
// 处理免押通知 // 处理免押通知
String outOrderNo = params.get("out_order_no"); String outOrderNo = params.get("out_order_no");
// String outRequestNo = params.get("out_request_no");
String authNo = params.get("auth_no"); String authNo = params.get("auth_no");
// 更新数据库中的免押支付状态 // 更新数据库中的免押支付状态
@ -183,15 +179,12 @@ public class AliPayNotifyController {
log.info("支付宝免押处理完成,支付单号: {}, 支付宝授权资金订单号: {}", log.info("支付宝免押处理完成,支付单号: {}, 支付宝授权资金订单号: {}",
outOrderNo, authNo); outOrderNo, authNo);
return buildResponse("success"); return buildResponse("success");
} else {
log.error("支付宝免押处理状态失败,订单号: {}, 支付宝授权资金订单号: {}", outOrderNo, authNo);
return buildResponse("failure");
} }
}
} catch (Exception e) { } catch (Exception e) {
log.error("处理支付宝退款通知异常", e); log.error("处理支付宝退款通知异常", e);
return buildResponse("failure");
} }
return buildResponse("failure");
} }
private String buildResponse(String result) { private String buildResponse(String result) {

View File

@ -27,6 +27,13 @@ public class AliPaymentController {
return alipayService.unifiedOrder(request); return alipayService.unifiedOrder(request);
} }
@ApiOperation(value = "支付宝芝麻统一下单接口")
@PostMapping("/zhiMaOrder")
public AlipayCreateResponse zhiMaOrder(@RequestBody AlipayCreateRequest request) {
log.info("收到支付宝免押支付请求: {}", request);
return alipayService.zhiMaOrder(request);
}
/** /**
* 查询订单接口 * 查询订单接口
*/ */

View File

@ -11,4 +11,5 @@ public class AlipayCreateRequest {
private String totalAmount; // 订单总金额 private String totalAmount; // 订单总金额
private String body; // 订单描述 private String body; // 订单描述
private String openId; // 用户ID private String openId; // 用户ID
private String authNo;
} }

View File

@ -1,6 +1,7 @@
package com.sczx.pay.dto; package com.sczx.pay.dto;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@ApiModel("支付宝资金冻结请求参数") @ApiModel("支付宝资金冻结请求参数")
@ -10,4 +11,6 @@ public class AlipayFundFreezeRequest {
private String outOrderNo; private String outOrderNo;
private String title; private String title;
private String amount; private String amount;
@ApiModelProperty(value = "支付宝资金授权订单号")
private String authNo;
} }

View File

@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Update;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import java.util.List;
@Mapper @Mapper
public interface OrderPayMapper { public interface OrderPayMapper {
@ -67,14 +68,17 @@ public interface OrderPayMapper {
@Select("select suborder_id from zc_order_sub where payment_id = #{paymentId} and suborder_type = 'RENTBATTEY' limit 1") @Select("select suborder_id from zc_order_sub where payment_id = #{paymentId} and suborder_type = 'RENTBATTEY' limit 1")
Long getSubOrderIdByTradeNo(@Param("paymentId") String paymentId); Long getSubOrderIdByTradeNo(@Param("paymentId") String paymentId);
@Select("select * from zc_order_sub where payment_id = #{paymentId} order by suborder_id desc limit 1") @Select("select * from zc_order_sub where payment_id = #{paymentId}")
OrderSub getSubOrderByTradeNo(@Param("paymentId") String paymentId); List<OrderSub> listSubOrderByTradeNo(@Param("paymentId") String paymentId);
/** /**
* 免押成功,更新子订单状态 * 免押成功,更新子订单状态
*/ */
@Update("update zc_order_sub set transaction_id = #{transactionId},pay_status = 'SUCCESS'" + @Update("update zc_order_sub set transaction_id = #{authNo},pay_status = 'SUCCESS'" +
" where payment_id = #{authNo}") " where payment_id = #{outTradeNo}")
int updateFreezeSubOrderPaymentStatus(@Param("authNo") String authNo, int updateFreezeSubOrderPaymentStatus(@Param("outTradeNo") String outTradeNo,@Param("authNo") String authNo);
@Param("transactionId") String transactionId);
@Select("SELECT SHA2 ( CONVERT (concat(u.real_name,u.id_no) USING utf8 ), 256 ) as hashStr FROM zc_order_sub s,zc_order_main m,zc_base_user u WHERE s.payment_id = #{paymentId} AND s.order_id = m.order_id AND m.customer_phone = u.phone_number AND u.authed = '1'")
String getHashStrByTradeNo(@Param("paymentId") String paymentId);
} }

View File

@ -10,6 +10,9 @@ public interface AlipayService {
*/ */
AlipayCreateResponse unifiedOrder(AlipayCreateRequest request); AlipayCreateResponse unifiedOrder(AlipayCreateRequest request);
AlipayCreateResponse zhiMaOrder(AlipayCreateRequest request);
/** /**
* 查询订单 * 查询订单
*/ */

View File

@ -27,6 +27,7 @@ import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -425,10 +426,13 @@ public class WechatPayService {
if(OrderStatus.equals("WAIT_PAY")){ if(OrderStatus.equals("WAIT_PAY")){
orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"WAIT_PICK"); orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"WAIT_PICK");
}else if (OrderStatus.equals("RERENT_WAIT_PAY")){ }else if (OrderStatus.equals("RERENT_WAIT_PAY")){
OrderSub orderSub = orderPayMapper.getSubOrderByTradeNo(outTradeNo); List<OrderSub> orderSub = orderPayMapper.listSubOrderByTradeNo(outTradeNo);
orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),orderSub.getReturnTime(),0,orderMain.getOrderAmount().add(orderSub.getAmount()),"RENT_ING"); OrderSub rentCarSubOrder = orderSub.stream().filter(x -> x.getSuborderType().equals("RENTCAR")).findFirst().orElse( null);
BigDecimal rentCarAmount = orderSub.stream().map(OrderSub::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),rentCarSubOrder.getReturnTime(),0,orderMain.getOrderAmount().add(rentCarAmount),"RENT_ING");
//发送租电订单同步 //发送租电订单同步
Long batterySubOrderId = orderPayMapper.getSubOrderIdByTradeNo(outTradeNo); Long batterySubOrderId = orderPayMapper.getSubOrderIdByTradeNo(outTradeNo);
logger.info("发送租电订单同步: {}", batterySubOrderId);
syncInteg.sendSubOrderId(batterySubOrderId); syncInteg.sendSubOrderId(batterySubOrderId);
} }
orderPayMapper.updateSubOrderPaymentStatus(outTradeNo,"WX_PAY",PayStatus.SUCCESS.getCode(),transactionId); orderPayMapper.updateSubOrderPaymentStatus(outTradeNo,"WX_PAY",PayStatus.SUCCESS.getCode(),transactionId);

View File

@ -16,6 +16,7 @@ import com.sczx.pay.mapper.OrderPayMapper;
import com.sczx.pay.mapper.PaymentRecordMapper; import com.sczx.pay.mapper.PaymentRecordMapper;
import com.sczx.pay.mapper.RefundRecordMapper; import com.sczx.pay.mapper.RefundRecordMapper;
import com.sczx.pay.service.AlipayRentService; import com.sczx.pay.service.AlipayRentService;
import com.sczx.pay.thirdpart.integration.SyncInteg;
import com.sczx.pay.utils.AlipaySdkUtil; import com.sczx.pay.utils.AlipaySdkUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -51,6 +52,10 @@ public class AlipayRentServiceImpl implements AlipayRentService {
@Autowired @Autowired
private OrderPayMapper orderPayMapper; private OrderPayMapper orderPayMapper;
@Autowired
private SyncInteg syncInteg;
@Override @Override
public AlipayRentPayResponse rentPay(AlipayRentPayReq alipayRentPayReq) { public AlipayRentPayResponse rentPay(AlipayRentPayReq alipayRentPayReq) {
AlipayRentPayResponse response = new AlipayRentPayResponse(); AlipayRentPayResponse response = new AlipayRentPayResponse();
@ -155,8 +160,15 @@ public class AlipayRentServiceImpl implements AlipayRentService {
if(OrderStatus.equals("WAIT_PAY")){ if(OrderStatus.equals("WAIT_PAY")){
orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"WAIT_PICK"); orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"WAIT_PICK");
}else if (OrderStatus.equals("RERENT_WAIT_PAY")){ }else if (OrderStatus.equals("RERENT_WAIT_PAY")){
OrderSub orderSub = orderPayMapper.getSubOrderByTradeNo(outTradeNo); List<OrderSub> orderSub = orderPayMapper.listSubOrderByTradeNo(outTradeNo);
orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),orderSub.getReturnTime(),0,orderMain.getOrderAmount().add(orderSub.getAmount()),"RENT_ING"); OrderSub rentCarSubOrder = orderSub.stream().filter(x -> x.getSuborderType().equals("RENTCAR")).findFirst().orElse( null);
BigDecimal rentCarAmount = orderSub.stream().map(OrderSub::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),rentCarSubOrder.getReturnTime(),0,orderMain.getOrderAmount().add(rentCarAmount),"RENT_ING");
//发送租电订单同步
Long batterySubOrderId = orderPayMapper.getSubOrderIdByTradeNo(outTradeNo);
log.info("发送租电订单同步: {}", batterySubOrderId);
syncInteg.sendSubOrderId(batterySubOrderId);
} }
orderPayMapper.updateSubOrderPaymentStatus(outTradeNo,"ZFB_PAY", PayStatus.SUCCESS.getCode(),tradeNo); orderPayMapper.updateSubOrderPaymentStatus(outTradeNo,"ZFB_PAY", PayStatus.SUCCESS.getCode(),tradeNo);
return true; return true;

View File

@ -1,6 +1,7 @@
package com.sczx.pay.service.impl; package com.sczx.pay.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayApiException;
import com.alipay.api.domain.*; import com.alipay.api.domain.*;
@ -25,6 +26,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
import java.util.Map; import java.util.Map;
@Slf4j @Slf4j
@ -53,6 +55,9 @@ public class AlipayServiceImpl implements AlipayService {
@Value("${alipay.serviceid}") @Value("${alipay.serviceid}")
private String serviceId ; private String serviceId ;
@Value("${alipay.rent.rentCategory}")
private String rentCategory;
@Autowired @Autowired
private PaymentRecordMapper paymentRecordMapper; private PaymentRecordMapper paymentRecordMapper;
@ -134,6 +139,71 @@ public class AlipayServiceImpl implements AlipayService {
return response; return response;
} }
@Override
public AlipayCreateResponse zhiMaOrder(AlipayCreateRequest alipayCreateRequest) {
AlipayCreateResponse response = new AlipayCreateResponse();
try {
// 构造请求参数以调用接口
AlipayTradePayRequest request = new AlipayTradePayRequest();
AlipayTradePayModel model = new AlipayTradePayModel();
model.setBuyerOpenId(alipayCreateRequest.getOpenId());
// 设置商户订单号
model.setOutTradeNo(alipayCreateRequest.getOutTradeNo());
// 设置订单总金额
model.setTotalAmount(alipayCreateRequest.getTotalAmount());
// 设置订单标题
model.setSubject(alipayCreateRequest.getSubject());
model.setAuthNo(alipayCreateRequest.getAuthNo());
// 设置预授权确认模式
model.setAuthConfirmMode("NOT_COMPLETE");
// 设置产品码
model.setProductCode("PREAUTH_PAY");
request.setBizModel(model);
//设置回调地址
request.setNotifyUrl(notifyUrl);
// 第三方代调用模式下请设置app_auth_token
// request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
log.info("支付宝免押支付下单请求:{}", JSONObject.toJSONString(request));
AlipayTradePayResponse alipayResponse = alipaySdkUtil.execute(request);
log.info("支付宝免押支付下单返回:{}", JSONObject.toJSONString(alipayResponse));
if (alipayResponse.isSuccess()) {
response.setSuccess(true);
response.setOrderStr(alipayResponse.getBody());
response.setOutTradeNo(alipayCreateRequest.getOutTradeNo());
response.setTradeNo(alipayResponse.getTradeNo());
response.setCode("SUCCESS");
response.setMessage("下单成功");
//保存支付单
recordPaymentInfo(alipayCreateRequest);
} else {
response.setSuccess(false);
response.setCode("FAIL");
response.setMessage("下单失败: " + alipayResponse.getMsg() + ":" + alipayResponse.getSubMsg());
}
} catch (Exception e) {
log.error("支付宝下单异常公司ID: {}, 订单号: {}", alipayCreateRequest.getCompanyId(), alipayCreateRequest.getOutTradeNo(), e);
response.setSuccess(false);
response.setCode("FAIL");
response.setMessage("下单异常: " + e.getMessage());
}
return response;
}
@Override @Override
public AlipayQueryResponse orderQuery(String outTradeNo) { public AlipayQueryResponse orderQuery(String outTradeNo) {
AlipayQueryResponse response = new AlipayQueryResponse(); AlipayQueryResponse response = new AlipayQueryResponse();
@ -341,7 +411,7 @@ public class AlipayServiceImpl implements AlipayService {
model.setProductCode("PRE_AUTH_ONLINE"); model.setProductCode("PRE_AUTH_ONLINE");
// 设置业务扩展参数 // 设置业务扩展参数
model.setExtraParam("{\"category\": \"CHARGE_PILE_CAR\",\"serviceId\": \""+serviceId+"\"}"); model.setExtraParam("{\"category\": \""+rentCategory+"\",\"serviceId\": \""+serviceId+"\"}");
// 设置免押受理台模式 // 设置免押受理台模式
model.setDepositProductMode("DEPOSIT_ONLY"); model.setDepositProductMode("DEPOSIT_ONLY");
@ -350,8 +420,8 @@ public class AlipayServiceImpl implements AlipayService {
// 设置异步通知地址 // 设置异步通知地址
request.setNotifyUrl(freezeNotifyUrl); request.setNotifyUrl(freezeNotifyUrl);
log.info("免押冻结请求 : {}",request); log.info("免押冻结请求 : {}", JSON.toJSONString(request));
AlipayFundAuthOrderAppFreezeResponse fundAuthOrderAppFreezeResponse = alipaySdkUtil.execute(request); AlipayFundAuthOrderAppFreezeResponse fundAuthOrderAppFreezeResponse = alipaySdkUtil.sdkExecute(request);
log.info("免押冻结响应 : {}",fundAuthOrderAppFreezeResponse.getBody()); log.info("免押冻结响应 : {}",fundAuthOrderAppFreezeResponse.getBody());
if (fundAuthOrderAppFreezeResponse.isSuccess()) { if (fundAuthOrderAppFreezeResponse.isSuccess()) {
@ -388,13 +458,16 @@ public class AlipayServiceImpl implements AlipayService {
// 设置商户的授权资金操作流水号 // 设置商户的授权资金操作流水号
model.setOutRequestNo(alipayFundFreezeRequest.getOutOrderNo()); model.setOutRequestNo(alipayFundFreezeRequest.getOutOrderNo());
//设置商户的授权资金操作流水号
model.setAuthNo(alipayFundFreezeRequest.getAuthNo());
// 设置商户对本次撤销操作的附言描述 // 设置商户对本次撤销操作的附言描述
model.setRemark(alipayFundFreezeRequest.getTitle()); model.setRemark(alipayFundFreezeRequest.getTitle());
request.setBizModel(model); request.setBizModel(model);
request.setBizModel(model); request.setBizModel(model);
log.info("取消免押冻结请求 : {}",request); log.info("取消免押冻结请求 : {}",request.getTextParams());
AlipayFundAuthOperationCancelResponse fundAuthOperationCancelResponse = alipaySdkUtil.execute(request); AlipayFundAuthOperationCancelResponse fundAuthOperationCancelResponse = alipaySdkUtil.execute(request);
log.info("取消免押冻结响应 : {}",fundAuthOperationCancelResponse.getBody()); log.info("取消免押冻结响应 : {}",fundAuthOperationCancelResponse.getBody());
@ -549,10 +622,13 @@ public class AlipayServiceImpl implements AlipayService {
if(OrderStatus.equals("WAIT_PAY")){ if(OrderStatus.equals("WAIT_PAY")){
orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"WAIT_PICK"); orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"WAIT_PICK");
}else if (OrderStatus.equals("RERENT_WAIT_PAY")){ }else if (OrderStatus.equals("RERENT_WAIT_PAY")){
OrderSub orderSub = orderPayMapper.getSubOrderByTradeNo(outTradeNo); List<OrderSub> orderSub = orderPayMapper.listSubOrderByTradeNo(outTradeNo);
orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),orderSub.getReturnTime(),0,orderMain.getOrderAmount().add(orderSub.getAmount()),"RENT_ING"); OrderSub rentCarSubOrder = orderSub.stream().filter(x -> x.getSuborderType().equals("RENTCAR")).findFirst().orElse( null);
BigDecimal rentCarAmount = orderSub.stream().map(OrderSub::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),rentCarSubOrder.getReturnTime(),0,orderMain.getOrderAmount().add(rentCarAmount),"RENT_ING");
//发送租电订单同步 //发送租电订单同步
Long batterySubOrderId = orderPayMapper.getSubOrderIdByTradeNo(outTradeNo); Long batterySubOrderId = orderPayMapper.getSubOrderIdByTradeNo(outTradeNo);
log.info("发送租电订单同步: {}", batterySubOrderId);
syncInteg.sendSubOrderId(batterySubOrderId); syncInteg.sendSubOrderId(batterySubOrderId);
} }
orderPayMapper.updateSubOrderPaymentStatus(outTradeNo,"ZFB_PAY", PayStatus.SUCCESS.getCode(),tradeNo); orderPayMapper.updateSubOrderPaymentStatus(outTradeNo,"ZFB_PAY", PayStatus.SUCCESS.getCode(),tradeNo);

View File

@ -68,6 +68,10 @@ public class AlipaySdkUtil {
return alipayClient.certificateExecute(request); return alipayClient.certificateExecute(request);
} }
public <T extends AlipayResponse> T sdkExecute(AlipayRequest<T> request) throws AlipayApiException {
return alipayClient.sdkExecute(request);
}
private AlipayConfig getAlipayConfig() { private AlipayConfig getAlipayConfig() {
AlipayConfig alipayConfig = new AlipayConfig(); AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do"); alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");