ApiService.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package com.llisoft.pay.service;
  2. import java.util.Objects;
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7. import com.llisoft.pay.common.Constant;
  8. import com.llisoft.pay.config.MtaException;
  9. import com.llisoft.pay.dao.ItemDao;
  10. import com.llisoft.pay.dao.OrderDao;
  11. import com.llisoft.pay.entity.App;
  12. import com.llisoft.pay.entity.Item;
  13. import com.llisoft.pay.entity.Order;
  14. import com.llisoft.pay.util.CodeUtil;
  15. import com.llisoft.pay.vo.ApiAddResponseVo;
  16. import com.llisoft.pay.vo.ApiPayWxAppResponseVo;
  17. import com.llisoft.pay.vo.ApiInfoResponseVo;
  18. @Service
  19. public class ApiService {
  20. private Logger logger = LoggerFactory.getLogger(ApiService.class);
  21. @Autowired
  22. private ItemDao payDao;
  23. @Autowired
  24. private OrderDao orderDao;
  25. @Autowired
  26. private PayAliService payAliService;
  27. @Autowired
  28. private PayWxV3Service payWxV3Service;
  29. /**
  30. * 下单
  31. * @param money 金额(分)
  32. * @param title 订单描述
  33. * @return
  34. */
  35. public ApiAddResponseVo add(int money, String title) {
  36. Order order = new Order();
  37. order.setOrderNum(CodeUtil.time()); // 当前时间+5位随机数
  38. order.setOrderMoney(money); // 订单金额(分)
  39. order.setOrderTitle(title); // 订单描述
  40. order.setOrderStatus(Constant.STATUS_WAIT);
  41. orderDao.insert(order);
  42. logger.debug("添加订单成功: {}", order.getOrderNum());
  43. ApiAddResponseVo responseVo = new ApiAddResponseVo();
  44. responseVo.setId(order.getOrderNum());
  45. responseVo.setMoney(money);
  46. return responseVo;
  47. }
  48. /**
  49. * 查询
  50. * @param id orderNum
  51. * @return
  52. */
  53. public ApiInfoResponseVo info(String id) {
  54. Order order = orderDao.selectByOrderNum(id);
  55. if(Objects.isNull(order)) {
  56. throw MtaException.build("订单不存在:" + id);
  57. }
  58. ApiInfoResponseVo responseVo = new ApiInfoResponseVo();
  59. responseVo.setPid(order.getOrderNum());
  60. responseVo.setPayed(order.getOrderStatus() == Constant.STATUS_PAYED);
  61. return responseVo;
  62. }
  63. /**
  64. * 支付 栋科
  65. * @param id orderNum
  66. * @param type 支付方式(1支付宝,2微信)
  67. * @return
  68. */
  69. public ApiPayWxAppResponseVo payDongke(String appid, String id, byte type) {
  70. Order order = orderDao.selectByOrderNum(id);
  71. if(Objects.isNull(order)) {
  72. throw MtaException.build("订单不存在:" + id);
  73. }
  74. if(order.getOrderStatus() == Constant.STATUS_PAYED){
  75. throw MtaException.build("订单已支付:" + id);
  76. }
  77. // 添加支付记录
  78. Item item = new Item();
  79. item.setPayNum(CodeUtil.uuid());
  80. item.setPayType(type);
  81. item.setOrderId(order.getOrderId());
  82. item.setPayMoney(order.getOrderMoney());
  83. item.setPayStatus(Constant.STATUS_WAIT);
  84. payDao.insert(item);
  85. // 发起支付
  86. if (item.getPayType() == Constant.TYPE_ALI) { // 支付宝
  87. }else if (item.getPayType() == Constant.TYPE_WX) { // 微信
  88. payWxV3Service.appDongke(appid, item.getPayNum(), item.getPayMoney(), order.getOrderTitle());
  89. return wxPayService.pay(payNum, order.getOrderMoney(), order.getOrderTitle());
  90. }
  91. String payNum = payService.add(payType, order.getOrderMoney(), order.getOrderId());
  92. return payService.pay(payNum, isMobile);
  93. }
  94. /**
  95. * 支付 青谷
  96. * @param id orderNum
  97. * @param type 支付方式(1支付宝,2微信)
  98. * @return
  99. */
  100. public ApiPayWxAppResponseVo payQinggu(String appid, String id, byte type) {
  101. // TODO Auto-generated method stub
  102. return null;
  103. }
  104. }