新增拉卡拉退款接口

This commit is contained in:
韩鹏辉 2023-06-12 14:59:24 +08:00
parent 704ab93093
commit 02b3038538
5 changed files with 83 additions and 6 deletions

View File

@ -22,6 +22,7 @@ import cn.pluss.platform.merchantMenberRecharge.MerchantMenberRechargeService;
import cn.pluss.platform.merchantOrder.MerchantOrderService;
import cn.pluss.platform.notice.NoticeService;
import cn.pluss.platform.pay.PayService;
import cn.pluss.platform.pos.BasePosReq;
import cn.pluss.platform.pos.PosTradeQueryReq;
import cn.pluss.platform.pos.ReturnFundsReq;
import cn.pluss.platform.ryx.pay.RyxPayService;
@ -473,14 +474,16 @@ public class MerchantOrderController {
@PostMapping(value = "orderList")
public Result<Object> posTradeQuery(HttpServletRequest request, @RequestBody PosTradeQueryReq req){
public Result<Object> posTradeQuery(HttpServletRequest request, @RequestBody BasePosReq req){
verify(req.getTimestamp(),req.getRequestId(),req.getAppId(),req.getToken());
DeviceStock deviceStock = deviceStockService.checkBind(req.getSn());
PosTradeQueryReq tradeQueryReq=JSONObject.parseObject(req.getReqData(),PosTradeQueryReq.class);
DeviceStock deviceStock = deviceStockService.checkBind(tradeQueryReq.getSn());
MsgException.checkNull(deviceStock,"不存在的设备信息");
MerchantBaseInfo merchantBaseInfoById = merchantBaseInfoService.getMerchantBaseInfoById(Integer.valueOf(deviceStock.getActMercId()));
MsgException.checkNull(merchantBaseInfoById, "该设备对应的商户信息不存在");
return merchantOrderService.posTradeQuery(req.getRequestId(),merchantBaseInfoById.getMerchantCode(),req.getDate(),req.getType(),req.getPage(),req.getSize());
return merchantOrderService.posTradeQuery(req.getRequestId(),merchantBaseInfoById.getMerchantCode(),tradeQueryReq.getDate(),tradeQueryReq.getType(),tradeQueryReq.getPage(),tradeQueryReq.getSize());
}

View File

@ -21,6 +21,11 @@ public class BasePosReq implements Serializable {
*/
private String token;
/**
* 具体参数
*/
private String reqData;
/**
* timestamp时间戳pos机
*/

View File

@ -4,8 +4,10 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;
import java.io.Serializable;
@Data
public class PosTradeQueryReq extends BasePosReq{
public class PosTradeQueryReq implements Serializable {
/**
* 订单号

View File

@ -255,7 +255,70 @@ public class LkLPayServiceImpl implements PayService {
@Override
public Map<String, Object> refundPay(MerchantOrder order, String mchNo) {
return null;
QueryWrapper<MerchantBaseInfo> baseQueyWrapper = new QueryWrapper<>();
baseQueyWrapper.eq("merchantCode", mchNo);
MerchantBaseInfo baseInfo = merchantBaseInfoMapper.selectOne(baseQueyWrapper);
MsgException.checkNull(baseInfo, "商户基本信息错误");
QueryWrapper<MerchantBackLkl> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("merchant_code", mchNo);
queryWrapper.eq("channel", "5");
queryWrapper.eq("user_no", LaKalaInterfaceImpl.userNo);
MerchantBackLkl merchantBackLkl = merchantBackLklMapper.selectOne(queryWrapper);
MsgException.checkNull(merchantBackLkl, "进件信息不存在");
String req_time = DateUtils.getSdfTimes();
Long order_amt = changeY2F(order.getConsumeFee());
String refundNo = "LKLR" + StringUtil.getBillno();
String body="{\n" +
" \"req_time\":\""+req_time+"\",\n" +
" \"version\":\"3.0\",\n" +
" \"out_org_code\":\""+lakalaConfig.getAppid()+"\",\n" +
" \"req_data\":{\n" +
" \"merchant_no\":\""+merchantBackLkl.getExternalCustomerNo()+"\",\n" +
" \"term_no\":\""+merchantBackLkl.getTermNos()+"\",\n" +
" \"out_trade_no\":\""+refundNo+"\",\n" +
" \"refund_amount\":\""+order_amt+"\",\n" +
" \"refund_reason\":\"退款\",\n" +
" \"origin_out_trade_no\":\""+order.getOrderNumber()+"\",\n" +
" \"location_info\":{\n" +
" \"request_ip\":\""+order.getIp()+"\",\n" +
" \"location\":\"+37.123456789,-121.123456789\"\n" +
" }\n" +
" }\n" +
"}\n" +
"\n";
Map<String, Object> result = new HashMap<>(4);
result.put("refundNo", refundNo);
result.put("status", "3");
result.put("code", ResultCode.FAIL.code());
String response = lklPayService.req(body, "api/v3/labs/relation/refund");
if(ObjectUtil.isNotEmpty(response)){
JSONObject object=JSONObject.parseObject(response);
if(object.containsKey("code")&&"BBS00000".equals(object.getString("code"))){
result.put("msg", "退款成功!");
result.put("data", object.getJSONObject("resp_data"));
result.put("status", "1");
result.put("code", ResultCode.SUCCESS.code());
return result;
}else {
result.put("msg", object.getString("msg"));
return result;
}
}
result.put("msg", "退款失败!");
return result;
}
@Override

View File

@ -1541,7 +1541,11 @@ public class MerchantOrderServiceImpl extends ServiceImpl<MerchantOrderMapper, M
resultMap = ryxPayService.refundPay(order, channel.getMerchantId());
} else if (channel.getChannel() == 4) {
resultMap = ysPayOldService.refundPay(order, channel.getMerchantId());
}else {
}else if(channel.getChannel()==5){
resultMap = lkLPayServiceImpl.refundPay(order,channel.getMerchantCode());
}
else {
MsgException.throwException("未知通道!");
}
if (ResultCode.SUCCESS.code() != (Integer) resultMap.get("code")) {