zoukankan      html  css  js  c++  java
  • 支付宝电脑在线支付二(后台实现)

    继前一篇[支付宝电脑在线支付一(静态页面)]这篇文件主要是讲支付宝后台调用的实现。收银台页面默认会显示支付宝支付的二维码,用户也可以通过点击[立即支付]按钮跳转到支付宝的收银台。

    1.先添加支付宝的Maven依赖

    <dependency>
        <groupId>com.alipay.sdk</groupId>
        <artifactId>alipay-sdk-java</artifactId>
        <version>3.4.27.ALL</version>
    </dependency>
    

    2.推荐二维码支付实现

    推荐二维码支付是套在一个iframe里面的,如下:

     <iframe name="alipayScanIframe" src="alipayQRCode.html?bizId=100&alipayPayMethod=4" width="103" height="103" frameborder="0"
                    scrolling="no" style="height: 103px;103px; border:1px solid #aaa;"></iframe>

     后台alipayQRCode方法部分实现如下,支付宝API上面类似的代码。这里只需要注意如果是生成二维码支付的话qr_pay_mode的值要为4并且指定宽度。

     
    DefaultAlipayClient("https://openapi.alipay.com/gateway.do", yourAppId,
                                                                    YourAlipayPrivateKey(), "json",
                                                                    "utf-8",
                                                                    YourAlipayPublicKey(),
                                                                    "RSA2");
                
                // 设置请求参数
                AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
                alipayRequest.setReturnUrl(alipayReturnUrl);
                alipayRequest.setNotifyUrl(alipayNotifyUrl);
                
                // 商户订单号,商户网站订单系统中唯一订单号,必填
                String out_trade_no = orderInfo.getOrderCode();
                // 付款金额,必填
                String total_amount = orderInfo.getConfirmMoney().toString();
                // 订单名称,必填
                String subject =  orderInfo.getDataInfo().getNetCode() + "的订单";
                // 商品描述,可空
                String body =  orderInfo.getDataInfo().getNetCode() + "的订单";
                
                Map<String, String> maps = new HashMap<String, String>(16);
                maps.put("out_trade_no", out_trade_no);// 订单号
                maps.put("total_amount", total_amount);
                maps.put("subject", subject);
                maps.put("body", body);
                maps.put("product_code", "FAST_INSTANT_TRADE_PAY"); // 固定值
                maps.put("out_trade_no", out_trade_no);
                
               //前台传的Map集合,自己弄的
                if (params != null)
                {
                    // 收银台的方式
                    String alipayPayMethod = params.get("alipayPayMethod");
                    // PC扫码支付的方式,支持前置模式和跳转模式
                    if (!StringUtil.isRealEmpty(alipayPayMethod))
                    {
                        maps.put("qr_pay_mode", alipayPayMethod);
                        if ("4".equals(alipayPayMethod))
                        {
                            maps.put("qrcode_width", "120");// 注:qr_pay_mode=4时该参数生效
                        }
                    }
                }
                
                alipayRequest.setBizContent(JSON.toJSONString(maps));
                
                // 生成HTML返回给页面
                String form = alipayClient.pageExecute(alipayRequest).getBody();
               
                getResponse().setContentType("text/html;charset=utf-8");
                getResponse().getWriter().write(form);// 直接将完整的表单html输出到页面
                getResponse().getWriter().flush();
                getResponse().getWriter().close();
    

    3.页面跳转支付

    <!-- 提交后台发起支付-->
    <form id="formPaySubmit" action="paySubmit.html" method="post" target="_blank">
          <input type="hidden" name="payType" value="" />
          <input type="hidden" name="bizId" value="100" /> 
    </form>

     

    页面跳转是由后台发起支付,上面代码当点击按钮的时候在新的窗口提交一个表单到后台。给支付宝的参数只需要将上面代码的qr_pay_mode的值改成2即可。

    4.异步支付结果通知

    支付结果支付宝会异步通知给上面设置的NotifyUrl中。具体的业务要根据实际情况实现。

  • 相关阅读:
    JavaWeb网上图书商城完整项目--day02-18.修改密码页面处理
    JavaWeb网上图书商城完整项目--day02-17.登录功能页面实现
    JavaWeb网上图书商城完整项目--day02-16.登录功能各层实现
    JavaWeb网上图书商城完整项目--day02-15.登录功能流程分析
    JavaWeb网上图书商城完整项目--day02-14.登录功能的login页面处理
    JavaWeb网上图书商城完整项目--day02-12.激活功能各层实现
    JavaWeb网上图书商城完整项目--day02-11.激活功能流程分析
    JavaWeb网上图书商城完整项目--day02-10.提交注册表单功能之页面实现
    javascript数组与字符串之间转换
    Bootstrap
  • 原文地址:https://www.cnblogs.com/foxting/p/9883628.html
Copyright © 2011-2022 走看看