支付相关信息 - 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;
}