liujie
2026-04-20 af1bdf94021985a93f7e95854915653b6a2e9580
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -1541,4 +1541,55 @@
        baseWarpper.setId(orderCrossCity.getId());
        return ResultUtil.success(baseWarpper);
    }
    @Override
    public ResultUtil orderOnBehalfPay(int crossCityOrderId, int type, Integer driverId) throws Exception {
        OrderCrossCity order = orderCrossCityMapper.selectById(crossCityOrderId);
        if (order == null) {
            return ResultUtil.error("订单不存在");
        }
        if (!order.getDriverId().equals(driverId)) {
            return ResultUtil.error("您没有权限支付此订单");
        }
        if (order.getState() != 7) {
            return ResultUtil.error("订单不在待支付,无法完成订单");
        }
        if (type == 1) {
            UserInfo userInfo = userInfoMapper.selectById(order.getUserId());
            if (userInfo == null) {
                return ResultUtil.error("乘客不存在");
            }
            if (ToolUtil.isEmpty(userInfo.getAppletsOpenId())) {
                return ResultUtil.errorOpenId("乘客未绑定微信小程序openid,无法发起微信支付");
            }
            String outTradeNo = buildCbyzxOnBehalfOutTradeNo(crossCityOrderId);
            JSONObject response = cbyzxOrderPayHelper.createOrder(
                    order.getUserId(),
                    userInfo.getAppletsOpenId(),
                    outTradeNo,
                    order.getOrderMoney()
            );
            if (!cbyzxOrderPayHelper.isCreateSuccess(response)) {
                return ResultUtil.error(cbyzxOrderPayHelper.extractMessage(response), response);
            }
            paymentRecordService.saveData(1, order.getDriverId(), 2, crossCityOrderId, 3, 1, order.getOrderMoney(), outTradeNo, 1);
            return ResultUtil.success(response);
        } else if (type == 3) {
            order.setState(2);
            orderCrossCityMapper.updateById(order);
            //添加交易明细
            transactionDetailsService.saveData(driverId, "跨城出行订单", order.getOrderMoney(), 2, 1, 2, 3, order.getId());
            return ResultUtil.success();
        }
        return ResultUtil.error("支付失败");
    }
    /**
     * 创博优代客支付单号,增加业务前缀便于统一回调路由。
     */
    private String buildCbyzxOnBehalfOutTradeNo(Integer orderId) throws Exception {
        return "onBehalf_" + orderId + "_3_" + UUIDUtil.getRandomCode(5);
    }
}