网页版的支付宝配置

/**
     * by dingyl 国内支付宝
     *
     * @return
     * @throws IOException
     */
    @RequestMapping(value = "/payBase")
    public String payBase(@RequestParam String out_trade_no, @RequestParam String total_fee) throws IOException {
        // PrintWriter out = response.getWriter();
        String result = "";
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date date = new Date();
        // 失败之后跳转的页面
        // String type=request.getParameter("type");
        String ress = request.getHeader("referer");
        session.setAttribute("url", ress);
        // 支付类型
        // 必填,不能修改
        String payment_type = "1";
        // 服务器异步通知页面路径
        // 需http://格式的完整路径,不能加?id=123这类自定义参数
        // String notify_url =
        // "http://121.40.117.205:8090/yhyj/aliapi/async.htm";
        // 页面跳转同步通知页面路径
        // 需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
        // String return_url =
        // "http://121.40.117.205:8090/yhyj/aliapi/return_url.htm";

        // 服务器异步通知页面路径
        // 需http://格式的完整路径,不能加?id=123这类自定义参数
        String notify_url = "http://www.muzhiyouxuan.com/yhyj/aliapi/async.htm";
        // 页面跳转同步通知页面路径
        // 需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
        String return_url = "http://www.muzhiyouxuan.com/yhyj/aliapi/return_url.htm";

        OrderBuy orderBuy = orderBuyService.getOrderBuyByOrderNumber(out_trade_no);

        // 订单名称
        // 必填
        String subject = "";
        if (orderBuy != null) {
            if (orderBuy.getOrderItemList() != null && orderBuy.getOrderItemList().size() > 0) {
                for (OrderItem item : orderBuy.getOrderItemList()) {
                    subject = item.getProductName() + " ";
                }
            }
        }

//        total_fee = "0.01";

        Map<String, String> sParaTemp = new HashMap<String, String>();
        sParaTemp.put("service", "create_direct_pay_by_user");// 接口服务----即时到账
        sParaTemp.put("partner", AlipayConfig.partner);// 支付宝PID
        sParaTemp.put("_input_charset", AlipayConfig.input_charset);// 统一编码
        sParaTemp.put("payment_type", payment_type);// 支付类型
        sParaTemp.put("notify_url", notify_url);// 异步通知页面
        sParaTemp.put("return_url", return_url);// 页面跳转同步通知页面
        sParaTemp.put("seller_email", AlipayConfig.seller_email);// 卖家支付宝账号
        sParaTemp.put("out_trade_no", out_trade_no);// 商品订单编号
        sParaTemp.put("subject", subject);// 商品名称
        sParaTemp.put("total_fee", total_fee);// 价格
        sParaTemp.put("trade_no", format.format(date));// 交易号
        // sParaTemp.put("it_b_pay", "2h");

        // 建立请求
        try {
            String sHtmlText = AlipaySubmit.buildRequest(sParaTemp, "post", "确认");
            result = "{\"success\":true,\"msg\":\"跳转成功\"}";
            StringUtil.writeToWeb(sHtmlText, "html", response);
            return null;
        } catch (Exception e) {
            if (log.isErrorEnabled()) {
                log.error("ddddddddddddddddddddd");
            }
            result = "{\"success\":false,\"msg\":\"跳转失败,请稍候再试!\"}";
            StringUtil.writeToWeb(result, "html", response);
            e.printStackTrace();
            return null;
        }
    }

    /**
     * by dingyl 同步通知的页面的Controller
     *
     * @param request
     * @param response
     * @return
     */
    @RequestMapping(value = "/return_url")
    public String Return_url(HttpServletRequest request, HttpServletResponse response) {
//        return pay(request, response);
        
        System.out.println("进入支付回滚");
        Map<String, String> params = new HashMap<String, String>();
        try {
            Map requestParams = request.getParameterMap();
            System.out.println("请求参数:" + requestParams.toString());

            System.out.println("开始解析参数");
            for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
                String name = (String) iter.next();
                String[] values = (String[]) requestParams.get(name);
                String valueStr = "";
                for (int i = 0; i < values.length; i++) {
                    valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
                }
                System.out.println(name.getBytes());
//                params.put(name, new String(valueStr.getBytes("ISO-8859-1"), "UTF-8"));
                params.put(name, valueStr);
            }
            System.out.println(params.toString());
            System.out.println("结束解析参数");

            String tradeNo = request.getParameter("out_trade_no");
            System.out.println("支付宝流水号:" + tradeNo);
            
            Member member = memberService.getMember(tradeNo);
            session.setAttribute("member", member);
            
//            OrderBuy orderBuy=orderBuyService.getOrderBuyByOrderNumber(tradeNo);
           
//            if (orderBuy.getPayStatus()==0) {// 支付是否成功
                return "web/paySuccess.jsp";
//            } else {// 支付是否失败
//                return "web/payFail.jsp";
//                
//            }
        } catch (Exception e) {
            e.printStackTrace();
            return "web/payFail.jsp";
            
        }
        
    }

    /**
     * by dingyl 异步通知付款状态的Controller
     *
     * @param request
     * @param response
     * @return
     */
    @RequestMapping(value = "/async")
    public void async(HttpServletRequest request, HttpServletResponse response) {
        pay(request, response);
    }

    /**
     * by dingyl 支付回调
     *
     * @param request
     * @param response
     * @return
     */
    @SuppressWarnings("rawtypes")
    private void pay(HttpServletRequest request, HttpServletResponse response) {
        System.out.println("进入支付回滚");
        Map<String, String> params = new HashMap<String, String>();
        try {
            Map requestParams = request.getParameterMap();
            System.out.println("请求参数:" + requestParams.toString());

            System.out.println("开始解析参数");
            for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
                String name = (String) iter.next();
                String[] values = (String[]) requestParams.get(name);
                String valueStr = "";
                for (int i = 0; i < values.length; i++) {
                    valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
                }
                System.out.println(name.getBytes());
//                params.put(name, new String(valueStr.getBytes("ISO-8859-1"), "UTF-8"));
                params.put(name, valueStr);
            }
            System.out.println(params.toString());
            System.out.println("结束解析参数");

            String tradeNo = request.getParameter("out_trade_no");
            System.out.println("支付宝流水号:" + tradeNo);
            
            String payNumber=request.getParameter("trade_no");//支付宝交易流水号
            System.out.println("支付宝交易流水号:"+tradeNo);

            /*
             * 根据订单号获取会员信息
             */
            Member member = memberService.getMember(tradeNo);
            session.setAttribute("member", member);

            String freePrice = "0";//app端优惠金额 web端无优惠金额
            System.out.println(freePrice);

            String payType = "0";

            String tradeStatus = request.getParameter("trade_status");
            System.out.println("支付状态:" + tradeStatus);

            String paymentSn = "";

            String payment_type = request.getParameter("payment_type");
            System.out.println("支付方式:" + payment_type);
            if (AlipayNotify.verify(params)) {// 验证成功
                System.out.println("status:" + 1);
                if (tradeStatus.equals("TRADE_FINISHED") || tradeStatus.equals("TRADE_SUCCESS")) {
                    // 要写的逻辑。自己按自己的要求写
                    submitOrderService.changePaySuccess(paymentSn, tradeNo, payType, freePrice,payNumber);

                    log.error("ok.......");
                    System.out.println(">>>>>充值成功" + tradeNo);
                    response.getWriter().print("success");
                }
            } else {// 验证失败
                System.out.println("status:" + 0);
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值