You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

151 lines
6.3 KiB

  1. package com.simple.controller;
  2. import com.simple.common.ErrorCode;
  3. import com.simple.enums.EnumPayStatus;
  4. import com.simple.enums.EnumPayWay;
  5. import com.simple.exception.BizMessageException;
  6. import com.simple.exception.MallinkException;
  7. import com.simple.pay.WxPayment;
  8. import com.simple.utils.IPUtil;
  9. import org.apache.log4j.Logger;
  10. import org.apache.commons.io.IOUtils;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.util.Assert;
  13. import org.springframework.web.bind.annotation.*;
  14. import com.github.pagehelper.PageInfo;
  15. import com.simple.common.Result;
  16. import com.simple.common.ResultData;
  17. import com.simple.domain.po.WxPayOrder;
  18. import com.simple.service.WxPayOrderService;
  19. import io.swagger.annotations.ApiImplicitParam;
  20. import io.swagger.annotations.ApiImplicitParams;
  21. import io.swagger.annotations.ApiOperation;
  22. import javax.servlet.http.HttpServletRequest;
  23. import java.util.Map;
  24. @RestController
  25. @RequestMapping("wxPayOrder")
  26. public class WxPayOrderController extends BaseController {
  27. private Logger logger = Logger.getLogger(WxPayOrderController.class);
  28. @Autowired
  29. private WxPayOrderService wxPayOrderService;
  30. @ApiOperation(value = "发起微信小程序支付订单")
  31. @ApiImplicitParams({
  32. @ApiImplicitParam(name = "cUserId", value = "用户id", required = true, dataType = "Long"),
  33. @ApiImplicitParam(name = "orderId", value = "订单ID", required = true, dataType = "Long"),
  34. @ApiImplicitParam(name = "payVendor", value = "支付发起渠道:0-微信小程序", defaultValue = "0",required = false, dataType = "Integer")
  35. })
  36. @RequestMapping(value = "/create", method = RequestMethod.POST)
  37. public ResultData _create(WxPayOrder record, HttpServletRequest request) throws Exception {
  38. logger.info("payment wechat, order create, param : " + record.toString());
  39. try {
  40. record.setIp(IPUtil.getIpAddr(request));
  41. return wxPayOrderService.createPayOrder(record, EnumPayWay.PAY_WAY_WECHAT);
  42. } catch (MallinkException e) {
  43. logger.error("payment wechat, order create error, req 2: " + record.toString() + ", e:" + e.getMessage());
  44. return new ResultData(e.getErrorCode(), e.getMessage());
  45. } catch (Exception e) {
  46. logger.error("payment wechat, order create error, req 3: " + record.toString() + ", e:" + e.getMessage());
  47. }
  48. return new ResultData(ErrorCode.PAYORDER_ERROR.getCode(), ErrorCode.PAYORDER_ERROR.getMessage());
  49. }
  50. /**
  51. *
  52. * @return 接收微信异步通知
  53. * @throws Exception 可能产生的任何异常
  54. */
  55. @RequestMapping(value = "/notify", method = RequestMethod.POST)
  56. public String __doNotify(HttpServletRequest request) throws Exception {
  57. Map<String, String> paramMap = null;
  58. String response;
  59. try {
  60. String xml = IOUtils.toString(request.getInputStream());
  61. paramMap = WxPayment.xmlToMap(xml);
  62. logger.info("payment wxpay, notify, param: " + paramMap.toString() );
  63. response = wxPayOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WEAPP);
  64. logger.info("payment wxpay, notify success, req : " + paramMap.toString() + ", resp: " + response.toString());
  65. return response;
  66. } catch (BizMessageException e) {
  67. logger.error("payment wxpay, notify error, req: " + paramMap.toString() + ", e:" + e.getLocalizedMessage());
  68. return e.getMessage();
  69. } catch (MallinkException e) {
  70. logger.error("payment wxpay, notify error, req: " + paramMap.toString() + ", e:" +e.getLocalizedMessage());
  71. return e.getMessage();
  72. } catch (Exception e) {
  73. logger.error("payment wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage());
  74. return e.getMessage();
  75. }
  76. }
  77. /**
  78. *
  79. * @return 同步回调(订单状态主动检查)
  80. * @throws Exception 可能产生的任何异常
  81. */
  82. @RequestMapping(value = "callback", method = {RequestMethod.GET, RequestMethod.POST})
  83. public String __doCallback(HttpServletRequest request) throws Exception {
  84. logger.info("payment wxpay, callback,request:" + request.toString());
  85. return "\n" +
  86. "\n" +
  87. "<xml>\n" +
  88. "\n" +
  89. " <return_code><![CDATA[SUCCESS]]></return_code>\n" +
  90. " <return_msg><![CDATA[OK]]></return_msg>\n" +
  91. "</xml>\n";
  92. }
  93. @ApiOperation("分页列表接口")
  94. @GetMapping("list")
  95. @ApiImplicitParams({
  96. @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
  97. @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
  98. public ResultData list(@ModelAttribute WxPayOrder wxPayOrder,Integer pageNum, Integer pageSize) {
  99. if (null == wxPayOrder) wxPayOrder = new WxPayOrder();
  100. final PageInfo<WxPayOrder> page = wxPayOrderService.listAsPage(wxPayOrder, pageNum, pageSize);
  101. return new ResultData(page);
  102. }
  103. @ApiOperation("新增接口")
  104. @PostMapping("add")
  105. public ResultData add(@RequestBody WxPayOrder wxPayOrder) {
  106. //Assert.notNull(wxPayOrder.getName(), "角色名不能为空");
  107. //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
  108. wxPayOrderService.saveOrUpdate(wxPayOrder);
  109. return new ResultData();
  110. }
  111. @ApiOperation("根据id更新接口")
  112. @PostMapping("update")
  113. public ResultData update(@RequestBody WxPayOrder wxPayOrder) {
  114. wxPayOrderService.saveOrUpdate(wxPayOrder);
  115. return new ResultData();
  116. }
  117. @ApiOperation("根据id删除接口")
  118. @GetMapping("/del")
  119. @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
  120. public ResultData delete(Long id) {
  121. wxPayOrderService.deleteById(id);
  122. return new ResultData(Result.SUCCESS, "删除成功", null);
  123. }
  124. @ApiOperation("根据id查询接口")
  125. @GetMapping("/findById")
  126. @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
  127. public ResultData findById(Long id) {
  128. return new ResultData(Result.SUCCESS,"查询成功",wxPayOrderService.getById(id));
  129. }
  130. }