Commit 19851620 authored by terrfly's avatar terrfly
Browse files

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

parent 96eaa92e
......@@ -84,6 +84,7 @@ public class AliBar extends AlipayPaymentService {
//放置 响应数据
channelRetMsg.setChannelAttach(alipayResp.getBody());
channelRetMsg.setChannelOrderId(alipayResp.getTradeNo());
channelRetMsg.setChannelUserId(alipayResp.getBuyerUserId()); //渠道用户标识
// ↓↓↓↓↓↓ 调起接口成功后业务判断务必谨慎!! 避免因代码编写bug,导致不能正确返回订单状态信息 ↓↓↓↓↓↓
......
......@@ -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) {
......
......@@ -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("更新订单异常!");
}
......
......@@ -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());
}
}
......
......@@ -153,5 +153,10 @@ public class UnifiedOrderRQ extends AbstractMchAppRQ {
return this;
}
/** 获取渠道用户ID **/
public String getChannelUserId(){
return this.channelUser;
}
}
......@@ -40,4 +40,9 @@ public class AliJsapiOrderRQ extends UnifiedOrderRQ {
this.setWayCode(CS.PAY_WAY_CODE.ALI_JSAPI);
}
@Override
public String getChannelUserId(){
return this.buyerUserId;
}
}
......@@ -40,4 +40,8 @@ public class WxJsapiOrderRQ extends UnifiedOrderRQ {
this.setWayCode(CS.PAY_WAY_CODE.WX_JSAPI);
}
@Override
public String getChannelUserId() {
return this.openid;
}
}
......@@ -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());
}
......
......@@ -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;
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment