支付成功/ 查单添加 渠道用户信息;

This commit is contained in:
terrfly 2021-08-30 10:51:24 +08:00
parent 96eaa92e30
commit 1985162085
9 changed files with 33 additions and 13 deletions

View File

@ -84,6 +84,7 @@ public class AliBar extends AlipayPaymentService {
//放置 响应数据
channelRetMsg.setChannelAttach(alipayResp.getBody());
channelRetMsg.setChannelOrderId(alipayResp.getTradeNo());
channelRetMsg.setChannelUserId(alipayResp.getBuyerUserId()); //渠道用户标识
// 调起接口成功后业务判断务必谨慎 避免因代码编写bug导致不能正确返回订单状态信息

View File

@ -91,6 +91,7 @@ public class WxBar extends WxpayPaymentService {
WxPayMicropayResult wxPayMicropayResult = wxPayService.micropay(request);
channelRetMsg.setChannelOrderId(wxPayMicropayResult.getTransactionId());
channelRetMsg.setChannelUserId(wxPayMicropayResult.getOpenid());
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_SUCCESS);
} catch (WxPayException e) {

View File

@ -93,6 +93,7 @@ public abstract class AbstractPayOrderController extends ApiController {
}
payOrder.setWayCode(wayCode); // 需要将订单更新 支付方式
payOrder.setChannelUser(bizRQ.getChannelUserId()); //更新渠道用户信息
bizRQ.setMchNo(payOrder.getMchNo());
bizRQ.setAppId(payOrder.getAppId());
bizRQ.setMchOrderNo(payOrder.getMchOrderNo());
@ -362,6 +363,12 @@ public abstract class AbstractPayOrderController extends ApiController {
payOrder.setErrCode(channelRetMsg.getChannelErrCode());
payOrder.setErrMsg(channelRetMsg.getChannelErrMsg());
// 聚合码场景 订单对象存在会员信息 不可全部以上游为准
if(StringUtils.isNotEmpty(channelRetMsg.getChannelUserId())){
payOrder.setChannelUser(channelRetMsg.getChannelUserId());
}
boolean isSuccess = payOrderService.updateInit2Ing(payOrder.getPayOrderId(), payOrder);
if(!isSuccess){
@ -369,7 +376,7 @@ public abstract class AbstractPayOrderController extends ApiController {
}
isSuccess = payOrderService.updateIng2SuccessOrFail(payOrder.getPayOrderId(), payOrder.getState(),
channelRetMsg.getChannelOrderId(), channelRetMsg.getChannelErrCode(), channelRetMsg.getChannelErrMsg());
channelRetMsg.getChannelOrderId(), channelRetMsg.getChannelUserId(), channelRetMsg.getChannelErrCode(), channelRetMsg.getChannelErrMsg());
if(!isSuccess){
throw new BizException("更新订单异常!");
}

View File

@ -225,7 +225,7 @@ public class ChannelNoticeController extends AbstractCtrl {
//明确失败
}else if(ChannelRetMsg.ChannelState.CONFIRM_FAIL == notifyResult.getChannelState()) {
updateOrderSuccess = payOrderService.updateIng2Fail(payOrderId, notifyResult.getChannelOrderId(), notifyResult.getChannelErrCode(), notifyResult.getChannelErrMsg());
updateOrderSuccess = payOrderService.updateIng2Fail(payOrderId, notifyResult.getChannelOrderId(), notifyResult.getChannelUserId(), notifyResult.getChannelErrCode(), notifyResult.getChannelErrMsg());
}
}

View File

@ -153,5 +153,10 @@ public class UnifiedOrderRQ extends AbstractMchAppRQ {
return this;
}
/** 获取渠道用户ID **/
public String getChannelUserId(){
return this.channelUser;
}
}

View File

@ -40,4 +40,9 @@ public class AliJsapiOrderRQ extends UnifiedOrderRQ {
this.setWayCode(CS.PAY_WAY_CODE.ALI_JSAPI);
}
@Override
public String getChannelUserId(){
return this.buyerUserId;
}
}

View File

@ -40,4 +40,8 @@ public class WxJsapiOrderRQ extends UnifiedOrderRQ {
this.setWayCode(CS.PAY_WAY_CODE.WX_JSAPI);
}
@Override
public String getChannelUserId() {
return this.openid;
}
}

View File

