- 首先要看看基本的入门教程 https://www.bilibili.com/video/av39439872/?p=9&t=195
- 实际开发遇到的坑:
- 因为支付宝给的demo 是在把一个form 表单提交到alipay.trade.page.pay.jsp,alipay.trade.page.pay.jsp再使用request.getParam的方式获得订单号,价格等信息,但是我的alipay.trade.page.pay.jsp是放在web-inf下的,所以需要在购物车页面将数据提交到后台,后台再把数据传到alipay.trade.page.pay.jsp(这里主要写将数据传到alipay.trade.page.pay.jsp,其他逻辑先不讨论)。所以,controller 就需要将返回值设置为modelAndView,具体代码如下
@RequestMapping("pay") public ModelAndView pay(Integer num, Integer price) { //前端页面传过来了两个参数,将他们转换成字符串,其实也可以不用,应为addObject 的第二个参数是object, //传进去Integer 没有什么关系,在后边使用到的时候也会自动转换成String的。 String numIn = num +""; String priceIn = price + ""; ModelAndView mv = new ModelAndView("alipay/alipay.trade.page.pay"); mv.addObject("WIDout_trade_no", Long.toString(System.currentTimeMillis())); mv.addObject("WIDsubject", numIn+""); mv.addObject("WIDtotal_amount", priceIn + ""); mv.addObject("WIDbody", String.valueOf(System.currentTimeMillis())); return mv; }
-
因为我不是使用form表单直接提交到alipay.trade.page.pay.jsp,所以原生的alipay.trade.page.pay.jsp是无法拿到后台传递过来的值的。需要对其进行修改,具体如下,主要是下边这四句
//商户订单号,商户网站订单系统中唯一订单号,必填 String str = (String)request.getAttribute("WIDout_trade_no"); String out_trade_no = str; //付款金额,必填 String total_amount = (String)request.getAttribute("WIDtotal_amount") ; //订单名称,必填 String subject = (String)request.getAttribute("WIDsubject"); String body = (String)request.getAttribute("WIDbody");
- 因为支付宝给的demo 是在把一个form 表单提交到alipay.trade.page.pay.jsp,alipay.trade.page.pay.jsp再使用request.getParam的方式获得订单号,价格等信息,但是我的alipay.trade.page.pay.jsp是放在web-inf下的,所以需要在购物车页面将数据提交到后台,后台再把数据传到alipay.trade.page.pay.jsp(这里主要写将数据传到alipay.trade.page.pay.jsp,其他逻辑先不讨论)。所以,controller 就需要将返回值设置为modelAndView,具体代码如下
其他就没有什么特别的了