提交 3ae43528 authored 作者: aiqingguo's avatar aiqingguo

承运借款流程-宁波银行

上级 9808f5bb
......@@ -19,14 +19,16 @@ import lombok.ToString;
@NoArgsConstructor
public class NbBankOrderPayResultVO {
@ApiModelProperty(value = "金额(分)", example = "")
@ApiModelProperty(value = "金额(分)", example = "1")
private Integer amount;
@ApiModelProperty(value = "流水号", example = "20231129145541")
@ApiModelProperty(value = "商户时间", example = "")
private String merDtTm;
@ApiModelProperty(value = "商户流水号", example = "20231129145541")
private String merSeqNo;
@ApiModelProperty(value = "第三方流水号", example = "20231129145541065503563czKTBzy")
private String transSeqNo;
@ApiModelProperty(value = "转账编号", example = "")
@ApiModelProperty(value = "转账编号 (转账专用)", example = "123456")
private String signNo;
}
\ No newline at end of file
......@@ -17,18 +17,20 @@ import lombok.ToString;
@Setter
@ToString
@NoArgsConstructor
public class NbBankOrderPayStatusResultVO {
public class NbBankOrderResultVO {
@ApiModelProperty(value = "金额(分)", example = "")
private Integer amount;
@ApiModelProperty(value = "实收金额(分)", example = "")
private Integer realAmount;
@ApiModelProperty(value = "流水号", example = "20231129145541")
@ApiModelProperty(value = "商户时间")
private String merDtTm;
@ApiModelProperty(value = "商户流水号", example = "20231129145541")
private String merSeqNo;
@ApiModelProperty(value = "第三方流水号", example = "20231129145541065503563czKTBzy")
private String transSeqNo;
@ApiModelProperty(value = "转账编号", example = "")
@ApiModelProperty(value = "转账编号(转账专用)", example = "1234567")
private String signNo;
@ApiModelProperty(value = "交易状态", example = "")
......
......@@ -12,5 +12,6 @@ import org.springframework.context.annotation.Configuration;
public class NbBankConfig {
private String appKey = "77667c76_3503_4c04_95f7_fc10938c7942";
private String merId = "EFT33021200556315";
}
......@@ -2,7 +2,7 @@ package com.clx.performance.controller.temp;
import com.clx.performance.service.thirdparty.nbbank.NbBankService;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayStatusResultVO;
import com.clx.performance.vo.pc.nbbank.NbBankOrderResultVO;
import com.msl.common.result.Result;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......@@ -26,39 +26,39 @@ public class TempBankController {
@Autowired
private NbBankService bankService;
@ApiOperation(value = "转账", notes = "<br>By:艾庆国")
@RequestMapping(value = "/directBankTransferOrder", method = RequestMethod.POST)
public Result<NbBankOrderPayResultVO> directBankTransferOrder() throws Exception {
@ApiOperation(value = "转账支付", notes = "<br>By:艾庆国")
@RequestMapping(value = "/orderTransferPay", method = RequestMethod.POST)
public Result<NbBankOrderPayResultVO> directBankTransferOrder() {
return Result.ok(bankService.orderPay(1));
return Result.ok(bankService.orderTransferPay(1));
}
@ApiOperation(value = "订单支付", notes = "<br>By:艾庆国")
@RequestMapping(value = "/unionPayDirectOrder", method = RequestMethod.POST)
public Result<NbBankOrderPayResultVO> unionPayDirectOrder() throws Exception {
@RequestMapping(value = "/orderDirectPay", method = RequestMethod.POST)
public Result<NbBankOrderPayResultVO> orderDirectPay() {
return Result.ok(bankService.orderPay(2));
return Result.ok(bankService.orderDirectPay(2,"313332082914","86041110000076809", "黑玫瑰"));
}
@ApiOperation(value = "查询", notes = "<br>By:艾庆国")
@RequestMapping(value = "/queryOrder", method = RequestMethod.POST)
public Result<NbBankOrderPayStatusResultVO> queryOrder(String merSeqNo) throws Exception {
@RequestMapping(value = "/getResult", method = RequestMethod.POST)
public Result<NbBankOrderResultVO> getResult(String merSeqNo) {
return Result.ok(bankService.getOrderStatus(merSeqNo));
return Result.ok(bankService.getResult(merSeqNo));
}
@ApiOperation(value = "调账", notes = "<br>By:艾庆国")
@RequestMapping(value = "/transferOrder", method = RequestMethod.POST)
public Result<NbBankOrderPayStatusResultVO> transferOrder(String merSeqNo) throws Exception {
@RequestMapping(value = "/adjust", method = RequestMethod.POST)
public Result<NbBankOrderResultVO> adjust(String merSeqNo, Integer amount) {
return Result.ok(bankService.transferOrder(merSeqNo));
return Result.ok(bankService.adjust(merSeqNo, amount));
}
@ApiOperation(value = "退款", notes = "<br>By:艾庆国")
@RequestMapping(value = "/refund", method = RequestMethod.POST)
public Result<NbBankOrderPayStatusResultVO> refund(String merSeqNo) throws Exception {
public Result<NbBankOrderResultVO> refund(String orgMerSeqNo, Integer amount, String orgTransSeqNo) {
return Result.ok(bankService.refund(merSeqNo));
return Result.ok(bankService.refund(orgMerSeqNo,amount,orgTransSeqNo));
}
}
......@@ -96,8 +96,8 @@ public class NbBankNotifyServiceImpl implements NbBankNotifyService {
String merSeqNo = data.getString("merSeqNo");
String transSeqNo = data.getString("transSeqNo");
BigDecimal trxAmt = data.getBigDecimal("trxAmt");
BigDecimal realTrxAmt = data.getBigDecimal("realTrxAmt");
Integer trxAmt = data.getBigDecimal("trxAmt").movePointRight(2).intValue();
Integer realTrxAmt = data.getBigDecimal("realTrxAmt").movePointRight(2).intValue();
String transStatus = data.getString("transStatus");
String signNo = data.getString("signNo");
......
package com.clx.performance.service.impl.thirdparty.nbbank;
import com.alibaba.fastjson.JSONObject;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.service.thirdparty.nbbank.NbBankService;
import com.clx.performance.service.thirdparty.nbbank.NbBankThirdpartyService;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayStatusResultVO;
import com.msl.common.exception.ServiceSystemException;
import com.clx.performance.vo.pc.nbbank.NbBankOrderResultVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -26,54 +25,66 @@ public class NbBankServiceImpl implements NbBankService {
@Autowired
private NbBankThirdpartyService bankThirdpartyService;
/**
* 订单支付
* @Param
* payType: 1转账直连下单 2银联订单支付收款模式
* 转账支付
* @param amount 金额分
*/
@Override
public NbBankOrderPayResultVO orderPay(Integer payType) {
if (payType == 1){ //转账直连下单
String merSeqNo = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
JSONObject data = bankThirdpartyService.directBankTransferOrder(merSeqNo, "EFT33021200556315", 1);
public NbBankOrderPayResultVO orderTransferPay(Integer amount) {
String merSeqNo = merSeqNoGenerate();
String merDtTm = LocalDateTimeUtils.formatTime();
JSONObject data = bankThirdpartyService.directBankTransferOrder(merSeqNo, merDtTm, amount);
String transSeqNo = data.getString("transSeqNo");
String signNo = data.getString("signNo");
NbBankOrderPayResultVO result = new NbBankOrderPayResultVO();
result.setAmount(1);
result.setAmount(amount);
result.setMerDtTm(merDtTm);
result.setMerSeqNo(merSeqNo);
result.setTransSeqNo(transSeqNo);
result.setSignNo(signNo);
return result;
}
else if (payType == 2){ //银联订单支付收款模式
String merSeqNo = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
JSONObject data = bankThirdpartyService.unionPayDirectOrder(merSeqNo, "EFT33021200556315", 1,
"313332082914","86041110000076809", "黑玫瑰");
/**
* 订单支付
* @param amount 金额分
* @param payAcctOpenBankId 开户行号
* @param payAcctNo 付款账号
* @param payAcctNm 付款户名
*/
@Override
public NbBankOrderPayResultVO orderDirectPay(Integer amount,
String payAcctOpenBankId, String payAcctNo, String payAcctNm) {
String merSeqNo = merSeqNoGenerate();
String merDtTm = LocalDateTimeUtils.formatTime();
JSONObject data = bankThirdpartyService.unionPayDirectOrder(merSeqNo, merDtTm, amount,
payAcctOpenBankId,payAcctNo, payAcctNm);
String transSeqNo = data.getString("transSeqNo");
NbBankOrderPayResultVO result = new NbBankOrderPayResultVO();
result.setAmount(1);
result.setAmount(amount);
result.setMerDtTm(merDtTm);
result.setMerSeqNo(merSeqNo);
result.setTransSeqNo(transSeqNo);
return result;
}
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_PAY_TYPE_ERROR);
}
/**
* 获取交易状态
* @return
* 获取交易结果
* @param orgMerSeqNo 商户流水号 (原)
*/
@Override
public NbBankOrderPayStatusResultVO getOrderStatus(String merSeqNo) {
JSONObject data = bankThirdpartyService.queryOrder(merSeqNo, "EFT33021200556315");
public NbBankOrderResultVO getResult(String orgMerSeqNo) {
JSONObject data = bankThirdpartyService.queryOrder(orgMerSeqNo);
NbBankOrderPayStatusResultVO result = new NbBankOrderPayStatusResultVO();
NbBankOrderResultVO result = new NbBankOrderResultVO();
String transStatus = data.getString("transStatus");
if (StringUtils.equals(transStatus, "00")){result.setTransStatus(1);} //交易成功
......@@ -90,49 +101,25 @@ public class NbBankServiceImpl implements NbBankService {
result.setAmount(trxAmt==null? null : trxAmt.movePointLeft(2).intValue());
result.setRealAmount(trxAmt==null? null : realTrxAmt.movePointLeft(2).intValue());
result.setMerSeqNo(merSeqNo);
result.setMerSeqNo(orgMerSeqNo);
result.setTransSeqNo(transSeqNo);
result.setSignNo(signNo);
return result;
}
/**
* 调账
* @param orgMerSeqNo 商户流水号 (原)
* @param amount 金额分
*/
@Override
public void orderPayCallback(String merSeqNo, String transSeqNo,
BigDecimal trxAmt, BigDecimal realTrxAmt,
String transStatus,
String signNo) {
log.info("宁波银行支付回调, merSeqNo:{}, transSeqNo:{}, trxAmt:{}, realTrxAmt:{}, transSeqNo:{}, signNo:{}",
merSeqNo, transSeqNo, trxAmt, realTrxAmt, transStatus, signNo);
if (StringUtils.equals(transStatus, "00")){ //交易成功
}
if (StringUtils.equals(transStatus, "01")){ //交易失败
}
if (StringUtils.equals(transStatus, "02")){ //交易已受理
}
if (StringUtils.equals(transStatus, "80")){ //订单初始状态
}
if (StringUtils.equals(transStatus, "90")){ //交易不存在
}
if (StringUtils.equals(transStatus, "99")){ //交易超时,须发起交易结果查询
}
}
@Override
public NbBankOrderPayStatusResultVO transferOrder(String merSeqNo) {
JSONObject data = bankThirdpartyService.fundTransferOrder(merSeqNo, "EFT33021200556315", "",
1,
"1", "2");
public NbBankOrderResultVO adjust(String orgMerSeqNo, Integer amount) {
String merDtTm = LocalDateTimeUtils.formatTime();
JSONObject data = bankThirdpartyService.fundTransferOrder(orgMerSeqNo, merDtTm, amount,
null, null);
NbBankOrderPayStatusResultVO result = new NbBankOrderPayStatusResultVO();
NbBankOrderResultVO result = new NbBankOrderResultVO();
String transStatus = data.getString("transStatus");
if (StringUtils.equals(transStatus, "00")){result.setTransStatus(1);} //交易成功
......@@ -144,21 +131,30 @@ public class NbBankServiceImpl implements NbBankService {
String transSeqNo = data.getString("transSeqNo");
result.setAmount(1);
result.setRealAmount(1);
result.setMerSeqNo(merSeqNo);
result.setAmount(amount);
result.setRealAmount(amount);
result.setMerDtTm(merDtTm);
result.setMerSeqNo(orgMerSeqNo);
result.setTransSeqNo(transSeqNo);
return result;
}
/**
* 退款
* @param orgMerSeqNo 商户流水号(原)
* @param amount 金额分
* @param orgTransSeqNo 第三方流水号 (原)
*/
@Override
public NbBankOrderPayStatusResultVO refund(String merSeqNo) {
JSONObject data = bankThirdpartyService.refund(merSeqNo, "EFT33021200556315", "",
1,
"1", "2");
public NbBankOrderResultVO refund(String orgMerSeqNo, Integer amount, String orgTransSeqNo) {
String merSeqNo = merSeqNoGenerate();
NbBankOrderPayStatusResultVO result = new NbBankOrderPayStatusResultVO();
String merDtTm = LocalDateTimeUtils.formatTime();
JSONObject data = bankThirdpartyService.refund(merSeqNo, merDtTm, amount,
orgMerSeqNo, orgTransSeqNo);
NbBankOrderResultVO result = new NbBankOrderResultVO();
String transStatus = data.getString("transStatus");
if (StringUtils.equals(transStatus, "00")){result.setTransStatus(1);} //交易成功
......@@ -170,12 +166,58 @@ public class NbBankServiceImpl implements NbBankService {
String transSeqNo = data.getString("transSeqNo");
result.setAmount(1);
result.setRealAmount(1);
result.setAmount(amount);
result.setRealAmount(amount);
result.setMerDtTm(merDtTm);
result.setMerSeqNo(merSeqNo);
result.setTransSeqNo(transSeqNo);
return result;
}
/**
* 银行回调
* @param merSeqNo 商户流水号
* @param transSeqNo 第三方流水号
* @param trxAmt 订单金额分
* @param realTrxAmt 实收金额分
* @param transStatus 交易状态
* @param signNo 转账编码
*/
@Override
public void orderPayCallback(String merSeqNo, String transSeqNo,
Integer trxAmt, Integer realTrxAmt,
String transStatus,
String signNo) {
log.info("宁波银行支付回调, merSeqNo:{}, transSeqNo:{}, trxAmt:{}, realTrxAmt:{}, transSeqNo:{}, signNo:{}",
merSeqNo, transSeqNo, trxAmt, realTrxAmt, transStatus, signNo);
if (StringUtils.equals(transStatus, "00")){ //交易成功
}
if (StringUtils.equals(transStatus, "01")){ //交易失败
}
if (StringUtils.equals(transStatus, "02")){ //交易已受理
}
if (StringUtils.equals(transStatus, "80")){ //订单初始状态
}
if (StringUtils.equals(transStatus, "90")){ //交易不存在
}
if (StringUtils.equals(transStatus, "99")){ //交易超时,须发起交易结果查询
}
}
/**
* 创建流水号
*/
private String merSeqNoGenerate(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
}
}
......@@ -88,14 +88,14 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
* amount: 订单金额(分)
*/
@Override
public JSONObject directBankTransferOrder(String merSeqNo, String merId, Integer amount) {
public JSONObject directBankTransferOrder(String merSeqNo, String merDtTm, Integer amount) {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", merId); //商户号 必填
jsonObject.put("merId", nbBankConfig.getMerId()); //商户号 必填
jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填
jsonObject.put("merDtTm", LocalDateTimeUtils.formatTime()); //商户时间 必填
jsonObject.put("merDtTm", merDtTm); //商户时间 必填
jsonObject.put("trxAmt", new BigDecimal(amount).movePointLeft(2)); //订单金额 必填
jsonObject.put("orderDesc", "散煤运输"); //订单详情 必填
......@@ -183,15 +183,15 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
* payAcctNm: 付款户名
*/
@Override
public JSONObject unionPayDirectOrder(String merSeqNo, String merId, Integer amount,
public JSONObject unionPayDirectOrder(String merSeqNo, String merDtTm, Integer amount,
String payAcctOpenBankId, String payAcctNo, String payAcctNm) {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", merId); //商户号 必填
jsonObject.put("merId", nbBankConfig.getMerId()); //商户号 必填
jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填
jsonObject.put("merDtTm", LocalDateTimeUtils.formatTime()); //商户时间 必填
jsonObject.put("merDtTm", merDtTm); //商户时间 必填
jsonObject.put("trxAmt", new BigDecimal(amount).movePointLeft(2)); //订单金额 必填
jsonObject.put("orderDesc", "散煤运输"); //订单详情 必填
......@@ -337,13 +337,13 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
* 99:交易超时,须发起交易结果查询
*/
@Override
public JSONObject queryOrder(String merSeqNo, String merId) {
public JSONObject queryOrder(String orgMerSeqNo) {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", merId); //商户号 必填
jsonObject.put("merId", nbBankConfig.getMerId()); //商户号 必填
jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填
jsonObject.put("merSeqNo", orgMerSeqNo); //商户流水 必填
HashMap<String,String> httpHeader = new HashMap<>();
......@@ -386,23 +386,24 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
/**
* 调账
* 5.10云账簿资金划转
* @param merSeqNo
* @return
*/
@Override
public JSONObject fundTransferOrder(String merSeqNo, String merId, String merDtTm,
Integer trxAmt,
public JSONObject fundTransferOrder(String orgMerSeqNo, 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("merId", nbBankConfig.getMerId()); //商户号 必填
jsonObject.put("merSeqNo", orgMerSeqNo); //商户流水 必填
jsonObject.put("merDtTm", merDtTm); //商户交易时间 必填
jsonObject.put("trxAmt", new BigDecimal(trxAmt).movePointLeft(2)); //交易金额
if (StringUtils.isNotBlank(customerId)) {
jsonObject.put("customerId", customerId); //云账簿标识_收款方
}
if (StringUtils.isNotBlank(payCustomerId)) {
jsonObject.put("payCustomerId", payCustomerId); //云账簿标识_付款方
}
// jsonObject.put("notifyAction", 0); //是否通知
HashMap<String,String> httpHeader = new HashMap<>();
......@@ -449,20 +450,22 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
* @return
*/
@Override
public JSONObject refund(String merSeqNo, String merId, String merDtTm,
public JSONObject refund(String merSeqNo, String merDtTm,
Integer amount,
String orgMerSeqNo, String coreSeqNo) {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", merId); //商户号 必填
jsonObject.put("merId", nbBankConfig.getMerId()); //商户号 必填
jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填
jsonObject.put("merDtTm", LocalDateTimeUtils.formatTime()); //商户时间 必填
jsonObject.put("trxAmt", new BigDecimal(amount).movePointLeft(2)); //订单金额 必填
jsonObject.put("orgMerSeqNo", orgMerSeqNo); //原订单流水号 必填
if (StringUtils.isNotBlank(coreSeqNo)) {
jsonObject.put("coreSeqNo", coreSeqNo); //核心流水号 必填
}
HashMap<String,String> httpHeader = new HashMap<>();
......
package com.clx.performance.service.thirdparty.nbbank;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayStatusResultVO;
import java.math.BigDecimal;
import com.clx.performance.vo.pc.nbbank.NbBankOrderResultVO;
public interface NbBankService {
NbBankOrderPayResultVO orderPay(Integer payType);
NbBankOrderPayResultVO orderTransferPay(Integer amount);
NbBankOrderPayResultVO orderDirectPay(Integer amount,
String payAcctOpenBankId, String payAcctNo, String payAcctNm);
NbBankOrderResultVO getResult(String merSeqNo);
NbBankOrderPayStatusResultVO getOrderStatus(String merSeqNo);
NbBankOrderResultVO adjust(String orgMerSeqNo, Integer amount);
NbBankOrderResultVO refund(String orgMerSeqNo, Integer amount, String orgTransSeqNo);
void orderPayCallback(String merSeqNo, String transSeqNo,
BigDecimal trxAmt, BigDecimal realTrxAmt,
Integer trxAmt, Integer realTrxAmt,
String transStatus,
String signNo
);
NbBankOrderPayStatusResultVO transferOrder(String merSeqNo);
NbBankOrderPayStatusResultVO refund(String merSeqNo);
}
......@@ -6,19 +6,18 @@ import com.nbopen.api.SDKResponse;
public interface NbBankThirdpartyService {
JSONObject directBankTransferOrder(String merSeqNo, String merId, Integer amount);
JSONObject directBankTransferOrder(String merSeqNo, String merDtTm, Integer amount);
JSONObject unionPayDirectOrder(String merSeqNo, String merId, Integer amount,
JSONObject unionPayDirectOrder(String merSeqNo, String merDtTm, Integer amount,
String payAcctOpenBankId, String payAcctNo, String payAcctNm);
JSONObject queryOrder(String merSeqNo, String merId);
JSONObject queryOrder(String orgMerSeqNo);
JSONObject fundTransferOrder(String merSeqNo, String merId, String merDtTm,
JSONObject fundTransferOrder(String orgMerSeqNo, String merDtTm,
Integer trxAmt,
String customerId, String payCustomerId);
JSONObject refund(String merSeqNo, String merId, String merDtTm,
Integer amount,
JSONObject refund(String merSeqNo, String merDtTm, Integer amount,
String orgMerSeqNo, String coreSeqNo);
void recordSave(Integer type, SDKRequest request, SDKResponse response);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论