@ -77,7 +77,7 @@ public class ChannelOrderReissueService {
// 查询成功
if(channelRetMsg.getChannelState() == ChannelRetMsg.ChannelState.CONFIRM_SUCCESS) {
if (payOrderService.updateIng2Success(payOrderId, channelRetMsg.getChannelOrderId())) {
if (payOrderService.updateIng2Success(payOrderId, channelRetMsg.getChannelOrderId(), channelRetMsg.getChannelUserId())) {
//订单支付成功其他业务逻辑
payOrderProcessService.confirmSuccess(payOrder);
@ -85,7 +85,7 @@ public class ChannelOrderReissueService {
}else if(channelRetMsg.getChannelState() == ChannelRetMsg.ChannelState.CONFIRM_FAIL){ //确认失败
//1. 更新支付订单表为失败状态
payOrderService.updateIng2Fail(payOrderId, channelRetMsg.getChannelOrderId(), channelRetMsg.getChannelErrCode(), channelRetMsg.getChannelErrMsg());
payOrderService.updateIng2Fail(payOrderId, channelRetMsg.getChannelOrderId(), channelRetMsg.getChannelUserId(), channelRetMsg.getChannelErrCode(), channelRetMsg.getChannelErrMsg());
}

View File

@ -64,16 +64,12 @@ public class PayOrderService extends ServiceImpl<PayOrderMapper, PayOrder> {
updateRecord.setWayCode(payOrder.getWayCode());
updateRecord.setMchFeeRate(payOrder.getMchFeeRate());
updateRecord.setMchFeeAmount(payOrder.getMchFeeAmount());
updateRecord.setChannelUser(payOrder.getChannelUser());
return update(updateRecord, new LambdaUpdateWrapper<PayOrder>()
.eq(PayOrder::getPayOrderId, payOrderId).eq(PayOrder::getState, PayOrder.STATE_INIT));
}
/** 更新订单状态 【支付中】 --》 【支付成功】 **/
public boolean updateIng2Success(String payOrderId, String channelOrderNo){
return updateIng2Success(payOrderId, channelOrderNo, null);
}
/** 更新订单状态 【支付中】 --》 【支付成功】 **/
public boolean updateIng2Success(String payOrderId, String channelOrderNo, String channelUserId){
@ -89,13 +85,14 @@ public class PayOrderService extends ServiceImpl<PayOrderMapper, PayOrder> {
/** 更新订单状态 【支付中】 --》 【支付失败】 **/
public boolean updateIng2Fail(String payOrderId, String channelOrderNo, String channelErrCode, String channelErrMsg){
public boolean updateIng2Fail(String payOrderId, String channelOrderNo, String channelUserId, String channelErrCode, String channelErrMsg){
PayOrder updateRecord = new PayOrder();
updateRecord.setState(PayOrder.STATE_FAIL);
updateRecord.setErrCode(channelErrCode);
updateRecord.setErrMsg(channelErrMsg);
updateRecord.setChannelOrderNo(channelOrderNo);
updateRecord.setChannelUser(channelUserId);
return update(updateRecord, new LambdaUpdateWrapper<PayOrder>()
.eq(PayOrder::getPayOrderId, payOrderId).eq(PayOrder::getState, PayOrder.STATE_ING));
@ -103,14 +100,14 @@ public class PayOrderService extends ServiceImpl<PayOrderMapper, PayOrder> {
/** 更新订单状态 【支付中】 --》 【支付成功/支付失败】 **/
public boolean updateIng2SuccessOrFail(String payOrderId, Byte updateState, String channelOrderNo, String channelErrCode, String channelErrMsg){
public boolean updateIng2SuccessOrFail(String payOrderId, Byte updateState, String channelOrderNo, String channelUserId, String channelErrCode, String channelErrMsg){
if(updateState == PayOrder.STATE_ING){
return true;
}else if(updateState == PayOrder.STATE_SUCCESS){
return updateIng2Success(payOrderId, channelOrderNo);
return updateIng2Success(payOrderId, channelOrderNo, channelUserId);
}else if(updateState == PayOrder.STATE_FAIL){
return updateIng2Fail(payOrderId, channelOrderNo, channelErrCode, channelErrMsg);
return updateIng2Fail(payOrderId, channelOrderNo, channelUserId, channelErrCode, channelErrMsg);
}
return false;
}