支付回调业务代码修改

master
yqy 3 years ago
parent e547599862
commit 9f701567e6

@ -40,13 +40,13 @@ public class RechargeController {
@ApiOperation(value = "支付回调")
@RequestMapping(value = "/pay-notify")
public CommonResult<String> frontRcvResponse(HttpServletRequest request){
public String frontRcvResponse(HttpServletRequest request){
return accountRechargeService.pcNotifyResponse(request);
}
@ApiOperation(value = "同步历史数据支付回调")
@RequestMapping(value = "/pay-notify-two")
public CommonResult<String> frontRcvResponseTwo(HttpServletRequest request) {
public String frontRcvResponseTwo(HttpServletRequest request) {
return accountRechargeService.pcTwoNotifyResponse(request);
}

@ -31,7 +31,7 @@ public interface AccountRechargeService {
* @param request
* @return
*/
CommonResult<String> pcNotifyResponse(HttpServletRequest request);
String pcNotifyResponse(HttpServletRequest request);
/**
*
@ -45,7 +45,7 @@ public interface AccountRechargeService {
* @param request
* @return
*/
CommonResult<String> pcTwoNotifyResponse(HttpServletRequest request);
String pcTwoNotifyResponse(HttpServletRequest request);
/**
*

@ -132,6 +132,7 @@ public class AccountRechargeServiceImpl implements AccountRechargeService {
order.setPayType(aliPayPcVo.getPayType());
order.setTemplateId(aliPayPcVo.getTemplateId());
order.setStatus(DefaultNumberConstants.ZERO_NUMBER);
order.setIsCallback(DefaultNumberConstants.ZERO_NUMBER);
return payOrderRepository.save(order).getId() != null;
}
@ -142,48 +143,56 @@ public class AccountRechargeServiceImpl implements AccountRechargeService {
* @return {@link CommonResult}<{@link String}>
*/
@Override
public CommonResult<String> pcNotifyResponse(HttpServletRequest request) {
log.info("======================支付回调开始时间:======================{}", LocalTime.now());
int i = 0;
PayOrder order = null;
try {
//获取支付宝GET过来反馈信息
@Transactional(rollbackFor = Exception.class)
public String pcNotifyResponse(HttpServletRequest request) {
//商户订单号
String orderNo = new String(request.getParameter(PayConstants.OUT_TRADE_NO).
getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
//查询订单信息
PayOrder order = payOrderRepository.findByOrderNumber(orderNo);
if (order != null && order.getIsCallback() == 0) {
log.info("======================支付回调开始时间:{}", LocalTime.now());
//先更新回调状态,防止二次回调
order.setIsCallback(DefaultNumberConstants.ONE_NUMBER);
payOrderRepository.save(order);
int i = 0;
try {
//获取支付宝GET过来反馈信息
// Map<String, String> params = new HashMap<>(DefaultNumberConstants.TWO_NUMBER);
// 处理乱码问题
// 处理乱码问题
// checkParam(request, params);
Map<String, String> params = getAllRequestParam(request);
Boolean flag = Factory.Payment.Common().verifyNotify(params);
//商户订单号
String orderNo = new String(request.getParameter(PayConstants.OUT_TRADE_NO).
getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
if (flag != null && flag) {
log.info(" order verify signature success the orderNumber as {}", orderNo);
order = payOrderRepository.findByOrderNumber(orderNo);
if (order != null && order.getStatus() == 0) {
order.setPayTime(DateUtil.date());
order.setStatus(DefaultNumberConstants.ONE_NUMBER);
payOrderRepository.save(order);
i++;
//同步到聚石塔内数据
JSONObject jsonObject = requestCore.savePayOrder(order);
if (DefaultNumberConstants.TWO_HUNDRED == (Integer) jsonObject.get("code")) {
//获取支付宝GET过来反馈信息
Map<String, String> params = getAllRequestParam(request);
//验签
Boolean flag = Factory.Payment.Common().verifyNotify(params);
if (flag != null && flag) {
log.info(" order verify signature success the orderNumber as {}", orderNo);
if (order != null && order.getStatus() == 0) {
order.setPayTime(DateUtil.date());
order.setStatus(DefaultNumberConstants.ONE_NUMBER);
payOrderRepository.save(order);
i++;
//子账号授权
JSONObject jsonObject1 = requestCore.authorizeChildrenAccount(order.getMasterUserId(), order.getNickName(), order.getTemplateId());
if (DefaultNumberConstants.TWO_HUNDRED != (Integer) jsonObject1.get("code")) {
updateRollBack(order, DefaultNumberConstants.TWO_NUMBER);
//同步到聚石塔内数据
JSONObject jsonObject = requestCore.savePayOrder(order);
if (DefaultNumberConstants.TWO_HUNDRED == (Integer) jsonObject.get("code")) {
i++;
//子账号授权
JSONObject jsonObject1 = requestCore.authorizeChildrenAccount(order.getMasterUserId(), order.getNickName(), order.getTemplateId());
if (DefaultNumberConstants.TWO_HUNDRED != (Integer) jsonObject1.get("code")) {
updateRollBack(order, DefaultNumberConstants.TWO_NUMBER);
}
} else {
updateRollBack(order, DefaultNumberConstants.ONE_NUMBER);
}
} else {
updateRollBack(order, DefaultNumberConstants.ONE_NUMBER);
}
}
} catch (Exception e) {
updateRollBack(order, i);
log.error("the pc response error time {}", LocalTime.now());
return "success";
}
} catch (Exception e) {
updateRollBack(order, i);
log.error("the pc response error time {}", LocalTime.now());
throw new TaoMiCommException(ResponseCode.CALLBACK_FAILED.getDesc());
}
return CommonResult.successfulOperation();
return "success";
}
private void updateRollBack(PayOrder payOrder, int i) {
@ -217,6 +226,7 @@ public class AccountRechargeServiceImpl implements AccountRechargeService {
payTwoOrder.setStatus(DefaultNumberConstants.ZERO_NUMBER);
payTwoOrder.setFinalAmount(num);
payTwoOrder.setOrderStatus(DefaultNumberConstants.ZERO_NUMBER);
payTwoOrder.setIsCallback(DefaultNumberConstants.ZERO_NUMBER);
payTwoOrderRepository.save(payTwoOrder);
return new CommonResult<String>().success(response.getBody());
}
@ -239,56 +249,64 @@ public class AccountRechargeServiceImpl implements AccountRechargeService {
* @param request
*/
@Override
public CommonResult<String> pcTwoNotifyResponse(HttpServletRequest request) {
log.info("======================同步支付回调开始时间:======================{}", LocalTime.now());
int i = 0;
PayTwoOrder order = null;
try {
//获取支付宝GET过来反馈信息
@Transactional(rollbackFor = Exception.class)
public String pcTwoNotifyResponse(HttpServletRequest request) {
//商户订单号
String orderNo = new String(request.getParameter(PayConstants.OUT_TRADE_NO).
getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
//查询订单信息
PayTwoOrder order = payTwoOrderRepository.findByOrderNumber(orderNo);
if (order != null && order.getIsCallback() == 0) {
log.info("======================同步支付回调开始时间:{}", LocalTime.now());
//先更新回调状态,防止二次回调
order.setIsCallback(DefaultNumberConstants.ONE_NUMBER);
payTwoOrderRepository.save(order);
int i = 0;
try {
//获取支付宝GET过来反馈信息
// Map<String, String> params = new HashMap<>(DefaultNumberConstants.TWO_NUMBER);
// 处理乱码问题
// 处理乱码问题
// checkParam(request, params);
Map<String, String> params = getAllRequestParam(request);
Boolean flag = Factory.Payment.Common().verifyNotify(params);
//商户订单号
String orderNo = new String(request.getParameter(PayConstants.OUT_TRADE_NO).
getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
if (flag != null && flag) {
log.info(" order verify signature success the orderNumber as {}", orderNo);
order = payTwoOrderRepository.findByOrderNumber(orderNo);
if (order != null && order.getStatus() == 0) {
order.setPayTime(DateUtil.date());
order.setStatus(DefaultNumberConstants.ONE_NUMBER);
payTwoOrderRepository.save(order);
i++;
//同步数据
JSONObject jsonObject = requestCore.savePayTwoOrder(order);
if (DefaultNumberConstants.TWO_HUNDRED == (Integer) jsonObject.get("code")) {
//获取支付宝GET过来反馈信息
Map<String, String> params = getAllRequestParam(request);
//验签
Boolean flag = Factory.Payment.Common().verifyNotify(params);
if (flag != null && flag) {
log.info(" order verify signature success the orderNumber as {}", orderNo);
if (order != null && order.getStatus() == 0) {
order.setPayTime(DateUtil.date());
order.setStatus(DefaultNumberConstants.ONE_NUMBER);
payTwoOrderRepository.save(order);
i++;
// 修改账户信息 开通服务
JSONObject jsonObject2 = requestCore.updateSellerAccount(order, false);
if (DefaultNumberConstants.TWO_HUNDRED != (Integer) jsonObject2.get("code")) {
log.error("++++++++++++++++修改账户信息,开通淘宝服务失败:{}", order.getNickName());
order.setOrderStatus(i);
//同步数据
JSONObject jsonObject = requestCore.savePayTwoOrder(order);
if (DefaultNumberConstants.TWO_HUNDRED == (Integer) jsonObject.get("code")) {
i++;
// 修改账户信息 开通服务
JSONObject jsonObject2 = requestCore.updateSellerAccount(order, false);
if (DefaultNumberConstants.TWO_HUNDRED != (Integer) jsonObject2.get("code")) {
log.error("++++++++++++++++修改账户信息,开通淘宝服务失败:{}", order.getNickName());
order.setOrderStatus(i);
requestCore.updateTwoPayOrder(order);
}
} else {
log.error("++++++++++++++++同步到聚石塔内数据失败:{}", order.getNickName());
order.setOrderStatus(DefaultNumberConstants.ONE_NUMBER);
requestCore.updateTwoPayOrder(order);
}
} else {
log.error("++++++++++++++++同步到聚石塔内数据失败:{}", order.getNickName());
order.setOrderStatus(DefaultNumberConstants.ONE_NUMBER);
requestCore.updateTwoPayOrder(order);
}
}
} catch (Exception e) {
order.setOrderStatus(i);
if (i > DefaultNumberConstants.ONE_NUMBER) {
requestCore.updateTwoPayOrder(order);
}
payTwoOrderRepository.save(order);
log.error("the pc response error time {}", LocalTime.now());
return "success";
}
} catch (Exception e) {
order.setOrderStatus(i);
if (i > DefaultNumberConstants.ONE_NUMBER) {
requestCore.updateTwoPayOrder(order);
}
payTwoOrderRepository.save(order);
log.error("the pc response error time {}", LocalTime.now());
throw new TaoMiCommException(ResponseCode.CALLBACK_FAILED.getDesc());
}
return CommonResult.successfulOperation();
return "success";
}
// private void checkParam(HttpServletRequest request, Map<String, String> params) {

@ -75,4 +75,8 @@ public class BasePayOrder implements Serializable {
@Column(name = "order_status")
@ApiModelProperty(value = "订单状态")
private Integer orderStatus;
@Column(name = "is_callback")
@ApiModelProperty(value = "是否回调过 0未回调 1已回调")
private Integer isCallback;
}

@ -75,4 +75,8 @@ public class BasePayTwoOrder implements Serializable {
@Column(name = "master_user_id")
@ApiModelProperty(value = "主账号id")
private Long masterUserId;
@Column(name = "is_callback")
@ApiModelProperty(value = "是否回调过 0未回调 1已回调")
private Integer isCallback;
}

Loading…
Cancel
Save