支付相关信息 - yiyanglij/yiyanglij.github.io GitHub Wiki

Controller

@ApiOperation("小程序拼团订单支付申请")
@ApiImplicitParams({
        @ApiImplicitParam(name = "groupShoppingId", value = "团购主表id", dataType = "Long"),
        @ApiImplicitParam(name = "goodsAmount", value = "应付金额", dataType = "BigDecimal"),
})
@GetMapping(value = "payOrderOMS")
Map payOrderFromOMS(@SpringQueryMap HttpServletRequest request, @SpringQueryMap GroupShoppingMemberVo groupShoppingMemberVo);

Service

@Override
public Map payOrderFromOMS(HttpServletRequest request, GroupShoppingMemberVo groupShoppingMemberVo) {
    Long memberId = this.accountHelper.getMemberId();
    AssertExt.notNull(memberId, "用户未授权");
    AssertExt.notNull(groupShoppingMemberVo.getGroupShoppingId(), "团购主表id不能为空");
    GroupShoppingVo shoppingById = omsGoodsApi.getGroupShoppingById(groupShoppingMemberVo.getGroupShoppingId());

    groupShoppingMemberVo.setMemberId(memberId);
    groupShoppingMemberVo.setOrderNo(new OrderInfo().setDistributionType(3).createOrderNo());
    groupShoppingMemberVo.setStatus("0");
    groupShoppingMemberVo.setCreateTime(LocalDateTime.now());
    groupShoppingMemberVo.setGroupShoppingRuleId(shoppingById.getGroupShoppingRuleId());
    //取件码
    groupShoppingMemberVo.setPickupCode("");
    //插入前先根据会员Id和团购主表id查询是否已经存在这条数据了,存在则查询出来用以后续业务操作,不存在再新增
    GroupShoppingMemberVo orderNo = omsGoodsApi.getOrderNo(groupShoppingMemberVo);
    if (orderNo == null) {
        Integer integer = omsGoodsApi.insertShoppingMember(groupShoppingMemberVo);
        if (integer < 1)
            throw new RuntimeException("加入团购支付失败,请重新支付");
    }

    OrderInfoVo orderInfoVo = new OrderInfoVo();
    orderInfoVo.setOrderNo(groupShoppingMemberVo.getOrderNo());

    return orderInfoApi.payGroupShopping(request, orderInfoVo,groupShoppingMemberVo);
}

订单Controller

@ApiOperation("小程序订单支付申请")
@ApiImplicitParams({
        @ApiImplicitParam(name = "goodsAmount", value = "应付金额", dataType = "BigDecimal")
})
@GetMapping(value = "payGroupShopping")
Map payGroupShopping(@SpringQueryMap HttpServletRequest request, @SpringQueryMap OrderInfoVo orderInfoVo, GroupShoppingMemberVo 
shoppingById);

订单Service

@Override
public Map payGroupShopping(HttpServletRequest request, OrderInfoVo orderInfoVo, GroupShoppingMemberVo shoppingById) {
    Long memberId = this.accountHelper.getMemberId();
    AssertExt.notNull(memberId, "用户未授权");
    AssertExt.notBlank(orderInfoVo.getOrderNo(), "单号为空");

    //B2C-WX-订单号-yyyymmddhhmiss

    String payFlowNo="B2C-WX-"+orderInfoVo.getOrderNo()+"-"+ Calendar.getInstance().getTimeInMillis()/1000;


    List<GroupShoppingRuleGoodsVo> list = omsGoodsApi.getGroupShoppingRuleGoods(shoppingById.getGroupShoppingRuleId());

    Map payOrderResult=null;
    PayOrderVo payOrderReq=null;
    Member member= memberMapper.selectById(memberId);
    StringBuilder goodsStr=new StringBuilder();
    for (GroupShoppingRuleGoodsVo orderGoods: list){
        goodsStr.append(orderGoods.getGoodsName()+" "+orderGoods.getSpecifications()+"×"+orderGoods.getGoodsNum()+";");
    }
    payOrderReq=new PayOrderVo();
    payOrderReq.setOrderNo(payFlowNo);
    payOrderReq.setDataSource(APP_NAME);
    payOrderReq.setTotalFee(shoppingById.getGoodsAmount().multiply(new BigDecimal(100)).intValue());//分为单位  要转换

    payOrderReq.setBody(goodsStr.toString());
    payOrderReq.setSpbillCreateIp(getVisitorIp(request));
    payOrderReq.setOpenid(member.getOpenid());
    payOrderResult=  payOrderService.payOrder(payOrderReq).getPayInfo();
    log.info("支付申请结果:"+new Gson().toJson(payOrderResult));
    payOrderResult.put("goodsList",list);

    PayTradeLog tradeLog=new PayTradeLog();
    tradeLog.setPayFlowNo(payOrderReq.getOrderNo());
    tradeLog.setOrderNo(shoppingById.getOrderNo());
    tradeLog.setMerchantId(payOrderResult.get("Merchant").toString());
    tradeLog.setPayFee(payOrderReq.getTotalFee().longValue());
    tradeLog.setCreateTime(LocalDateTime.now());
    payTradeLogMapper.insert(tradeLog);

    payOrderResult.remove("Merchant");
    return payOrderResult;
}