@ResponseBody @RequestMapping("/aliAppPay") public String aliAppPay(HttpServletRequest rep) { String packName = ""; String payAmount = ""; String orderNo = ""; String id = rep.getParameter("id"); OrderV orderV = orderService.getOrderVById(Integer.parseInt(id)); if (orderV != null) { packName = orderV.getPackageName(); payAmount = orderV.getPrice().toString(); orderNo = orderV.getOrderNo(); } //实例化客户端 https://openapi.alipay.com/gateway.do AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", "UTF-8", ALIPAY_PUBLIC_KEY, "RSA2"); //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称://alipay.trade.app.pay AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方//式(model和biz_content同时存在的情况下取biz_content)。 AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); model.setBody("IPHONE6"); model.setSubject(packName);//商品的标题/交易标题/订单标题/订单关键字等。 model.setOutTradeNo(orderNo);//商户网站唯一订单号 model.setTimeoutExpress("1m");//设置未付款支付宝交易的超时时间,一旦超时,该笔交易就会自动被关闭。 // 当用户进入支付宝收银台页面(不包括登录页面),会触发即刻创建支付宝交易,此时开始计时。 // 取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建, // 都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。 model.setTotalAmount(payAmount); //订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] model.setTotalAmount("0.01"); model.setProductCode("QUICK_MSECURITY_PAY");//销售产品码,商家和支付宝签约的产品码,为固定值QUICK_MSECURITY_PAY request.setBizModel(model);// 将model 参数发送 request.setNotifyUrl("");//回调地址 // request.setReturnUrl(); try { //这里和普通的接口调用不同,使用的是sdkExecute AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); System.out.println(response.getBody());//就是orderString 可以直接给客户端请求,//无需再做处理。 return "success"; } catch (AlipayApiException e) { e.printStackTrace(); return "fail"; } }
支付宝APP支付
最新推荐文章于 2021-10-17 22:19:20 发布