Commit bf901921 by 胡敬轩

储值卡支付回调后调储交

parent e3f3e283
...@@ -21,10 +21,8 @@ import cn.freemud.entities.bo.CreateOrderBONew; ...@@ -21,10 +21,8 @@ import cn.freemud.entities.bo.CreateOrderBONew;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.order.CreateOrderOperateDto; import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto; import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.pay.OrderPayResponse; import cn.freemud.entities.dto.order.UnifiedPayResponseDto;
import cn.freemud.entities.dto.pay.PayProductDto; import cn.freemud.entities.dto.pay.*;
import cn.freemud.entities.dto.pay.UnifiedOrderCom;
import cn.freemud.entities.dto.pay.UnifiedOrderRequest;
import cn.freemud.entities.dto.promotion.OrderBeanRequest; import cn.freemud.entities.dto.promotion.OrderBeanRequest;
import cn.freemud.entities.dto.promotion.ShoppingCartGoodsResponse; import cn.freemud.entities.dto.promotion.ShoppingCartGoodsResponse;
import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto; import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto;
...@@ -4023,4 +4021,14 @@ public class OrderAdapter { ...@@ -4023,4 +4021,14 @@ public class OrderAdapter {
return type; return type;
} }
public List<SvcPayItem> convertSvcPayItem(UnifiedPayResponseDto codePayResponse,String cardCode){
List<SvcPayItem> payItems = new ArrayList<>();
SvcPayItem payItem = new SvcPayItem();
payItem.setCardCode(cardCode);
payItem.setSvcTransId(codePayResponse.getPayTransId());
payItem.setTransId(codePayResponse.getFmId());
payItems.add(payItem);
return payItems;
}
} }
package cn.freemud.entities;
public class EdenResponse<T> {
private static final String SUCCESSCODE ="200";
protected String statusCode;
protected String message;
protected T result;
public EdenResponse() {
this.statusCode = SUCCESSCODE;
}
public EdenResponse(String statusCode) {
this.statusCode = statusCode;
}
public EdenResponse(String statusCode, String message) {
this.statusCode = statusCode;
this.message = message;
}
public EdenResponse(String ver, String statusCode, T result) {
this.statusCode = statusCode;
this.message = message;
this.result = result;
}
public String getStatusCode() {
return statusCode;
}
public void setStatusCode(String statusCode) {
this.statusCode = statusCode;
}
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
public T getResult() {
return this.result;
}
public void setResult(T result) {
this.result = result;
}
}
...@@ -20,7 +20,7 @@ public class UnifiedPayResponseDto { ...@@ -20,7 +20,7 @@ public class UnifiedPayResponseDto {
private Integer resultCode; private Integer resultCode;
private String resultMsg; private String resultMsg;
private String fmId; private String fmId;
private String payTransId; private String payTransId;//svc交易记录表id
private String payCode; private String payCode;
private String userId; private String userId;
private String originalChannel; private String originalChannel;
......
...@@ -97,6 +97,12 @@ public class OrderPayResponse { ...@@ -97,6 +97,12 @@ public class OrderPayResponse {
*/ */
private String channelPayId; private String channelPayId;
/**
* 储值卡流水明细 储值卡消费结果通知储值交易服务
*/
private List<SvcPayItem> svcPayItems;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class PayOrderBean { public static class PayOrderBean {
...@@ -131,5 +137,4 @@ public class OrderPayResponse { ...@@ -131,5 +137,4 @@ public class OrderPayResponse {
} }
} }
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderPayResponseDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: liming.guo
* @date: 2018/5/25 17:10
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.entities.dto.pay;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
//sdk 类迁移
@NoArgsConstructor
@Data
@ToString
public class SvcPayItem {
/**
* 支付流水号
*/
private String transId;
/**
* 卡号
*/
private String cardCode;
/**
* svc交易记录表id
*/
private String svcTransId;
}
package cn.freemud.entities.dto.pay.svc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Auther: Chenbin
* @Description:
* @CreateDate: Created in 10:39 2020/3/19
* @ModifyDate:
*/
@Data
public class ConsumeHistoryCreateRequest {
@ApiModelProperty("商户编号")
private String partnerId;
@ApiModelProperty("订单号")
private String orderCode;
@ApiModelProperty("用户id")
private String memberId;
@ApiModelProperty("储值卡流水号")
private List<String> cardRequestNo;
}
...@@ -12,9 +12,12 @@ ...@@ -12,9 +12,12 @@
*/ */
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import cn.freemud.entities.dto.pay.SvcPayItem;
import lombok.Data; import lombok.Data;
import lombok.ToString; import lombok.ToString;
import java.util.List;
@Data @Data
@ToString @ToString
public class NewPaysuccessNoticeMessage { public class NewPaysuccessNoticeMessage {
...@@ -86,4 +89,9 @@ public class NewPaysuccessNoticeMessage { ...@@ -86,4 +89,9 @@ public class NewPaysuccessNoticeMessage {
* 100 是成功 * 100 是成功
*/ */
private String resultCode; private String resultCode;
/**
* 储值卡流水明细
*/
private List<SvcPayItem> svcPayItems;
} }
...@@ -12,9 +12,12 @@ ...@@ -12,9 +12,12 @@
*/ */
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import cn.freemud.entities.dto.pay.SvcPayItem;
import lombok.Data; import lombok.Data;
import lombok.ToString; import lombok.ToString;
import java.util.List;
@Data @Data
@ToString @ToString
public class PaysuccessNoticeMessage { public class PaysuccessNoticeMessage {
...@@ -78,4 +81,9 @@ public class PaysuccessNoticeMessage { ...@@ -78,4 +81,9 @@ public class PaysuccessNoticeMessage {
* 消息来源 * 消息来源
*/ */
private Integer source; private Integer source;
/**
* 储值卡流水明细
*/
private List<SvcPayItem> svcPayItems;
} }
...@@ -8,8 +8,13 @@ import cn.freemud.entities.bo.CreateOrderBONew; ...@@ -8,8 +8,13 @@ import cn.freemud.entities.bo.CreateOrderBONew;
import cn.freemud.entities.db.OpenPlatformOrderConfig; import cn.freemud.entities.db.OpenPlatformOrderConfig;
import cn.freemud.entities.dto.ConfirmOrderDto; import cn.freemud.entities.dto.ConfirmOrderDto;
import cn.freemud.entities.dto.order.CreateCashierOrderDto; import cn.freemud.entities.dto.order.CreateCashierOrderDto;
import cn.freemud.entities.dto.pay.SvcPayItem;
import cn.freemud.entities.dto.pay.svc.ConsumeHistoryCreateRequest;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.order.*; import cn.freemud.entities.vo.order.CashierCheckResponseVo;
import cn.freemud.entities.vo.order.GetOrderConfigRequestVo;
import cn.freemud.entities.vo.order.PaymentConfigVo;
import cn.freemud.entities.vo.order.PlugInParameter;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.service.handle.SaasOrderHandle; import cn.freemud.management.service.handle.SaasOrderHandle;
...@@ -17,23 +22,24 @@ import cn.freemud.management.thirdparty.OrderCallbackClient; ...@@ -17,23 +22,24 @@ import cn.freemud.management.thirdparty.OrderCallbackClient;
import cn.freemud.manager.OpenPlatformOrderConfigManager; import cn.freemud.manager.OpenPlatformOrderConfigManager;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.*; import cn.freemud.service.*;
import cn.freemud.service.thirdparty.SvcTransactionClient;
import cn.freemud.service.universal.factory.CreateOrderServiceFactory; import cn.freemud.service.universal.factory.CreateOrderServiceFactory;
import cn.freemud.utils.RedisUtil; import cn.freemud.utils.RedisUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.enums.IappIdType; import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.log.ApiLog; import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties; import com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo; import com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo;
import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum; import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.MarketTypeEnum; import com.freemud.application.sdk.api.ordercenter.enums.MarketTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.NewOrderStatus; import com.freemud.application.sdk.api.ordercenter.enums.NewOrderStatus;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.sdk.api.assortment.order.util.LockUtils; import com.freemud.sdk.api.assortment.order.util.LockUtils;
import com.google.gson.Gson; import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils; import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -45,6 +51,7 @@ import java.util.Arrays; ...@@ -45,6 +51,7 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
...@@ -139,6 +146,8 @@ public class OrderAdapterServiceImpl { ...@@ -139,6 +146,8 @@ public class OrderAdapterServiceImpl {
private PayServiceImpl payService; private PayServiceImpl payService;
@Autowired @Autowired
private OpenPlatformOrderConfigManager openPlatformOrderConfigManager; private OpenPlatformOrderConfigManager openPlatformOrderConfigManager;
@Autowired
private SvcTransactionClient svcTransactionClient;
//获取下单实现对象 //获取下单实现对象
private OrderFactoryService getCreateOrderBean(AssortmentCustomerInfoVo assortmentCustomerInfoVo,CreateOrderVo createOrderVo){ private OrderFactoryService getCreateOrderBean(AssortmentCustomerInfoVo assortmentCustomerInfoVo,CreateOrderVo createOrderVo){
...@@ -354,6 +363,11 @@ public class OrderAdapterServiceImpl { ...@@ -354,6 +363,11 @@ public class OrderAdapterServiceImpl {
break; break;
} }
} }
//储值卡订单消费后通知储值交易服务
if(CollectionUtils.isNotEmpty(message.getSvcPayItems())){
sendSvcPayInfoToSvcTransaction(message.getSvcPayItems(),orderBean.getCompanyId(),orderBean.getOid(),orderBean.getUserId());
}
return result; return result;
} catch (Exception e) { } catch (Exception e) {
throw e; throw e;
...@@ -433,4 +447,20 @@ public class OrderAdapterServiceImpl { ...@@ -433,4 +447,20 @@ public class OrderAdapterServiceImpl {
return configStr; return configStr;
} }
private void sendSvcPayInfoToSvcTransaction(List<SvcPayItem> svcPayItems,String partnerId,String orderCode,String memberId){
ConsumeHistoryCreateRequest request = new ConsumeHistoryCreateRequest();
try {
request.setPartnerId(partnerId);
request.setOrderCode(orderCode);
request.setMemberId(memberId);
List<String> svcTransIds = svcPayItems.stream().map(SvcPayItem::getSvcTransId).collect(Collectors.toList());
request.setCardRequestNo(svcTransIds);
svcTransactionClient.consumeHistoryCreate(request);
}catch (Exception e){
ErrorLog.printErrorLog("sendSvcPayInfoToSvcTransaction","paySuccessCallback",request,e);
}
}
} }
...@@ -630,6 +630,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -630,6 +630,7 @@ public class OrderServiceImpl implements Orderservice {
message.setRuleId(newMessage.getRuleId()); message.setRuleId(newMessage.getRuleId());
message.setSource(PaySuccessSource.OUTSIDE.getSource()); message.setSource(PaySuccessSource.OUTSIDE.getSource());
message.setThirdPartTradeNo(message.getThirdPartTradeNo()); message.setThirdPartTradeNo(message.getThirdPartTradeNo());
message.setSvcPayItems(newMessage.getSvcPayItems());
String res = orderAdapterService.paySuccessCallback(message); String res = orderAdapterService.paySuccessCallback(message);
JSONObject jsonObject = JSONObject.parseObject(res); JSONObject jsonObject = JSONObject.parseObject(res);
if (jsonObject.containsKey("code")) { if (jsonObject.containsKey("code")) {
......
...@@ -240,6 +240,7 @@ public class PayServiceImpl { ...@@ -240,6 +240,7 @@ public class PayServiceImpl {
message.setPlatform_coupon(0); message.setPlatform_coupon(0);
message.setMerchant_coupon(0); message.setMerchant_coupon(0);
message.setSource(PaySuccessSource.OUTSIDE.getSource()); message.setSource(PaySuccessSource.OUTSIDE.getSource());
message.setSvcPayItems(orderPayResponse.getSvcPayItems());
orderAdapterService.paySuccessCallback(message); orderAdapterService.paySuccessCallback(message);
return createOrderResponse; return createOrderResponse;
} }
...@@ -709,6 +710,18 @@ public class PayServiceImpl { ...@@ -709,6 +710,18 @@ public class PayServiceImpl {
for (CombPayResponse.PayPlatform pt : payPlatforms) { for (CombPayResponse.PayPlatform pt : payPlatforms) {
if (!PayChannelType.SVC.getEbcode().equals(pt.getEbCode())) { if (!PayChannelType.SVC.getEbcode().equals(pt.getEbCode())) {
cashPay = pt; cashPay = pt;
}else{
SvcPayItem payItem = new SvcPayItem();
payItem.setCardCode(cardNo);
payItem.setSvcTransId(pt.getPlatformTradeNo());
payItem.setTransId(pt.getTransId());
if(CollectionUtils.isEmpty(orderPayResponse.getSvcPayItems())){
List<SvcPayItem> svcPayItems = new ArrayList<>();
svcPayItems.add(payItem);
orderPayResponse.setSvcPayItems(svcPayItems);
}else{
orderPayResponse.getSvcPayItems().add(payItem);
}
} }
orderPayResponse.setFmId(pt.getTransId()); orderPayResponse.setFmId(pt.getTransId());
orderPayResponse.setPayTransId(pt.getTransId()); orderPayResponse.setPayTransId(pt.getTransId());
...@@ -809,6 +822,7 @@ public class PayServiceImpl { ...@@ -809,6 +822,7 @@ public class PayServiceImpl {
orderPayResponse.setPartnerId(orderBean.getCompanyId()); orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid()); orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayChannelType(payChannelType); orderPayResponse.setPayChannelType(payChannelType);
orderPayResponse.setSvcPayItems(orderAdapter.convertSvcPayItem(codePayResponse,cardCode));
} }
return orderPayResponse; return orderPayResponse;
} }
......
package cn.freemud.service.thirdparty;
import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.entities.EdenResponse;
import cn.freemud.entities.dto.pay.svc.ConsumeHistoryCreateRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @Auther: hujx
* @Description: 储值交易服务
* @CreateDate: Created in 10:31 2020/3/19
* @ModifyDate:
*/
@FeignClient(name = "transaction-svc-application", url = "${fm.svcTransaction.feign.url:}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface SvcTransactionClient {
/**
* 储值卡订单消费后通知储值交易服务
*/
@PostMapping(value = "/svc/rechargeHistory/reduce")
@LogIgnoreFeign(logMessage="consumeHistoryCreate")
EdenResponse consumeHistoryCreate(ConsumeHistoryCreateRequest request);
}
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