package com.simple.controller; import com.simple.common.ErrorCode; import com.simple.enums.EnumPayStatus; import com.simple.enums.EnumPayWay; import com.simple.exception.BizMessageException; import com.simple.exception.MallinkException; import com.simple.pay.WxPayment; import com.simple.utils.IPUtil; import org.apache.log4j.Logger; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; import com.github.pagehelper.PageInfo; import com.simple.common.Result; import com.simple.common.ResultData; import com.simple.domain.po.WxPayOrder; import com.simple.service.WxPayOrderService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import javax.servlet.http.HttpServletRequest; import java.util.Map; @RestController @RequestMapping("wxPayOrder") public class WxPayOrderController extends BaseController { private Logger logger = Logger.getLogger(WxPayOrderController.class); @Autowired private WxPayOrderService wxPayOrderService; @ApiOperation(value = "发起微信小程序支付订单") @ApiImplicitParams({ @ApiImplicitParam(name = "cUserId", value = "用户id", required = true, dataType = "Long"), @ApiImplicitParam(name = "orderId", value = "订单ID", required = true, dataType = "Long"), @ApiImplicitParam(name = "payVendor", value = "支付发起渠道:0-微信小程序", defaultValue = "0",required = false, dataType = "Integer") }) @RequestMapping(value = "/create", method = RequestMethod.POST) public ResultData _create(WxPayOrder record, HttpServletRequest request) throws Exception { logger.info("payment wechat, order create, param : " + record.toString()); try { record.setIp(IPUtil.getIpAddr(request)); return wxPayOrderService.createPayOrder(record, EnumPayWay.PAY_WAY_WECHAT); } catch (MallinkException e) { logger.error("payment wechat, order create error, req 2: " + record.toString() + ", e:" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); } catch (Exception e) { logger.error("payment wechat, order create error, req 3: " + record.toString() + ", e:" + e.getMessage()); } return new ResultData(ErrorCode.PAYORDER_ERROR.getCode(), ErrorCode.PAYORDER_ERROR.getMessage()); } /** * * @return 接收微信异步通知 * @throws Exception 可能产生的任何异常 */ @RequestMapping(value = "/notify", method = RequestMethod.POST) public String __doNotify(HttpServletRequest request) throws Exception { Map paramMap = null; String response; try { String xml = IOUtils.toString(request.getInputStream()); paramMap = WxPayment.xmlToMap(xml); logger.info("payment wxpay, notify, param: " + paramMap.toString() ); response = wxPayOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WEAPP); logger.info("payment wxpay, notify success, req : " + paramMap.toString() + ", resp: " + response.toString()); return response; } catch (BizMessageException e) { logger.error("payment wxpay, notify error, req: " + paramMap.toString() + ", e:" + e.getLocalizedMessage()); return e.getMessage(); } catch (MallinkException e) { logger.error("payment wxpay, notify error, req: " + paramMap.toString() + ", e:" +e.getLocalizedMessage()); return e.getMessage(); } catch (Exception e) { logger.error("payment wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); return e.getMessage(); } } /** * * @return 同步回调(订单状态主动检查) * @throws Exception 可能产生的任何异常 */ @RequestMapping(value = "callback", method = {RequestMethod.GET, RequestMethod.POST}) public String __doCallback(HttpServletRequest request) throws Exception { logger.info("payment wxpay, callback,request:" + request.toString()); return "\n" + "\n" + "\n" + "\n" + " \n" + " \n" + "\n"; } @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) public ResultData list(@ModelAttribute WxPayOrder wxPayOrder,Integer pageNum, Integer pageSize) { if (null == wxPayOrder) wxPayOrder = new WxPayOrder(); final PageInfo page = wxPayOrderService.listAsPage(wxPayOrder, pageNum, pageSize); return new ResultData(page); } @ApiOperation("新增接口") @PostMapping("add") public ResultData add(@RequestBody WxPayOrder wxPayOrder) { //Assert.notNull(wxPayOrder.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); wxPayOrderService.saveOrUpdate(wxPayOrder); return new ResultData(); } @ApiOperation("根据id更新接口") @PostMapping("update") public ResultData update(@RequestBody WxPayOrder wxPayOrder) { wxPayOrderService.saveOrUpdate(wxPayOrder); return new ResultData(); } @ApiOperation("根据id删除接口") @GetMapping("/del") @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) public ResultData delete(Long id) { wxPayOrderService.deleteById(id); return new ResultData(Result.SUCCESS, "删除成功", null); } @ApiOperation("根据id查询接口") @GetMapping("/findById") @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) public ResultData findById(Long id) { return new ResultData(Result.SUCCESS,"查询成功",wxPayOrderService.getById(id)); } }