提交 2bfa8d94 authored 作者: aiqingguo's avatar aiqingguo

承运借款流程-宁波银行

上级 9a76d588
...@@ -17,6 +17,7 @@ public enum NbBankRecordEnum { ...@@ -17,6 +17,7 @@ public enum NbBankRecordEnum {
QUERY_ORDER(3, "交易结果查询"), QUERY_ORDER(3, "交易结果查询"),
NOTIFY_MERCHANT(4, "异步通知交易结果"), NOTIFY_MERCHANT(4, "异步通知交易结果"),
FUND_TRANSFER_ORDER(5, "云账簿资金划转"), FUND_TRANSFER_ORDER(5, "云账簿资金划转"),
REFUND(6, "退款"),
; ;
private final Integer code; private final Integer code;
......
...@@ -26,25 +26,39 @@ public class TempBankController { ...@@ -26,25 +26,39 @@ public class TempBankController {
@Autowired @Autowired
private NbBankService bankService; private NbBankService bankService;
@ApiOperation(value = "directBankTransferOrder", notes = "<br>By:艾庆国") @ApiOperation(value = "转账", notes = "<br>By:艾庆国")
@RequestMapping(value = "/directBankTransferOrder", method = RequestMethod.POST) @RequestMapping(value = "/directBankTransferOrder", method = RequestMethod.POST)
public Result<NbBankOrderPayResultVO> directBankTransferOrder() throws Exception { public Result<NbBankOrderPayResultVO> directBankTransferOrder() throws Exception {
return Result.ok(bankService.orderPay(1)); return Result.ok(bankService.orderPay(1));
} }
@ApiOperation(value = "unionPayDirectOrder", notes = "<br>By:艾庆国") @ApiOperation(value = "订单支付", notes = "<br>By:艾庆国")
@RequestMapping(value = "/unionPayDirectOrder", method = RequestMethod.POST) @RequestMapping(value = "/unionPayDirectOrder", method = RequestMethod.POST)
public Result<NbBankOrderPayResultVO> unionPayDirectOrder() throws Exception { public Result<NbBankOrderPayResultVO> unionPayDirectOrder() throws Exception {
return Result.ok(bankService.orderPay(2)); return Result.ok(bankService.orderPay(2));
} }
@ApiOperation(value = "queryOrder", notes = "<br>By:艾庆国") @ApiOperation(value = "查询", notes = "<br>By:艾庆国")
@RequestMapping(value = "/queryOrderTest", method = RequestMethod.POST) @RequestMapping(value = "/queryOrder", method = RequestMethod.POST)
public Result<NbBankOrderPayStatusResultVO> queryOrderTest(String merSeqNo) throws Exception { public Result<NbBankOrderPayStatusResultVO> queryOrder(String merSeqNo) throws Exception {
return Result.ok(bankService.getOrderStatus(merSeqNo)); return Result.ok(bankService.getOrderStatus(merSeqNo));
} }
@ApiOperation(value = "调账", notes = "<br>By:艾庆国")
@RequestMapping(value = "/transferOrder", method = RequestMethod.POST)
public Result<NbBankOrderPayStatusResultVO> transferOrder(String merSeqNo) throws Exception {
return Result.ok(bankService.transferOrder(merSeqNo));
}
@ApiOperation(value = "退款", notes = "<br>By:艾庆国")
@RequestMapping(value = "/refund", method = RequestMethod.POST)
public Result<NbBankOrderPayStatusResultVO> refund(String merSeqNo) throws Exception {
return Result.ok(bankService.refund(merSeqNo));
}
} }
...@@ -127,7 +127,7 @@ public class NbBankServiceImpl implements NbBankService { ...@@ -127,7 +127,7 @@ public class NbBankServiceImpl implements NbBankService {
} }
@Override @Override
public NbBankOrderPayStatusResultVO transferOrderStatus(String merSeqNo) { public NbBankOrderPayStatusResultVO transferOrder(String merSeqNo) {
JSONObject data = bankThirdpartyService.fundTransferOrder(merSeqNo, "EFT33021200556315", "", JSONObject data = bankThirdpartyService.fundTransferOrder(merSeqNo, "EFT33021200556315", "",
1, 1,
"1", "2"); "1", "2");
...@@ -152,4 +152,30 @@ public class NbBankServiceImpl implements NbBankService { ...@@ -152,4 +152,30 @@ public class NbBankServiceImpl implements NbBankService {
return result; return result;
} }
@Override
public NbBankOrderPayStatusResultVO refund(String merSeqNo) {
JSONObject data = bankThirdpartyService.refund(merSeqNo, "EFT33021200556315", "",
1,
"1", "2");
NbBankOrderPayStatusResultVO result = new NbBankOrderPayStatusResultVO();
String transStatus = data.getString("transStatus");
if (StringUtils.equals(transStatus, "00")){result.setTransStatus(1);} //交易成功
else if (StringUtils.equals(transStatus, "01")){result.setTransStatus(2);} //交易失败
else if (StringUtils.equals(transStatus, "02")){result.setTransStatus(3);} //交易已受理
else if (StringUtils.equals(transStatus, "80")){result.setTransStatus(4);} //订单初始状态
else if (StringUtils.equals(transStatus, "90")){result.setTransStatus(5);} //交易不存在
else if (StringUtils.equals(transStatus, "99")){result.setTransStatus(6);} //交易超时,须发起交易结果查询
String transSeqNo = data.getString("transSeqNo");
result.setAmount(1);
result.setRealAmount(1);
result.setMerSeqNo(merSeqNo);
result.setTransSeqNo(transSeqNo);
return result;
}
} }
...@@ -442,6 +442,66 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -442,6 +442,66 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR); throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR);
} }
/**
* 退款
* 5.2退款
* @return
*/
@Override
public JSONObject refund(String merSeqNo, String merId, String merDtTm,
Integer amount,
String orgMerSeqNo, String coreSeqNo) {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", merId); //商户号 必填
jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填
jsonObject.put("merDtTm", LocalDateTimeUtils.formatTime()); //商户时间 必填
jsonObject.put("trxAmt", new BigDecimal(amount).movePointLeft(2)); //订单金额 必填
jsonObject.put("orgMerSeqNo", orgMerSeqNo); //原订单流水号 必填
jsonObject.put("coreSeqNo", coreSeqNo); //核心流水号 必填
HashMap<String,String> httpHeader = new HashMap<>();
RequestApiData requestApiData = new RequestApiData();
requestApiData.setAppkey(nbBankConfig.getAppKey());
requestApiData.setData(jsonObject);
requestApiData.setProductId("YFT");
requestApiData.setServiceId("refund");
requestApiData.setHttpHeader(httpHeader);
RequestHead requestHead = new RequestHead();
requestHead.setRqsJrnlNo(NBOpenSDK.getRandom());
SDKRequest request = new SDKRequest();
request.setData(requestApiData);
request.setHead(requestHead);
log.info("宁波银行, 退款(refund), 参数: {}", JSON.toJSONString(request));
SDKResponse response = NBOpenSDK.send(request);
log.info("宁波银行, 退款(refund), 结果: {}", JSON.toJSONString(response));
recordSave(NbBankRecordEnum.Type.REFUND.getCode(), request, response);
JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response));
JSONObject data = responseJson.getJSONObject("data");
if (!StringUtils.equals(data.getString("errorCode"), "000000")){
log.info("宁波银行, 退款失败(refund), code:{}, msg:{}", data.getString("errorCode"), data.getString("errorMsg"));
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR);
}
return data;
} catch (Exception e) {
e.printStackTrace();
}
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR);
}
@Override @Override
public void recordSave(Integer type, SDKRequest request, SDKResponse response) { public void recordSave(Integer type, SDKRequest request, SDKResponse response) {
...@@ -542,8 +602,29 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -542,8 +602,29 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
, responseDataJson.getString("transStatus") , responseDataJson.getString("transStatus")
); );
} }
else if (Objects.equals(type, NbBankRecordEnum.Type.REFUND.getCode())) {
RequestApiData requestData = (RequestApiData) (request.getData());
JSONObject requestDataJson = (JSONObject) (requestData.getData());
JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response));
JSONObject responseDataJson = responseJson.getJSONObject("data");
recordSave(type
, requestDataJson.getString("merId")
, requestDataJson.getString("merSeqNo")
, requestDataJson.getString("merDtTm")
, requestDataJson.getString("transSeqNo")
, requestDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue()
, JSON.toJSONString(request)
, JSON.toJSONString(response)
, responseDataJson.getString("errorCode")
, responseDataJson.getString("errorMsg")
, responseDataJson.getString("transStatus")
);
}
} }
@Transactional(propagation = Propagation.REQUIRES_NEW) @Transactional(propagation = Propagation.REQUIRES_NEW)
public void recordSave(Integer type, public void recordSave(Integer type,
String merId, String merSeqNo, String merDtTm, String transSeqNo, String merId, String merSeqNo, String merDtTm, String transSeqNo,
......
...@@ -17,6 +17,8 @@ public interface NbBankService { ...@@ -17,6 +17,8 @@ public interface NbBankService {
String signNo String signNo
); );
NbBankOrderPayStatusResultVO transferOrderStatus(String merSeqNo); NbBankOrderPayStatusResultVO transferOrder(String merSeqNo);
NbBankOrderPayStatusResultVO refund(String merSeqNo);
} }
...@@ -17,6 +17,10 @@ public interface NbBankThirdpartyService { ...@@ -17,6 +17,10 @@ public interface NbBankThirdpartyService {
Integer trxAmt, Integer trxAmt,
String customerId, String payCustomerId); String customerId, String payCustomerId);
JSONObject refund(String merSeqNo, String merId, String merDtTm,
Integer amount,
String orgMerSeqNo, String coreSeqNo);
void recordSave(Integer type, SDKRequest request, SDKResponse response); void recordSave(Integer type, SDKRequest request, SDKResponse response);
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论