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

承运借款流程-宁波银行

上级 e359a763
...@@ -16,6 +16,7 @@ public enum NbBankRecordEnum { ...@@ -16,6 +16,7 @@ public enum NbBankRecordEnum {
UNION_PAY_DIRECT_ORDER(2, "银联订单支付收款模式"), UNION_PAY_DIRECT_ORDER(2, "银联订单支付收款模式"),
QUERY_ORDER(3, "交易结果查询"), QUERY_ORDER(3, "交易结果查询"),
NOTIFY_MERCHANT(4, "异步通知交易结果"), NOTIFY_MERCHANT(4, "异步通知交易结果"),
FUND_TRANSFER_ORDER(5, "云账簿资金划转"),
; ;
private final Integer code; private final Integer code;
......
...@@ -28,7 +28,8 @@ public class NbBankRecord implements HasKey<Integer> { ...@@ -28,7 +28,8 @@ public class NbBankRecord implements HasKey<Integer> {
private Integer id; //id private Integer id; //id
private Integer type; //类型:1转账直连下单 2银联订单支付收款模式 3交易结果查询 4异步通知交易结果 private Integer type; //类型:1转账直连下单 2银联订单支付收款模式 3交易结果查询 4异步通知交易结果
private String merId; //商户号 private String merId; //商户号
private String merSeqNo; //流水号 private String merSeqNo; //商户号流水号
private LocalDateTime merDtTm; //商户交易时间
private String transSeqNo; //第三方流水号 private String transSeqNo; //第三方流水号
private Integer amount; //金额 (分) private Integer amount; //金额 (分)
private String param; //参数 private String param; //参数
......
...@@ -28,12 +28,12 @@ public class NbBankServiceImpl implements NbBankService { ...@@ -28,12 +28,12 @@ public class NbBankServiceImpl implements NbBankService {
/** /**
* 订单支付 * 订单支付
* @return * @Param
* 第三方流水号 * payType: 1转账直连下单 2银联订单支付收款模式
*/ */
@Override @Override
public NbBankOrderPayResultVO orderPay(Integer payType) { public NbBankOrderPayResultVO orderPay(Integer payType) {
if (payType == 1){ if (payType == 1){ //转账直连下单
String merSeqNo = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); String merSeqNo = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
JSONObject data = bankThirdpartyService.directBankTransferOrder(merSeqNo, "EFT33021200556315", 1); JSONObject data = bankThirdpartyService.directBankTransferOrder(merSeqNo, "EFT33021200556315", 1);
...@@ -48,7 +48,7 @@ public class NbBankServiceImpl implements NbBankService { ...@@ -48,7 +48,7 @@ public class NbBankServiceImpl implements NbBankService {
return result; return result;
} }
else if (payType == 2){ else if (payType == 2){ //银联订单支付收款模式
String merSeqNo = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); String merSeqNo = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
JSONObject data = bankThirdpartyService.unionPayDirectOrder(merSeqNo, "EFT33021200556315", 1, JSONObject data = bankThirdpartyService.unionPayDirectOrder(merSeqNo, "EFT33021200556315", 1,
"313332082914","86041110000076809", "黑玫瑰"); "313332082914","86041110000076809", "黑玫瑰");
...@@ -71,7 +71,7 @@ public class NbBankServiceImpl implements NbBankService { ...@@ -71,7 +71,7 @@ public class NbBankServiceImpl implements NbBankService {
*/ */
@Override @Override
public NbBankOrderPayStatusResultVO getOrderStatus(String merSeqNo) { public NbBankOrderPayStatusResultVO getOrderStatus(String merSeqNo) {
JSONObject data = bankThirdpartyService.queryOrder(merSeqNo); JSONObject data = bankThirdpartyService.queryOrder(merSeqNo, "EFT33021200556315");
NbBankOrderPayStatusResultVO result = new NbBankOrderPayStatusResultVO(); NbBankOrderPayStatusResultVO result = new NbBankOrderPayStatusResultVO();
...@@ -126,4 +126,30 @@ public class NbBankServiceImpl implements NbBankService { ...@@ -126,4 +126,30 @@ public class NbBankServiceImpl implements NbBankService {
} }
@Override
public NbBankOrderPayStatusResultVO transferOrderStatus(String merSeqNo) {
JSONObject data = bankThirdpartyService.fundTransferOrder(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;
}
} }
...@@ -336,13 +336,13 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -336,13 +336,13 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
* 99:交易超时,须发起交易结果查询 * 99:交易超时,须发起交易结果查询
*/ */
@Override @Override
public JSONObject queryOrder(String merSeqNo) { public JSONObject queryOrder(String merSeqNo, String merId) {
try { try {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填 jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", "EFT33021200556315"); //商户号 必填 jsonObject.put("merId", merId); //商户号 必填
jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填 jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填
HashMap<String,String> httpHeader = new HashMap<>(); HashMap<String,String> httpHeader = new HashMap<>();
...@@ -382,6 +382,66 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -382,6 +382,66 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR); throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR);
} }
/**
* 调账
* 5.10云账簿资金划转
* @param merSeqNo
* @return
*/
@Override
public JSONObject fundTransferOrder(String merSeqNo, String merId, String merDtTm,
Integer trxAmt,
String customerId, String payCustomerId) {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", merId); //商户号 必填
jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填
jsonObject.put("merDtTm", merDtTm); //商户交易时间 必填
jsonObject.put("trxAmt", new BigDecimal(trxAmt).movePointLeft(2)); //交易金额
jsonObject.put("customerId", customerId); //云账簿标识_收款方
jsonObject.put("payCustomerId", payCustomerId); //云账簿标识_付款方
// jsonObject.put("notifyAction", 0); //是否通知
HashMap<String,String> httpHeader = new HashMap<>();
RequestApiData requestApiData = new RequestApiData();
requestApiData.setAppkey(nbBankConfig.getAppKey());
requestApiData.setData(jsonObject);
requestApiData.setProductId("YFT");
requestApiData.setServiceId("fundTransferOrder");
requestApiData.setHttpHeader(httpHeader);
RequestHead requestHead = new RequestHead();
requestHead.setRqsJrnlNo(NBOpenSDK.getRandom());
SDKRequest request = new SDKRequest();
request.setData(requestApiData);
request.setHead(requestHead);
log.info("宁波银行, 调账接口(fundTransferOrder), 参数: {}", JSON.toJSONString(request));
SDKResponse response = NBOpenSDK.send(request);
log.info("宁波银行, 调账接口(fundTransferOrder), 结果: {}", JSON.toJSONString(response));
recordSave(NbBankRecordEnum.Type.FUND_TRANSFER_ORDER.getCode(), request, response);
JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response));
JSONObject data = responseJson.getJSONObject("data");
if (!StringUtils.equals(data.getString("errorCode"), "000000")){
log.info("宁波银行, 调账接口(fundTransferOrder), 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) {
...@@ -395,6 +455,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -395,6 +455,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
recordSave(type recordSave(type
, requestDataJson.getString("merId") , requestDataJson.getString("merId")
, requestDataJson.getString("merSeqNo") , requestDataJson.getString("merSeqNo")
, requestDataJson.getString("merDtTm")
, responseDataJson.getString("transSeqNo") , responseDataJson.getString("transSeqNo")
, requestDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue() , requestDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue()
, JSON.toJSONString(request) , JSON.toJSONString(request)
...@@ -414,6 +475,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -414,6 +475,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
recordSave(type recordSave(type
, requestDataJson.getString("merId") , requestDataJson.getString("merId")
, requestDataJson.getString("merSeqNo") , requestDataJson.getString("merSeqNo")
, requestDataJson.getString("merDtTm")
, responseDataJson.getString("transSeqNo") , responseDataJson.getString("transSeqNo")
, requestDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue() , requestDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue()
, JSON.toJSONString(request) , JSON.toJSONString(request)
...@@ -424,18 +486,22 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -424,18 +486,22 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
); );
} }
else if (Objects.equals(type, NbBankRecordEnum.Type.QUERY_ORDER.getCode())) { else if (Objects.equals(type, NbBankRecordEnum.Type.QUERY_ORDER.getCode())) {
RequestApiData requestData = (RequestApiData) (request.getData());
JSONObject requestDataJson = (JSONObject) (requestData.getData());
JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response)); JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response));
JSONObject responseDataJson = responseJson.getJSONObject("data"); JSONObject responseDataJson = responseJson.getJSONObject("data");
recordSave(type recordSave(type
, responseDataJson.getString("merId") , requestDataJson.getString("merId")
, responseDataJson.getString("merSeqNo") , requestDataJson.getString("merSeqNo")
, requestDataJson.getString("merDtTm")
, responseDataJson.getString("transSeqNo") , responseDataJson.getString("transSeqNo")
, responseDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue() , responseDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue()
, JSON.toJSONString(request) , JSON.toJSONString(request)
, JSON.toJSONString(response) , JSON.toJSONString(response)
, null , responseDataJson.getString("errorCode")
, null , responseDataJson.getString("errorMsg")
, responseDataJson.getString("transStatus") , responseDataJson.getString("transStatus")
); );
} }
...@@ -446,6 +512,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -446,6 +512,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
recordSave(type recordSave(type
, responseDataJson.getString("merId") , responseDataJson.getString("merId")
, responseDataJson.getString("merSeqNo") , responseDataJson.getString("merSeqNo")
, null
, responseDataJson.getString("transSeqNo") , responseDataJson.getString("transSeqNo")
, responseDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue() , responseDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue()
, JSON.toJSONString(request) , JSON.toJSONString(request)
...@@ -455,10 +522,31 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -455,10 +522,31 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
, responseDataJson.getString("transStatus") , responseDataJson.getString("transStatus")
); );
} }
else if (Objects.equals(type, NbBankRecordEnum.Type.FUND_TRANSFER_ORDER.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")
, responseDataJson.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 transSeqNo, String merId, String merSeqNo, String merDtTm, String transSeqNo,
Integer amount, Integer amount,
String param, String result, String param, String result,
String errorCode, String errorMsg, String errorCode, String errorMsg,
...@@ -468,6 +556,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -468,6 +556,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
record.setType(type); record.setType(type);
record.setMerId(merId); record.setMerId(merId);
record.setMerSeqNo(merSeqNo); record.setMerSeqNo(merSeqNo);
record.setMerDtTm(LocalDateTimeUtils.parseTime(merDtTm));
record.setTransSeqNo(transSeqNo); record.setTransSeqNo(transSeqNo);
record.setAmount(amount); record.setAmount(amount);
record.setParam(param); record.setParam(param);
......
...@@ -17,4 +17,6 @@ public interface NbBankService { ...@@ -17,4 +17,6 @@ public interface NbBankService {
String signNo String signNo
); );
NbBankOrderPayStatusResultVO transferOrderStatus(String merSeqNo);
} }
...@@ -11,7 +11,11 @@ public interface NbBankThirdpartyService { ...@@ -11,7 +11,11 @@ public interface NbBankThirdpartyService {
JSONObject unionPayDirectOrder(String merSeqNo, String merId, Integer amount, JSONObject unionPayDirectOrder(String merSeqNo, String merId, Integer amount,
String payAcctOpenBankId, String payAcctNo, String payAcctNm); String payAcctOpenBankId, String payAcctNo, String payAcctNm);
JSONObject queryOrder(String merSeqNo); JSONObject queryOrder(String merSeqNo, String merId);
JSONObject fundTransferOrder(String merSeqNo, String merId, String merDtTm,
Integer trxAmt,
String customerId, String payCustomerId);
void recordSave(Integer type, SDKRequest request, SDKResponse response); void recordSave(Integer type, SDKRequest request, SDKResponse response);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论