@ -45,7 +45,9 @@ import com.hfkj.sysenum.merchant.MerchantStatusEnum;
import com.hfkj.sysenum.order.OrderPayTypeEnum ;
import com.hfkj.sysenum.order.OrderRefundStatusEnum ;
import org.apache.commons.lang3.StringUtils ;
import org.springframework.data.redis.core.RedisTemplate ;
import org.springframework.stereotype.Component ;
import org.springframework.transaction.annotation.Isolation ;
import org.springframework.transaction.annotation.Propagation ;
import org.springframework.transaction.annotation.Transactional ;
@ -54,6 +56,7 @@ import java.math.BigDecimal;
import java.util.* ;
import java.util.concurrent.ExecutorService ;
import java.util.concurrent.Executors ;
import java.util.concurrent.TimeUnit ;
import java.util.stream.Collectors ;
/ * *
@ -91,12 +94,15 @@ public class ApiGasOrderService {
private BsOrderRefundService orderRefundService ;
@Resource
private BsGasOilPriceService gasOilPriceService ;
@Resource
private RedisTemplate < String , Object > redisTemplate ;
private final String LOCK_KEY = "AGENT_API_PUSH_ORDER_LOCK_" ;
/ * *
* 推送加油订单
* @param request
* @return
* /
@Transactional ( propagation = Propagation . REQUIRES_NEW , rollbackFor = { RuntimeException . class } )
@Transactional ( propagation = Propagation . NEVER )
public ResponseOrderPushModel pushOrder ( Long agentId , RequestOrderPushModel request ) throws Exception {
// 交易油站权限
BsAgentMer agentMer = agentMerService . getDetailByAgent ( agentId , request . getGasNo ( ) ) ;
@ -131,94 +137,129 @@ public class ApiGasOrderService {
if ( agent = = null ) {
throw ErrorHelp . genException ( SysCode . OpenApi , ErrorCode . COMMON_ERROR , "未知的接入方" ) ;
}
// 创建加油订单
BsGasOrder gasOrder = new BsGasOrder ( ) ;
gasOrder . setAgentId ( agent . getId ( ) ) ;
gasOrder . setAgentName ( agent . getName ( ) ) ;
gasOrder . setAbnormal ( false ) ;
gasOrder . setMerNo ( gasDetail . getMerNo ( ) ) ;
gasOrder . setChannelType ( gasDetail . getSourceType ( ) ) ;
gasOrder . setOrderNo ( request . getOrderNo ( ) ) ;
gasOrder . setUserPhone ( request . getUserPhone ( ) ) ;
gasOrder . setMerChainBrandId ( gasDetail . getChainBrandId ( ) ) ;
gasOrder . setMerChainBrandName ( gasDetail . getChainBrandName ( ) ) ;
gasOrder . setMerId ( gasDetail . getId ( ) ) ;
gasOrder . setMerName ( gasDetail . getMerName ( ) ) ;
gasOrder . setMerAddress ( gasDetail . getAddress ( ) ) ;
gasOrder . setStatus ( OrderOilStatus . STATUS2 . getNumber ( ) ) ;
gasOrder . setReceiptStatus ( GasOrderReceiptStatusEnum . status0 . getStatus ( ) ) ;
// 油价信息
gasOrder . setGasRefuelPrice ( request . getRefuelingAmount ( ) ) ;
gasOrder . setGasOilNo ( request . getOilNo ( ) ) ;
gasOrder . setGasGunNo ( request . getGunNo ( ) ) ;
gasOrder . setGasOilType ( oilPrice . getOilType ( ) ) ;
gasOrder . setGasPriceGun ( oilPrice . getPriceGun ( ) ) ;
gasOrder . setGasPriceVip ( oilPrice . getPriceVip ( ) ) ;
gasOrder . setGasPriceCost ( oilPrice . getPriceGun ( ) ) ;
gasOrder . setGasPriceOfficial ( oilPrice . getPriceOfficial ( ) ) ;
gasOrder . setGasPricePlatform ( oilPrice . getPriceGun ( ) ) ;
gasOrder . setGasDiscount ( new BigDecimal ( "0" ) ) ;
gasOrder . setGasOilSubsidy ( new BigDecimal ( "0" ) ) ;
gasOrder . setGasLitersPreferences ( new BigDecimal ( "0" ) ) ;
gasOrder . setGasPricePreferences ( new BigDecimal ( "0" ) ) ;
gasOrder . setCreateType ( GasOrderCreateType . TYPE2 . getNumber ( ) ) ;
gasOrder . setGasOilLiters ( gasOrder . getGasRefuelPrice ( ) . divide ( gasOrder . getGasPriceGun ( ) , 2 , BigDecimal . ROUND_HALF_UP ) ) ;
// 结算信息
gasOrder . setTotalDeductionPrice ( new BigDecimal ( "0" ) ) ;
gasOrder . setDeductionCouponPrice ( new BigDecimal ( "0" ) ) ;
gasOrder . setDeductionOilPrice ( new BigDecimal ( "0" ) ) ;
gasOrder . setPayablePrice ( request . getRefuelingAmount ( ) ) ;
gasOrder . setGasRefuelPrice ( request . getRefuelingAmount ( ) ) ;
gasOrder . setGasServiceFeeRate ( new BigDecimal ( "0" ) ) ;
gasOrder . setGasServiceFeePrice ( new BigDecimal ( "0" ) ) ;
if ( gasOrder . getChannelType ( ) . equals ( MerchantSourceTypeEnum . type1 . getNumber ( ) ) ) {
// 油站结算 公式 1. 加油升数 * (油枪价 - 优惠价) = 优惠金额 2. 加油金额 - 优惠金额 = 扣款金额
BigDecimal gasSettlePrice = gasOrder . getGasRefuelPrice ( ) . subtract (
// 优惠金额
gasOrder . getGasOilLiters ( ) . multiply ( oilPrice . getPriceGun ( ) . subtract ( oilPrice . getPriceVip ( ) ) ) ) ;
gasOrder . setGasSettlePrice ( gasSettlePrice ) ;
return createOrder ( agent , gasDetail , oilPrice , request ) ;
}
/ * *
* 创建订单
* /
@Transactional ( propagation = Propagation . REQUIRES_NEW , rollbackFor = { RuntimeException . class } )
public ResponseOrderPushModel createOrder ( BsAgent agent , BsMerchant gasDetail , GasOilPriceModel oilPrice , RequestOrderPushModel request ) throws InterruptedException {
// 锁编号
String lockKey = LOCK_KEY + agent . getId ( ) ;
// 获取锁
Boolean lock = redisTemplate . opsForValue ( ) . setIfAbsent ( lockKey , "" ) ;
if ( Boolean . TRUE . equals ( lock ) ) {
try {
// 锁超时时间 15秒
redisTemplate . expire ( lockKey , 15 , TimeUnit . SECONDS ) ;
// 创建加油订单
BsGasOrder gasOrder = new BsGasOrder ( ) ;
gasOrder . setAgentId ( agent . getId ( ) ) ;
gasOrder . setAgentName ( agent . getName ( ) ) ;
gasOrder . setAbnormal ( false ) ;
gasOrder . setMerNo ( gasDetail . getMerNo ( ) ) ;
gasOrder . setChannelType ( gasDetail . getSourceType ( ) ) ;
gasOrder . setOrderNo ( request . getOrderNo ( ) ) ;
gasOrder . setUserPhone ( request . getUserPhone ( ) ) ;
gasOrder . setMerChainBrandId ( gasDetail . getChainBrandId ( ) ) ;
gasOrder . setMerChainBrandName ( gasDetail . getChainBrandName ( ) ) ;
gasOrder . setMerId ( gasDetail . getId ( ) ) ;
gasOrder . setMerName ( gasDetail . getMerName ( ) ) ;
gasOrder . setMerAddress ( gasDetail . getAddress ( ) ) ;
gasOrder . setStatus ( OrderOilStatus . STATUS2 . getNumber ( ) ) ;
gasOrder . setReceiptStatus ( GasOrderReceiptStatusEnum . status0 . getStatus ( ) ) ;
// 油价信息
gasOrder . setGasRefuelPrice ( request . getRefuelingAmount ( ) ) ;
gasOrder . setGasOilNo ( request . getOilNo ( ) ) ;
gasOrder . setGasGunNo ( request . getGunNo ( ) ) ;
gasOrder . setGasOilType ( oilPrice . getOilType ( ) ) ;
gasOrder . setGasPriceGun ( oilPrice . getPriceGun ( ) ) ;
gasOrder . setGasPriceVip ( oilPrice . getPriceVip ( ) ) ;
gasOrder . setGasPriceCost ( oilPrice . getPriceGun ( ) ) ;
gasOrder . setGasPriceOfficial ( oilPrice . getPriceOfficial ( ) ) ;
gasOrder . setGasPricePlatform ( oilPrice . getPriceGun ( ) ) ;
gasOrder . setGasDiscount ( new BigDecimal ( "0" ) ) ;
gasOrder . setGasOilSubsidy ( new BigDecimal ( "0" ) ) ;
gasOrder . setGasLitersPreferences ( new BigDecimal ( "0" ) ) ;
gasOrder . setGasPricePreferences ( new BigDecimal ( "0" ) ) ;
gasOrder . setCreateType ( GasOrderCreateType . TYPE2 . getNumber ( ) ) ;
gasOrder . setGasOilLiters ( gasOrder . getGasRefuelPrice ( ) . divide ( gasOrder . getGasPriceGun ( ) , 2 , BigDecimal . ROUND_HALF_UP ) ) ;
// 结算信息
gasOrder . setTotalDeductionPrice ( new BigDecimal ( "0" ) ) ;
gasOrder . setDeductionCouponPrice ( new BigDecimal ( "0" ) ) ;
gasOrder . setDeductionOilPrice ( new BigDecimal ( "0" ) ) ;
gasOrder . setPayablePrice ( request . getRefuelingAmount ( ) ) ;
gasOrder . setGasRefuelPrice ( request . getRefuelingAmount ( ) ) ;
gasOrder . setGasServiceFeeRate ( new BigDecimal ( "0" ) ) ;
gasOrder . setGasServiceFeePrice ( new BigDecimal ( "0" ) ) ;
if ( gasOrder . getChannelType ( ) . equals ( MerchantSourceTypeEnum . type1 . getNumber ( ) ) ) {
// 油站结算 公式 1. 加油升数 * (油枪价 - 优惠价) = 优惠金额 2. 加油金额 - 优惠金额 = 扣款金额
BigDecimal gasSettlePrice = gasOrder . getGasRefuelPrice ( ) . subtract (
// 优惠金额
gasOrder . getGasOilLiters ( ) . multiply ( oilPrice . getPriceGun ( ) . subtract ( oilPrice . getPriceVip ( ) ) ) ) ;
gasOrder . setGasSettlePrice ( gasSettlePrice ) ;
} else {
gasOrder . setGasSettlePrice ( gasOrder . getGasRefuelPrice ( ) ) ;
}
gasOrder . setGasAgentSettlePrice ( gasOrder . getGasRefuelPrice ( ) ) ;
// 油站是否开启班组
BsGasClassGroupTask groupTask = gasClassGroupTaskService . getCurrentTaskByMerId ( gasDetail . getId ( ) ) ;
if ( groupTask ! = null ) {
gasOrder . setGasClassGroupId ( groupTask . getGasClassGroupId ( ) ) ;
gasOrder . setGasClassGroupName ( groupTask . getGasClassGroupName ( ) ) ;
gasOrder . setGasClassGroupTaskId ( groupTask . getId ( ) ) ;
}
gasOrderService . addGasOrder ( gasOrder ) ;
// 代理商扣款
Map < String , Object > consumeParam = new HashMap < > ( ) ;
consumeParam . put ( "sourceType" , MerchantAccountRecordSourceTypeEnum . type2 . getType ( ) ) ;
consumeParam . put ( "sourceOrderNo" , gasOrder . getOrderNo ( ) ) ;
consumeParam . put ( "sourceOrderContent" , "加油订单:" + gasOrder . getOrderNo ( ) ) ;
agentApiAccountService . consume ( agent . getId ( ) , gasOrder . getGasAgentSettlePrice ( ) , consumeParam ) ;
// 处理支付后的加油业务
oilHandle ( gasOrder ) ;
// 加油业务是否异常
if ( gasOrder . getAbnormal ( ) . equals ( true ) ) {
throw ErrorHelp . genException ( SysCode . OpenApi , ErrorCode . COMMON_ERROR , gasOrder . getAbnormalContent ( ) ) ;
}
ResponseOrderPushModel response = new ResponseOrderPushModel ( ) ;
response . setOrderNo ( gasOrder . getOrderNo ( ) ) ;
response . setChannelType ( gasOrder . getChannelType ( ) ) ;
response . setChannelOrderNo ( gasOrder . getChannelOrderNo ( ) ) ;
// 释放锁
redisTemplate . delete ( lockKey ) ;
return response ;
} catch ( BaseException e ) {
// 释放锁
redisTemplate . delete ( lockKey ) ;
throw ErrorHelp . genException ( SysCode . OpenApi , ErrorCode . COMMON_ERROR , e . getErrorMsg ( ) ) ;
} catch ( Exception e ) {
// 释放锁
redisTemplate . delete ( lockKey ) ;
throw ErrorHelp . genException ( SysCode . OpenApi , ErrorCode . COMMON_ERROR , "创建订单失败" ) ;
}
} else {
gasOrder . setGasSettlePrice ( gasOrder . getGasRefuelPrice ( ) ) ;
}
gasOrder . setGasAgentSettlePrice ( gasOrder . getGasRefuelPrice ( ) ) ;
// 油站是否开启班组
BsGasClassGroupTask groupTask = gasClassGroupTaskService . getCurrentTaskByMerId ( gasDetail . getId ( ) ) ;
if ( groupTask ! = null ) {
gasOrder . setGasClassGroupId ( groupTask . getGasClassGroupId ( ) ) ;
gasOrder . setGasClassGroupName ( groupTask . getGasClassGroupName ( ) ) ;
gasOrder . setGasClassGroupTaskId ( groupTask . getId ( ) ) ;
Thread . sleep ( 100 ) ;
createOrder ( agent , gasDetail , oilPrice , request ) ;
}
gasOrderService . addGasOrder ( gasOrder ) ;
// 代理商扣款
Map < String , Object > consumeParam = new HashMap < > ( ) ;
consumeParam . put ( "sourceType" , MerchantAccountRecordSourceTypeEnum . type2 . getType ( ) ) ;
consumeParam . put ( "sourceOrderNo" , gasOrder . getOrderNo ( ) ) ;
consumeParam . put ( "sourceOrderContent" , "加油订单:" + gasOrder . getOrderNo ( ) ) ;
agentApiAccountService . consume ( agentId , gasOrder . getGasAgentSettlePrice ( ) , consumeParam ) ;
// 处理支付后的加油业务
oilHandle ( gasOrder ) ;
// 加油业务是否异常
if ( gasOrder . getAbnormal ( ) . equals ( true ) ) {
throw ErrorHelp . genException ( SysCode . OpenApi , ErrorCode . COMMON_ERROR , gasOrder . getAbnormalContent ( ) ) ;
}
ResponseOrderPushModel response = new ResponseOrderPushModel ( ) ;
response . setOrderNo ( gasOrder . getOrderNo ( ) ) ;
response . setChannelType ( gasOrder . getChannelType ( ) ) ;
response . setChannelOrderNo ( gasOrder . getChannelOrderNo ( ) ) ;
return response ;
throw ErrorHelp . genException ( SysCode . OpenApi , ErrorCode . COMMON_ERROR , "创建加油订单失败" ) ;
}
/ * *
* 退款订单
* @param request
* @return
* @throws Exception
* /
@Transactional ( propagation = Propagation . REQUIRES_NEW , rollbackFor = { RuntimeException . class } )
@Transactional ( propagation = Propagation . REQUIRES_NEW , isolation = Isolation . SERIALIZABLE , rollbackFor = { RuntimeException . class } )
public String refundOrder ( Long agentId , RequestOrderRefundModel request ) {
// 查询加油订单
BsGasOrder gasOrder = gasOrderService . getDetailByOrderNo ( request . getOrderNo ( ) ) ;
@ -264,53 +305,53 @@ public class ApiGasOrderService {
singleThreadExecutor . submit ( new Runnable ( ) {
@Override
public void run ( ) {
if ( gasOrder . getChannelType ( ) . equals ( MerchantSourceTypeEnum . type2 . getNumber ( ) ) ) {
// 团油
try {
// 请求团油渠道申请退款
JSONObject object = NewLinkRequestService . refuelingOrderRefund ( gasOrder . getUserPhone ( ) , gasOrder . getOrderNo ( ) , orderRefund . getRefundRemark ( ) ) ;
if ( object = = null | | ! object . getString ( "code" ) . equals ( "200" ) ) {
gasOrder . setAbnormal ( true ) ;
gasOrder . setAbnormalContent ( "渠道申请退款失败!原因:" + object . getString ( "message" ) ) ;
gasOrderService . updateGasOrder ( gasOrder ) ;
try {
// 退款金额
refundPrice ( gasOrder , orderRefund ) ;
orderRefund . setRefundStatus ( OrderRefundStatusEnum . status2 . getCode ( ) ) ;
orderRefund . setFinishTime ( new Date ( ) ) ;
orderRefundService . editData ( orderRefund ) ;
gasOrder . setStatus ( OrderOilStatus . STATUS4 . getNumber ( ) ) ;
gasOrder . setRefundTime ( orderRefund . getFinishTime ( ) ) ;
gasOrderService . updateGasOrder ( gasOrder ) ;
} catch ( BaseException e ) {
orderRefund . setRefundStatus ( OrderRefundStatusEnum . status3 . getCode ( ) ) ;
orderRefund . setRefundFailReason ( "退款失败!" ) ;
orderRefundService . editData ( orderRefund ) ;
gasOrder . setStatus ( OrderOilStatus . STATUS6 . getNumber ( ) ) ;
gasOrder . setReceiptFailRemark ( orderRefund . getRefundFailReason ( ) ) ;
gasOrderService . updateGasOrder ( gasOrder ) ;
throw ErrorHelp . genException ( SysCode . OpenApi , ErrorCode . COMMON_ERROR , e . getErrorMsg ( ) ) ;
} catch ( Exception e ) {
orderRefund . setRefundStatus ( OrderRefundStatusEnum . status3 . getCode ( ) ) ;
orderRefund . setRefundFailReason ( "退款失败!" ) ;
orderRefundService . editData ( orderRefund ) ;
gasOrder . setStatus ( OrderOilStatus . STATUS6 . getNumber ( ) ) ;
gasOrder . setReceiptFailRemark ( orderRefund . getRefundFailReason ( ) ) ;
gasOrderService . updateGasOrder ( gasOrder ) ;
throw ErrorHelp . genException ( SysCode . OpenApi , ErrorCode . COMMON_ERROR , "请求退款失败" ) ;
} finally {
// 退款成功通知
if ( gasOrder . getStatus ( ) . equals ( OrderOilStatus . STATUS4 . getNumber ( ) ) ) {
// 代理参数
BsAgentApiParam apiParam = agentApiParamService . getParamByAppId ( request . getAppId ( ) ) ;
if ( apiParam ! = null & & StringUtils . isNotBlank ( apiParam . getOrderRefundNotify ( ) ) ) {
// 通知数据
OrderRefundNotifyModel refundNotify = new OrderRefundNotifyModel ( ) ;
refundNotify . setOrderNo ( orderRefund . getOrderNo ( ) ) ;
refundNotify . setChannelType ( gasOrder . getChannelType ( ) ) ;
refundNotify . setChannelOrderNo ( gasOrder . getChannelOrderNo ( ) ) ;
refundNotify . setRefundResult ( orderRefund . getRefundStatus ( ) = = 2 ? true : false ) ;
refundNotify . setRefundFailReason ( orderRefund . getRefundFailReason ( ) ) ;
refundNotify . setSign ( SignatureUtil . createSign ( refundNotify , apiParam . getAppSecret ( ) ) ) ;
HttpsUtils . doApiPost ( apiParam . getOrderRefundNotify ( ) , JSONObject . parseObject ( JSONObject . toJSONString ( refundNotify ) , JSONObject . class ) ) ;
}
} catch ( Exception e ) {
throw ErrorHelp . genException ( SysCode . OpenApi , ErrorCode . COMMON_ERROR , "请求退款失败" ) ;
}
} else {
try {
// 退款
agentApiAccountService . refund ( gasOrder . getAgentId ( ) , gasOrder . getGasRefuelPrice ( ) , orderRefund ) ;
orderRefund . setRefundStatus ( OrderRefundStatusEnum . status2 . getCode ( ) ) ;
orderRefund . setFinishTime ( new Date ( ) ) ;
orderRefundService . editData ( orderRefund ) ;
gasOrder . setStatus ( OrderOilStatus . STATUS4 . getNumber ( ) ) ;
gasOrder . setRefundTime ( orderRefund . getFinishTime ( ) ) ;
gasOrderService . updateGasOrder ( gasOrder ) ;
} catch ( Exception e ) {
orderRefund . setRefundStatus ( OrderRefundStatusEnum . status3 . getCode ( ) ) ;
orderRefund . setRefundFailReason ( "退款失败!" ) ;
orderRefundService . editData ( orderRefund ) ;
gasOrder . setStatus ( OrderOilStatus . STATUS6 . getNumber ( ) ) ;
gasOrder . setReceiptFailRemark ( orderRefund . getRefundFailReason ( ) ) ;
gasOrderService . updateGasOrder ( gasOrder ) ;
}
// 退款通知
// 代理参数
BsAgentApiParam apiParam = agentApiParamService . getParamByAppId ( request . getAppId ( ) ) ;
if ( apiParam ! = null & & StringUtils . isNotBlank ( apiParam . getOrderRefundNotify ( ) ) ) {
// 通知数据
OrderRefundNotifyModel refundNotify = new OrderRefundNotifyModel ( ) ;
refundNotify . setOrderNo ( orderRefund . getOrderNo ( ) ) ;
refundNotify . setChannelType ( gasOrder . getChannelType ( ) ) ;
refundNotify . setChannelOrderNo ( gasOrder . getChannelOrderNo ( ) ) ;
refundNotify . setRefundResult ( orderRefund . getRefundStatus ( ) = = 2 ? true : false ) ;
refundNotify . setRefundFailReason ( orderRefund . getRefundFailReason ( ) ) ;
refundNotify . setSign ( SignatureUtil . createSign ( refundNotify , apiParam . getAppSecret ( ) ) ) ;
HttpsUtils . doPost ( apiParam . getOrderRefundNotify ( ) , JSONObject . parseObject ( JSONObject . toJSONString ( refundNotify ) , JSONObject . class ) ) ;
}
}
}
@ -318,6 +359,49 @@ public class ApiGasOrderService {
return "ok" ;
}
/ * *
* 退款金额
* @param gasOrder
* @param orderRefund
* @return
* /
private void refundPrice ( BsGasOrder gasOrder , BsOrderRefund orderRefund ) {
if ( gasOrder . getChannelType ( ) . equals ( MerchantSourceTypeEnum . type2 . getNumber ( ) ) ) {
// 团油
try {
// 请求团油渠道申请退款
JSONObject object = NewLinkRequestService . refuelingOrderRefund ( gasOrder . getUserPhone ( ) , gasOrder . getOrderNo ( ) , orderRefund . getRefundRemark ( ) ) ;
if ( object = = null | | ! object . getString ( "code" ) . equals ( "200" ) ) {
gasOrder . setAbnormal ( true ) ;
gasOrder . setAbnormalContent ( "渠道申请退款失败!原因:" + object . getString ( "message" ) ) ;
gasOrderService . updateGasOrder ( gasOrder ) ;
}
} catch ( Exception e ) {
throw ErrorHelp . genException ( SysCode . OpenApi , ErrorCode . COMMON_ERROR , "请求退款失败" ) ;
}
} else {
try {
// 代理商退款退款
agentApiAccountService . refund ( gasOrder . getAgentId ( ) , gasOrder . getGasRefuelPrice ( ) , orderRefund ) ;
// 退款到油站
if ( gasOrder . getChannelType ( ) . equals ( MerchantSourceTypeEnum . type1 . getNumber ( ) ) ) {
merchantAccountService . refund ( gasOrder . getMerNo ( ) , gasOrder . getGasSettlePrice ( ) , orderRefund ) ;
}
orderRefund . setRefundStatus ( OrderRefundStatusEnum . status2 . getCode ( ) ) ;
orderRefund . setFinishTime ( new Date ( ) ) ;
orderRefundService . editData ( orderRefund ) ;
gasOrder . setStatus ( OrderOilStatus . STATUS4 . getNumber ( ) ) ;
gasOrder . setRefundTime ( orderRefund . getFinishTime ( ) ) ;
gasOrderService . updateGasOrder ( gasOrder ) ;
} catch ( Exception e ) {
throw ErrorHelp . genException ( SysCode . OpenApi , ErrorCode . COMMON_ERROR , "请求退款失败" ) ;
}
}
}
/ * *
* 查询订单详情
* @param request