Commit 3bd524e9b347253f343213b07e29f0713b3172ab

Authored by huanggang
1 parent dfffe8a7

rtsmart payment result api

cashier-boss/src/main/java/com/diligrp/cashier/boss/controller/CashierDeskController.java
@@ -2,10 +2,13 @@ package com.diligrp.cashier.boss.controller; @@ -2,10 +2,13 @@ package com.diligrp.cashier.boss.controller;
2 2
3 import com.diligrp.cashier.boss.domain.CashierOrderDTO; 3 import com.diligrp.cashier.boss.domain.CashierOrderDTO;
4 import com.diligrp.cashier.boss.domain.CashierPaymentUrl; 4 import com.diligrp.cashier.boss.domain.CashierPaymentUrl;
  5 +import com.diligrp.cashier.boss.domain.ZrPaymentResult;
5 import com.diligrp.cashier.boss.service.ICashierDeskService; 6 import com.diligrp.cashier.boss.service.ICashierDeskService;
6 import com.diligrp.cashier.boss.service.IMerchantService; 7 import com.diligrp.cashier.boss.service.IMerchantService;
7 import com.diligrp.cashier.boss.util.CashierOrderConverter; 8 import com.diligrp.cashier.boss.util.CashierOrderConverter;
  9 +import com.diligrp.cashier.mall.service.biz.PayNotifyService;
8 import com.diligrp.cashier.pipeline.domain.OnlinePaymentStatus; 10 import com.diligrp.cashier.pipeline.domain.OnlinePaymentStatus;
  11 +import com.diligrp.cashier.pipeline.type.PaymentState;
9 import com.diligrp.cashier.shared.domain.Message; 12 import com.diligrp.cashier.shared.domain.Message;
10 import com.diligrp.cashier.shared.util.AssertUtils; 13 import com.diligrp.cashier.shared.util.AssertUtils;
11 import com.diligrp.cashier.trade.domain.*; 14 import com.diligrp.cashier.trade.domain.*;
@@ -25,6 +28,9 @@ public class CashierDeskController { @@ -25,6 +28,9 @@ public class CashierDeskController {
25 @Resource 28 @Resource
26 private ICashierDeskService cashierDeskService; 29 private ICashierDeskService cashierDeskService;
27 30
  31 + @Resource
  32 + private PayNotifyService payNotifyService;
  33 +
28 @RequestMapping("/submitOrder") 34 @RequestMapping("/submitOrder")
29 public Message<?> submitOrder(@RequestBody CashierOrderDTO request) { 35 public Message<?> submitOrder(@RequestBody CashierOrderDTO request) {
30 // 基本参数校验 36 // 基本参数校验
@@ -71,6 +77,22 @@ public class CashierDeskController { @@ -71,6 +77,22 @@ public class CashierDeskController {
71 return Message.success(response); 77 return Message.success(response);
72 } 78 }
73 79
  80 + /**
  81 + * 中瑞对接大润发查支付状态接口
  82 + * 大润发支付成功页面验签功能会限制有效期3分钟, 只能在查询状态时返回大润发成功页面(生成签名), 否则有超时风险
  83 + * 为了保证收银台后端的统一性, 新增单独接口查询状态
  84 + */
  85 + @RequestMapping(value = "/zrPaymentState")
  86 + public Message<?> zrPaymentState(@RequestParam("paymentId") String paymentId,
  87 + @RequestParam(name = "mode", required = false) String mode) {
  88 +
  89 + OnlinePaymentResult response = cashierDeskService.queryPaymentState(paymentId, mode);
  90 + String redirectUrl = PaymentState.SUCCESS.equalTo(response.getState()) ?
  91 + payNotifyService.redirectUrl(response.getTradeId()) : null;
  92 +
  93 + return Message.success(new ZrPaymentResult(response, redirectUrl));
  94 + }
  95 +
74 @RequestMapping(value = "/orderRefund") 96 @RequestMapping(value = "/orderRefund")
75 public Message<?> requestRefund(@RequestBody OnlineRefundDTO request) { 97 public Message<?> requestRefund(@RequestBody OnlineRefundDTO request) {
76 AssertUtils.notEmpty(request.getTradeId(), "tradeId missed"); 98 AssertUtils.notEmpty(request.getTradeId(), "tradeId missed");
cashier-boss/src/main/java/com/diligrp/cashier/boss/domain/ZrPaymentResult.java 0 → 100644
  1 +package com.diligrp.cashier.boss.domain;
  2 +
  3 +import com.diligrp.cashier.trade.domain.OnlinePaymentResult;
  4 +
  5 +/**
  6 + * 中瑞对接大润发查支付状态领域模型
  7 + * 大润发支付成功页面验签功能会限制有效期3分钟, 只能在查询状态时返回大润发成功页面(生成签名), 否则有超时风险
  8 + * 为了保证收银台后端的统一性, 新增单独接口查询状态
  9 + */
  10 +public class ZrPaymentResult extends OnlinePaymentResult {
  11 + // 大润发支付成功页面地址
  12 + private final String redirectUrl;
  13 +
  14 + public ZrPaymentResult(OnlinePaymentResult result, String redirectUrl) {
  15 + super(result.getTradeId(), result.getPaymentId(), result.getState(), result.getOutTradeNo(),
  16 + result.getOutPayType(), result.getPayerId(), result.getWhen(), result.getMessage());
  17 + this.redirectUrl = redirectUrl;
  18 + }
  19 +
  20 + public String getRedirectUrl() {
  21 + return redirectUrl;
  22 + }
  23 +}