Commit 0f4388ad by zhiheng.zhang

调用支付接口修改

parent 2c58fee5
......@@ -4,6 +4,8 @@ public class ResponseCodeConstant {
public final static Integer RESPONSE_SUCCESS = 100;
public final static Integer ORDER_PAY_RESPONSE_SUCCESS = 200;
public final static String RESPONSE_SUCCESS_STR = "100";
}
package com.freemud.sdk.api.assortment.order.request.order;
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class MultiOrderRefundRequest {
/**
* 非码订单号
*/
private String fmId;
/**
* 操作人ID
*/
private boolean isVer3;
/**
* 操作人ID
*/
private String notifyUrl;
/**
* 操作人ID
*/
private String operatorId;
/**
* 退款金额
*/
private Long refundAmount;
/**
* 退款编号
*/
private String refundTradeNo;
/**
*
*/
private String stationId;
/**
* 外部交易流水号,由上游系统生成,需保证唯一(支付标识)
*/
private String outOrderNo;
/**
* 商户编号(由非码提供)
*/
private String partnerId;
/**
* 商家门店号(在线支付需要提前定义)
*/
private String storeId;
/**
* 接口版本,默认30
*/
private String ver;
}
package com.freemud.sdk.api.assortment.order.response.order;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import java.util.List;
/**
* 聚合退款返回
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class MultiOrderRefundResponse<T> {
private int code;
private String msg;
private T data;
@lombok.Data
public class Data {
List<RefundPlatformResponse> refundPlatformResponseList;
}
@lombok.Data
public static class RefundPlatformResponse{
private String endTransTradeNo;
private String fmRefundNo;
private String fmTradeNo;
private Integer mcouponAmount;
private Integer pcouponAmount;
private String platformTradeNo;
private Integer refundAmount;
private String refundCurrency;
private String refundDesc;
private String refundEndTransTradeNo;
private String refundTime;
private String refundTradeNo;
private Integer settleRefundAmount;
private Integer totalAmount;
}
}
\ No newline at end of file
......@@ -75,7 +75,6 @@ import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.FastDateFormat;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.awt.geom.Point2D;
......@@ -83,9 +82,7 @@ import java.math.BigDecimal;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -2120,6 +2117,21 @@ public class OrderAdapter {
return orderPayRefundRequest;
}
public MultiOrderRefundRequest getMultiOrderPayRefundRequest(QueryOrdersResponseDto.DataBean.OrderBean orderBean, Long refundId) {
MultiOrderRefundRequest multiQueryRequest = new MultiOrderRefundRequest();
multiQueryRequest.setStationId("1");
multiQueryRequest.setPartnerId(orderBean.getCompanyId());
multiQueryRequest.setStoreId(orderBean.getShopId());
multiQueryRequest.setFmId("");
multiQueryRequest.setRefundAmount(orderBean.getAmount());
multiQueryRequest.setRefundTradeNo(String.valueOf(refundId));
multiQueryRequest.setStoreId(orderBean.getShopId());
multiQueryRequest.setNotifyUrl(refundNotifyCallback);
multiQueryRequest.setVer("10");
multiQueryRequest.setVer3(false);
return multiQueryRequest;
}
public CancelOrderRequest convent2CancelOrderRequest(String orderId, String partnerId, AfterSalesType afterSalesType,
String reason, String trackingNo, String refundId) {
CancelOrderRequest cancelOrderRequest = new CancelOrderRequest();
......
......@@ -139,6 +139,7 @@ public class QueryOrdersResponseDto {
private String otherCode;
private String partition;
private String payChannel;
private String payChannelType;
private String payChannelName;
/**
* 订单支付状态 1 未支付 2 已支付 3 已退款 4 已经部分退款 5 完成
......
......@@ -21,7 +21,6 @@ import cn.freemud.amqp.MQService;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.base.util.DateUtil;
import cn.freemud.base.util.JsonUtil;
import cn.freemud.constant.OrderRefundConstant;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant;
......@@ -70,8 +69,6 @@ import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustome
import com.freemud.api.assortment.datamanager.meal.MealCacheManager;
import com.freemud.application.sdk.api.constant.ResponseConstant;
import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.couponcenter.offline.request.CouponRequest;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryInfoDto;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
......@@ -84,13 +81,11 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCodeReq;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq;
import com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse;
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.paymentcenter.client.request.CodePayRequest;
......@@ -100,7 +95,6 @@ import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmou
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequest;
import com.freemud.application.sdk.api.storecenter.response.GetListByCodesResponse;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
......@@ -144,9 +138,7 @@ import org.springframework.stereotype.Service;
import tk.mybatis.mapper.util.StringUtil;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
......@@ -155,7 +147,6 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import static cn.freemud.constant.OrderRefundConstant.ALLOW_REFUND;
import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR;
@Service
@Slf4j
......@@ -264,6 +255,8 @@ public class OrderServiceImpl implements Orderservice {
private DeliveryFeiginClient deliveryFeiginClient;
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private MulitiPaymentClient mulitiPaymentClient;
@Override
public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) {
......@@ -1671,14 +1664,25 @@ public class OrderServiceImpl implements Orderservice {
String partnerId = orderBean.getCompanyId();
int state = PayRefundStatus.SUCCESS.getCode();
if (orderBean.getAmount() != 0) {
//调用支付退款
com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, fatherOrderId);
response = standardPaymentService.orderRefund(orderPayRefundRequest, LogTreadLocal.getTrackingNo());
if (response == null || response.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(response.getCode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed");
if(orderBean.getPayChannelType().equalsIgnoreCase("4")){
//调用支付退款
MultiOrderRefundRequest multiOrderRefundRequest = orderAdapter.getMultiOrderPayRefundRequest(orderBean, refundId);
MultiOrderRefundResponse<MultiOrderRefundResponse.Data> multiOrderRefundResponse = mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest,orderBean.getCompanyId());
if (multiOrderRefundResponse == null || multiOrderRefundResponse.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.ORDER_PAY_RESPONSE_SUCCESS.equals(multiOrderRefundResponse.getCode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed");
}
//获取支付返回退款状态
state = PayRefundStatus.SUCCESS.getCode();
}else {
//调用支付退款
com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, fatherOrderId);
response = standardPaymentService.orderRefund(orderPayRefundRequest, LogTreadLocal.getTrackingNo());
if (response == null || response.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(response.getCode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed");
}
//获取支付返回退款状态
state = response.getData().getRefundStatus() == null ? PayRefundStatus.SUCCESS.getCode() : response.getData().getRefundStatus();
}
//获取支付返回退款状态
state = response.getData().getRefundStatus() == null ? PayRefundStatus.SUCCESS.getCode() : response.getData().getRefundStatus();
}
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(),
partnerId, afterSalesType, orderRefundVo.getReason(), LogTreadLocal.getTrackingNo(), refundId.toString());
......
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderClient
* @Package cn.freemud.service.thirdparty
* @Description:
* @author: liming.guo
* @date: 2018/8/10 16:06
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.thirdparty;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
import com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "payment-center-application-api",url = "${saas.paymentcenter.application.api.feign.url}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface MulitiPaymentClient {
/**
* 统一活动查询接口
*/
@PostMapping("/payment/application/refund")
MultiOrderRefundResponse paymentApplicationRefund(MultiOrderRefundRequest multiOrderRefundRequest, @RequestHeader("partnerId") String partnerId);
}
package cn.freemud.service.impl;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.OrderAffirmRequestVO;
import cn.freemud.entities.vo.PaysuccessNoticeMessage;
import cn.freemud.utils.ValidationCode;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import org.junit.After;
import org.junit.Before;
import cn.freemud.service.thirdparty.MulitiPaymentClient;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
import com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -33,47 +25,69 @@ public class MallOrderServiceImplTest {
@Autowired
private MCCafeOrderServiceImpl mcCafeOrderService;
@Autowired
private MulitiPaymentClient mulitiPaymentClient;
@Before
public void before() throws Exception {
}
// @Before
// public void before() throws Exception {
// }
//
// @After
// public void after() throws Exception {
// }
@After
public void after() throws Exception {
}
// @Test
// public void f1() {
// mcCafeOrderService.createOrder(JSON.parseObject("{\"channelType\":\"saas\",\"couponCode\":\"\",\"menuType\":\"saasdelivery\",\"needInvoice\":0,\"needTableware\":0,\"orderRemark\":\"\",\"orderType\":2,\"partnerId\":\"1206\",\"payChannelType\":1,\"receiveId\":\"3599568180562003060\",\"sessionId\":\"c4377678dbcbd6cdf6e7df86ea112b6f82723023\",\"shopId\":\"1450026\",\"takeMealFlag\":\"0\"}", CreateOrderVo.class),
// new StoreResponse.BizVO(),
// JSON.parseObject("{\"activityDiscountsDtos\":[],\"deliveryAmount\":10,\"discountDeliveryAmount\":10,\"isDiscountDelivery\":false,\"originalTotalAmount\":4400,\"packageAmount\":0,\"products\":[{\"activityDiscountsDtos\":[],\"attributeNames\":\"{\\\"attributeNames\\\":\\\"\\\"}\",\"cartGoodsUid\":\"eb8c7260-8ecb-44d1-9234-8d8bed0b0875\",\"classificationId\":\"\",\"classificationName\":\"\",\"comboProducts\":[{\"attributeNames\":\"{\\\"attributeNames\\\":\\\"\\\"}\",\"customerCode\":\"501642\",\"extraList\":[],\"hasProductCoupon\":false,\"isFixedProduct\":false,\"materialList\":[],\"originalPrice\":1700,\"parentProductId\":\"184437853099519288\",\"picture\":\"https://picture.sandload.cn/1598678546485.png\",\"productType\":6,\"qty\":2,\"skuId\":\"184437494035639613\",\"skuName\":\"中杯热美式\",\"spuId\":\"184437494035639613\",\"spuName\":\"中杯热美式\",\"stockLimit\":false,\"tax\":0.01,\"taxId\":\"\",\"totalDiscountAmount\":0,\"unit\":\"\",\"weight\":0.0},{\"attributeNames\":\"{\\\"attributeNames\\\":\\\"\\\"}\",\"customerCode\":\"901290\",\"extraList\":[],\"hasProductCoupon\":false,\"isFixedProduct\":false,\"materialList\":[],\"originalPrice\":500,\"parentProductId\":\"184437853099519288\",\"picture\":\"https://picture.sandload.cn/1598677404074.png\",\"productType\":6,\"qty\":2,\"skuId\":\"184436294373469463\",\"skuName\":\"经典芝士蛋糕\",\"spuId\":\"184436294373469463\",\"spuName\":\"经典芝士蛋糕\",\"stockLimit\":false,\"tax\":0.01,\"taxId\":\"\",\"totalDiscountAmount\":0,\"unit\":\"\",\"weight\":0.0}],\"customerCode\":\"901280\",\"extraList\":[],\"hasProductCoupon\":false,\"materialList\":[],\"originalPrice\":4400,\"picture\":\"https://picture.sandload.cn/1598678861518.png\",\"productCode\":\"901280\",\"productType\":6,\"qty\":2,\"salePrice\":4400,\"skuId\":\"184437853099519288\",\"skuName\":\"早餐啡常搭\",\"spuId\":\"184437853099519288\",\"spuName\":\"早餐啡常搭\",\"stockLimit\":false,\"tax\":0.01,\"taxId\":\"\",\"totalDiscountAmount\":0,\"unit\":\"\",\"weight\":0.0}],\"shareDiscountActivityDtos\":[],\"totalAmount\":4400,\"totalDiscountAmount\":0}", ShoppingCartGoodsDto.class),
// new OrderExtendedReq(),
// OrderClientType.SAAS,"www");
// }
//
// @Test
// public void testPaySuccess() {
// //0元支付
// String fmId = "SPAY" + ValidationCode.getRandomUuid();
// PaysuccessNoticeMessage message = new PaysuccessNoticeMessage();
// message.setResult_code(100);
// message.setOut_trade_no(fmId);
// message.setTrans_id("16303606485084241800003");
// message.setTotal_fee(0);
// message.setOpenid("oORZK5MHMBm78PO302NdRyzIY5K0");
// message.setPlatform_coupon(0);
// message.setMerchant_coupon(0);
// mallOrderService.paySuccessCallback(message);
// }
@Test
public void f1() {
mcCafeOrderService.createOrder(JSON.parseObject("{\"channelType\":\"saas\",\"couponCode\":\"\",\"menuType\":\"saasdelivery\",\"needInvoice\":0,\"needTableware\":0,\"orderRemark\":\"\",\"orderType\":2,\"partnerId\":\"1206\",\"payChannelType\":1,\"receiveId\":\"3599568180562003060\",\"sessionId\":\"c4377678dbcbd6cdf6e7df86ea112b6f82723023\",\"shopId\":\"1450026\",\"takeMealFlag\":\"0\"}", CreateOrderVo.class),
new StoreResponse.BizVO(),
JSON.parseObject("{\"activityDiscountsDtos\":[],\"deliveryAmount\":10,\"discountDeliveryAmount\":10,\"isDiscountDelivery\":false,\"originalTotalAmount\":4400,\"packageAmount\":0,\"products\":[{\"activityDiscountsDtos\":[],\"attributeNames\":\"{\\\"attributeNames\\\":\\\"\\\"}\",\"cartGoodsUid\":\"eb8c7260-8ecb-44d1-9234-8d8bed0b0875\",\"classificationId\":\"\",\"classificationName\":\"\",\"comboProducts\":[{\"attributeNames\":\"{\\\"attributeNames\\\":\\\"\\\"}\",\"customerCode\":\"501642\",\"extraList\":[],\"hasProductCoupon\":false,\"isFixedProduct\":false,\"materialList\":[],\"originalPrice\":1700,\"parentProductId\":\"184437853099519288\",\"picture\":\"https://picture.sandload.cn/1598678546485.png\",\"productType\":6,\"qty\":2,\"skuId\":\"184437494035639613\",\"skuName\":\"中杯热美式\",\"spuId\":\"184437494035639613\",\"spuName\":\"中杯热美式\",\"stockLimit\":false,\"tax\":0.01,\"taxId\":\"\",\"totalDiscountAmount\":0,\"unit\":\"\",\"weight\":0.0},{\"attributeNames\":\"{\\\"attributeNames\\\":\\\"\\\"}\",\"customerCode\":\"901290\",\"extraList\":[],\"hasProductCoupon\":false,\"isFixedProduct\":false,\"materialList\":[],\"originalPrice\":500,\"parentProductId\":\"184437853099519288\",\"picture\":\"https://picture.sandload.cn/1598677404074.png\",\"productType\":6,\"qty\":2,\"skuId\":\"184436294373469463\",\"skuName\":\"经典芝士蛋糕\",\"spuId\":\"184436294373469463\",\"spuName\":\"经典芝士蛋糕\",\"stockLimit\":false,\"tax\":0.01,\"taxId\":\"\",\"totalDiscountAmount\":0,\"unit\":\"\",\"weight\":0.0}],\"customerCode\":\"901280\",\"extraList\":[],\"hasProductCoupon\":false,\"materialList\":[],\"originalPrice\":4400,\"picture\":\"https://picture.sandload.cn/1598678861518.png\",\"productCode\":\"901280\",\"productType\":6,\"qty\":2,\"salePrice\":4400,\"skuId\":\"184437853099519288\",\"skuName\":\"早餐啡常搭\",\"spuId\":\"184437853099519288\",\"spuName\":\"早餐啡常搭\",\"stockLimit\":false,\"tax\":0.01,\"taxId\":\"\",\"totalDiscountAmount\":0,\"unit\":\"\",\"weight\":0.0}],\"shareDiscountActivityDtos\":[],\"totalAmount\":4400,\"totalDiscountAmount\":0}", ShoppingCartGoodsDto.class),
new OrderExtendedReq(),
OrderClientType.SAAS,"www");
}
// @Test
// public void testAffirm() {
// OrderAffirmRequestVO requestVO = new OrderAffirmRequestVO();
// requestVO.setPartnerId("1864");
// requestVO.setShopId("8899");
// requestVO.setSessionId("123123");
// requestVO.setChannelType("saasmall");
// requestVO.setOid("16303606485084241800003");
// mallOrderService.orderAffirm(requestVO);
// }
@Test
public void testPaySuccess() {
//0元支付
String fmId = "SPAY" + ValidationCode.getRandomUuid();
PaysuccessNoticeMessage message = new PaysuccessNoticeMessage();
message.setResult_code(100);
message.setOut_trade_no(fmId);
message.setTrans_id("16303606485084241800003");
message.setTotal_fee(0);
message.setOpenid("oORZK5MHMBm78PO302NdRyzIY5K0");
message.setPlatform_coupon(0);
message.setMerchant_coupon(0);
mallOrderService.paySuccessCallback(message);
public void test() {
MultiOrderRefundRequest multiOrderRefundRequest = new MultiOrderRefundRequest();
multiOrderRefundRequest.setFmId("");
multiOrderRefundRequest.setVer3(false);
multiOrderRefundRequest.setVer("10");
multiOrderRefundRequest.setNotifyUrl("http://open-store-order-application-service.open-store.svc:9212/order/refundNotifyCallback");
multiOrderRefundRequest.setOperatorId("1");
multiOrderRefundRequest.setPartnerId("1864");
multiOrderRefundRequest.setRefundAmount(1L);
multiOrderRefundRequest.setRefundTradeNo("1604886134387{{$timestamp}}");
multiOrderRefundRequest.setStationId("1");
multiOrderRefundRequest.setStoreId("999999998");
multiOrderRefundRequest.setOutOrderNo("3900472893821604933666");
MultiOrderRefundResponse<MultiOrderRefundResponse.Data> multiOrderRefundResponseDto = mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest,"1864");
System.out.println(2345678);
}
@Test
public void testAffirm() {
OrderAffirmRequestVO requestVO = new OrderAffirmRequestVO();
requestVO.setPartnerId("1864");
requestVO.setShopId("8899");
requestVO.setSessionId("123123");
requestVO.setChannelType("saasmall");
requestVO.setOid("16303606485084241800003");
mallOrderService.orderAffirm(requestVO);
}
}
......@@ -65,7 +65,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.0.16.RELEASE</version>
<version>2.1.0-RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
......
......@@ -3,6 +3,7 @@ package cn.freemud.management.adapter;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
......@@ -42,6 +43,21 @@ public class PaymentSdkAdapter {
return refundRequestDTO;
}
public MultiOrderRefundRequest getMultiOrderPayRefundRequest(QueryOrdersResponse.DataBean.OrderBean orderBean) {
MultiOrderRefundRequest multiQueryRequest = new MultiOrderRefundRequest();
multiQueryRequest.setStationId("1");
multiQueryRequest.setPartnerId(orderBean.getCompanyId());
multiQueryRequest.setStoreId(orderBean.getShopId());
multiQueryRequest.setFmId("");
multiQueryRequest.setRefundAmount(orderBean.getAmount());
multiQueryRequest.setRefundTradeNo(getRefundSerialNo().toString());
multiQueryRequest.setStoreId(orderBean.getShopId());
multiQueryRequest.setNotifyUrl(refundNotifyCallback);
multiQueryRequest.setVer("10");
multiQueryRequest.setVer3(false);
return multiQueryRequest;
}
private Long getRefundSerialNo() {
return System.currentTimeMillis() + (int) (Math.random() * 9000) + 1000;
}
......
......@@ -5,11 +5,15 @@ import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
import com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest;
import com.freemud.sdk.api.assortment.payment.response.OrderRefundResponse;
......@@ -45,7 +49,8 @@ public class PaymentHandle {
private PaymentSdkAdapter paymentSdkAdapter;
@Autowired
private OrderSdkService orderSdkService;
@Autowired
private MulitiPaymentClient mulitiPaymentClient;
/**
* 退款
......@@ -125,4 +130,21 @@ public class PaymentHandle {
payRefundResponse.setRefundId(refundId.toString());
return payRefundResponse;
}
private PayRefundResponse handlePayRefundResponse(PayRefundStatus refundStatus, String refundId){
PayRefundResponse payRefundResponse = new PayRefundResponse();
payRefundResponse.setPayRefundStatus(refundStatus);
payRefundResponse.setRefundId(refundId.toString());
return payRefundResponse;
}
public PayRefundResponse multiRefund(QueryOrdersResponse.DataBean.OrderBean orderBean){
PayRefundStatus refundStatus=PayRefundStatus.SUCCESS;
MultiOrderRefundRequest multiOrderRefundRequest = paymentSdkAdapter.getMultiOrderPayRefundRequest(orderBean);
MultiOrderRefundResponse<MultiOrderRefundResponse.Data> multiOrderRefundResponse = mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest,orderBean.getCompanyId());
if (multiOrderRefundResponse == null || multiOrderRefundResponse.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.ORDER_PAY_RESPONSE_SUCCESS.equals(multiOrderRefundResponse.getCode())) {
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
}
return handlePayRefundResponse(refundStatus,multiOrderRefundRequest.getRefundTradeNo());
}
}
......@@ -2,6 +2,7 @@ package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.adapter.McCafeCouponAdapter;
import cn.freemud.management.adapter.PaymentSdkAdapter;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
......@@ -12,10 +13,14 @@ import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.service.OrderManagerService;
import cn.freemud.management.service.handle.*;
import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient;
import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.order.enums.ResponseResult;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
import com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -49,7 +54,6 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
@Autowired
private DeliveryHandle deliveryHandle;
/**
* 接单
*
......@@ -161,7 +165,12 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
//支付退款
PayRefundResponse refundResponse = new PayRefundResponse();
try {
refundResponse = paymentHandle.refund(request, orderBean);
if(orderBean.getPayChannelType() == "4"){
refundResponse = paymentHandle.refund(request, orderBean);
}else{
refundResponse = paymentHandle.multiRefund(orderBean);
}
} catch (OrderServiceException orderEx){ // 爱马哥兼容,不抛错
return ResponseUtil.error(orderEx.getResult());
}
......
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderClient
* @Package cn.freemud.service.thirdparty
* @Description:
* @author: liming.guo
* @date: 2018/8/10 16:06
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.management.thirdparty;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
import com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "payment-center-application-api",url = "${saas.paymentcenter.application.api.feign.url}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface MulitiPaymentClient {
/**
* 统一活动查询接口
*/
@PostMapping("/payment/application/refund")
MultiOrderRefundResponse paymentApplicationRefund(MultiOrderRefundRequest multiOrderRefundRequest, @RequestHeader("partnerId") String partnerId);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment