支付回调业务代码修改

master
yqy 3 years ago
parent e547599862
commit 9f701567e6

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

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

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

@ -75,4 +75,8 @@ public class BasePayOrder implements Serializable {
@Column(name = "order_status") @Column(name = "order_status")
@ApiModelProperty(value = "订单状态") @ApiModelProperty(value = "订单状态")
private Integer orderStatus; 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") @Column(name = "master_user_id")
@ApiModelProperty(value = "主账号id") @ApiModelProperty(value = "主账号id")
private Long masterUserId; private Long masterUserId;
@Column(name = "is_callback")
@ApiModelProperty(value = "是否回调过 0未回调 1已回调")
private Integer isCallback;
} }

Loading…
Cancel
Save