Compare commits
17 Commits
14ab3d28a4
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 9c84660ded | |||
| 3403ec5746 | |||
| 95a1f85331 | |||
| f56236dc93 | |||
| 553f6374f5 | |||
| 355710b0c4 | |||
| 6fdd3d6592 | |||
| 4ce8995e06 | |||
| 4624ff627e | |||
| 58e16118cc | |||
| 02c5209fe8 | |||
| f2529153b5 | |||
| d1c4d4bf93 | |||
| 1a3676bc5c | |||
| 35342da17a | |||
| 81d9fd7645 | |||
| bfaba5a551 |
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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() {
|
||||||
|
|||||||
@ -165,33 +165,26 @@ public class AliPayNotifyController {
|
|||||||
// 这里简化处理,实际应根据支付宝文档实现
|
// 这里简化处理,实际应根据支付宝文档实现
|
||||||
|
|
||||||
|
|
||||||
String orderStatus = params.get("order_status");
|
String status = params.get("status");
|
||||||
|
|
||||||
if (!"AUTHORIZED".equals(orderStatus)) {
|
if ("SUCCESS".equals(status)) {
|
||||||
log.warn("支付宝免押通知状态失败: {}", orderStatus);
|
log.warn("支付宝免押通知状态: {}", status);
|
||||||
return buildResponse("success");
|
// 处理免押通知
|
||||||
|
String outOrderNo = params.get("out_order_no");
|
||||||
|
String authNo = params.get("auth_no");
|
||||||
|
|
||||||
|
// 更新数据库中的免押支付状态
|
||||||
|
boolean success = alipayService.processFreezeNotify(outOrderNo,authNo);
|
||||||
|
if (success) {
|
||||||
|
log.info("支付宝免押处理完成,支付单号: {}, 支付宝授权资金订单号: {}",
|
||||||
|
outOrderNo, authNo);
|
||||||
|
return buildResponse("success");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理免押通知
|
|
||||||
String outOrderNo = params.get("out_order_no");
|
|
||||||
// String outRequestNo = params.get("out_request_no");
|
|
||||||
String authNo = params.get("auth_no");
|
|
||||||
|
|
||||||
// 更新数据库中的免押支付状态
|
|
||||||
boolean success = alipayService.processFreezeNotify(outOrderNo,authNo);
|
|
||||||
if (success) {
|
|
||||||
log.info("支付宝免押处理完成,支付单号: {}, 支付宝授权资金订单号: {}",
|
|
||||||
outOrderNo, authNo);
|
|
||||||
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) {
|
||||||
|
|||||||
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询订单接口
|
* 查询订单接口
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,6 +10,9 @@ public interface AlipayService {
|
|||||||
*/
|
*/
|
||||||
AlipayCreateResponse unifiedOrder(AlipayCreateRequest request);
|
AlipayCreateResponse unifiedOrder(AlipayCreateRequest request);
|
||||||
|
|
||||||
|
|
||||||
|
AlipayCreateResponse zhiMaOrder(AlipayCreateRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询订单
|
* 查询订单
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user