提交 7e89971d authored 作者: zhouzhigang's avatar zhouzhigang

--no commit message

上级 ffd5dca7
......@@ -48,5 +48,8 @@ public class FgOrderForm {
@ApiModelProperty("邮费 必传,如果没有邮费传值0")
private BigDecimal express;
@ApiModelProperty("来源(0 pc,1 wap,2 app)")
private String source;
}
package com.zrqx.order.commons.form.fg;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class WapOrderForm extends FgOrderForm{
@ApiModelProperty("支付类型 0支付宝 1微信")
private String payType;
}
......@@ -34,6 +34,7 @@ import com.zrqx.order.commons.form.fg.FgQueryOrderPageForm;
import com.zrqx.order.commons.form.fg.FgQueryRecentlyForm;
import com.zrqx.order.commons.form.fg.FgTopUpOrderForm;
import com.zrqx.order.commons.form.fg.SaveOrderCommentForm;
import com.zrqx.order.commons.form.fg.WapOrderForm;
import com.zrqx.order.commons.model.Order;
import com.zrqx.order.commons.vo.fg.FgBuyOrderInfoPageVo;
import com.zrqx.order.commons.vo.fg.FgOrderInfoPageVo;
......@@ -94,6 +95,14 @@ public class FgOrderController {
return CallBack.success(result);
}
@ApiOperation("wap生成订单并支付")
@PostMapping("/wap/pay/order")
public CallBack<PayInfoVo> createOrderAndPay(@RequestBody WapOrderForm form){
Integer orderId = fgOrderService.createOrder(form);
Order o = fgOrderService.notNull(orderId);
return CallBack.success(fgOrderService.payWap(o, form.getSource(), form.getPayType()));
}
@ApiOperation("接收聚合支付调用----拿到支付回调修改订单状态")
@PostMapping("/receive/pay_callback")
......
......@@ -49,6 +49,17 @@ public interface FgOrderService extends BaseService<Order, Integer>{
Integer createOrder(BigDecimal price);
/**
* Description: 订单根据不同的来源和支付类型发起支付
* @param o 订单
* @param source 订单来源 用于标识pc或wap,支付pc和wap发起支付不同
* @param payType 支付类型
* @return com.zrqx.core.vo.pay.PayInfoVo
* @author lpf
* @date 2020-04-09 10:49
*/
PayInfoVo payWap(Order o, String source, String payType);
/**
* 接收三方调用----拿到支付回调修改订单状态
* @param form 支付结果
* @author lw
......
......@@ -199,6 +199,36 @@ public class FgOrderServiceImpl extends BaseServiceImpl<Order, Integer> implemen
logger.info("创建订单:infoList:" + infoList);
return o.getId();
}
@Override
public PayInfoVo payWap(Order order, String source, String payType) {
validateOrder(order);
CallBack<PayInfoVo> result = fgPayClient.pay(order.getCode(), source, payType);
if (PayTypeEnum.BALANCE.getCode().equals(payType)) {
OrderTypeInterface orderTypeService = springContext.getEnumsBindBean(OrderTypeEnum.class, order.getOrderType(), OrderTypeInterface.class);
if (result.hasEntity() && result.getData().getIsPay()) {
PayQueryReturnVo payQueryReturnVo = this.createPayQueryReturnVo(order);
orderTypeService.paySuccess(order, payQueryReturnVo);
}
logger.warn("FgOrderServiceImpl#pay余额支付失败");
return null;
}
return result.hasEntity() ? result.getData() : new PayInfoVo(false, null, "发起支付失败");
}
/**
* Description: 验证订单的归属人是否为当前登录用户,如果不属于则抛出BaseException
* @param o
* @return boolean
* @author lpf
* @date 2020-04-09 10:58
*/
private void validateOrder(Order o) {
if (o.getCreater() != null && o.getCreater().equals(fgRedisManage.getMember().getId())) {
return;
}
throw new BaseException("订单:" + o.getCode() + ",不属于当前登录用户");
}
/**
* 获取前台提交订单详情表单
......
......@@ -32,6 +32,13 @@ public class FgPayController {
return CallBack.success(fgPayService.pay(orderCode, payType));
}
@ApiOperation("支付(根据不同的来源和支付类型发起支付)")
@GetMapping("/pay-wap")
public CallBack<PayInfoVo> pay(String orderCode, String source, String payType) {
return CallBack.success(fgPayService.pay(orderCode, source, payType));
}
@ApiOperation("接收三方调用----获取订单详情")
@GetMapping("/get/order_info")
public CallBack<OrderPayVo> getOrderPayVo(String code){
......
......@@ -16,6 +16,17 @@ public interface FgPayService {
* @date: 2019年1月21日 下午5:17:16
*/
PayInfoVo pay(String orderCode, String payType);
/**
* Description: 根据不同的来源不同的支付类型发起支付
* @param orderCode 订单code
* @param source 来源
* @param payType 支付类型
* @return com.zrqx.core.vo.pay.PayInfoVo
* @author lpf
* @date 2020-04-09 11:27
*/
PayInfoVo pay(String orderCode, String source, String payType);
/**
* 调用订单----获取订单详情
......
......@@ -17,8 +17,10 @@ import com.zrqx.core.client.vo.order.OrderPayVo;
import com.zrqx.core.client.vo.pay.PayInfoVo;
import com.zrqx.core.client.vo.third.pay.payquery.PayQueryReturnVo;
import com.zrqx.core.commons.redis.Redis;
import com.zrqx.core.enums.SourceEnum;
import com.zrqx.core.enums.order.OrderTypeEnum;
import com.zrqx.core.enums.third.pay.PayTypeEnum;
import com.zrqx.core.enums.third.pay.WeChartType;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.util.response.CallBack;
import com.zrqx.pay.commons.form.BalanceUpdateForm;
......@@ -46,6 +48,8 @@ public class FgPayServiceImpl implements FgPayService {
private FgAssetsManage fgAssetsManage;
@Autowired
private Redis redis;
@Autowired
private FgTransferLogService transferLogService;
/**
......@@ -101,10 +105,62 @@ public class FgPayServiceImpl implements FgPayService {
log.info("调用三方服务获取支付url完成-------\n" + result.getData());
String response = result.getData();
transferLogMapper.insert(new TransferLog("pay", "去支付(获取页面或二维码url)", "order", "third",
transferLogService.insert(new TransferLog("pay", "去支付(获取页面或二维码url)", "order", "third",
orderCode, "orderCode:" + orderCode + "paytype:" + payType, response, new Date()));
return new PayInfoVo(false, response, null);
}
@Override
public PayInfoVo pay(String orderCode, String source, String payType) {
if(fgPayRecordManage.checkOrderIsConsume(orderCode)) {
log.error("订单:" + orderCode + "已经被支付");
return new PayInfoVo(false, null, "该订单已经被支付");
}
CallBack<OrderPayVo> OrderPayVoResult = fgOrderClient.getOrderInfo(orderCode);
if(OrderPayVoResult == null || OrderPayVoResult.getData() == null) {
return new PayInfoVo(false, null, "获取订单失败");
}
OrderPayVo orderPayVo = OrderPayVoResult.getData();
// 余额支付
if(PayTypeEnum.BALANCE.getCode().equals(payType)){
BalanceUpdateForm balanceUpdateForm = new BalanceUpdateForm(redis.getMember().getId(),
0 - new Double(orderPayVo.getPayment()));
log.info("订单:" + orderCode + "开始进行余额支付-------\n参数:" + balanceUpdateForm);
UpdateMemberAssetsResultVo resultVo = fgAssetsManage.balanceUpdate(balanceUpdateForm);
if(resultVo.getIsUpdate()) {
fgPayRecordManage.insertPayRecordManage(new PayRecordForm(Double.parseDouble(orderPayVo.getPayment()),
resultVo.getBalance(), 1, payType, orderCode, 1));
}
// 返回支付成功,订单服务修改状态
return new PayInfoVo(resultVo.getIsUpdate(), null, resultVo.getMessage());
}
// 三方支付
ToPayForm toPayForm = new ToPayForm();
toPayForm.setOut_trade_no(orderCode);
toPayForm.setPayType(payType);
// if(PayTypeEnum.WECHAT.getCode().equals(payType)){
if (SourceEnum.PC.getCode().equals(source)) {
toPayForm.setTrade_type(WeChartType.NATIVE.getCode());
} else {
toPayForm.setTrade_type(WeChartType.H5.getCode());
}
// }
log.info("开始调用三方服务获取支付url-------");
CallBack<String> result = thirdClient.getPayUrl(toPayForm);
if(result == null || result.notEntity()) {
return new PayInfoVo(false, null, "支付失败");
}
log.info("调用三方服务获取支付url完成-------\n" + result.getData());
String response = result.getData();
transferLogService.insert(new TransferLog("pay", "去支付(获取页面或二维码url)", "order", "third",
orderCode, "orderCode:" + orderCode + "paytype:" + payType, response, new Date()));
return new PayInfoVo(false, response, null);
}
/**
* 调用订单----获取订单详情
......@@ -176,7 +232,7 @@ public class FgPayServiceImpl implements FgPayService {
}
}
log.info(form.getOut_trade_no() + "开始添加日志-------------------");
transferLogMapper.insert(new TransferLog("receiveThirdCall", "接收支付回调并调用订单修改状态", "third", "order",
transferLogService.insert(new TransferLog("receiveThirdCall", "接收支付回调并调用订单修改状态", "third", "order",
form.getOut_trade_no(), "code:" + form.getOut_trade_no() + "paytype:" + form.getPayType()
, String.valueOf(result.notEntity() ? false : result.getData()), new Date()));
......@@ -208,7 +264,7 @@ public class FgPayServiceImpl implements FgPayService {
} catch (JsonProcessingException e) {
log.error("对象转String 失败");
}
transferLogMapper.insert(new TransferLog("queryPayInfo", "获取支付详情", "third", "order",
transferLogService.insert(new TransferLog("queryPayInfo", "获取支付详情", "third", "order",
orderCode, "code:" + orderCode + "paytype:" + payType
, mapJakcson, new Date()));
return result.hasEntity() ? result.getData() : null;
......
package com.zrqx.pay.fg.service;
import com.zrqx.core.service.BaseService;
import com.zrqx.pay.commons.model.TransferLog;
public interface FgTransferLogService extends BaseService<TransferLog,Integer>{
}
package com.zrqx.pay.fg.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.pay.commons.model.TransferLog;
import com.zrqx.pay.fg.mapper.FgTransferLogMapper;
@Service
public class FgTransferLogServiceImpl extends BaseServiceImpl<TransferLog,Integer> implements FgTransferLogService{
@Autowired
private FgTransferLogMapper fgTransferLogMapper;
@Override
public BaseMapper<TransferLog> getMapper() {
return fgTransferLogMapper;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论