2021-02-11-JavaWeb网站接入支付宝支付

前言

  • 今天给大家分享一下如何接入支付宝支付,尽管不一定用得到,毕竟稍大点的公司都不会让一个普通员工写财务模块,但万一你去的是小公司呢?哈哈,开个玩笑
  • 这篇博客会把接入支付宝的步骤列举出来,看不懂的可以问我或者百度

前序步骤

  • 支付宝开放平台注册一个账号
  • 去文档中心那里找到电脑网站支付文档,点开直接看快速接入

接入

pom.xml

  • 点击图中链接即可进去看到maven依赖的链接,进去复制就行了List item
  • 我以前用的依赖
19年11月使用的依赖
<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>3.7.110.ALL</version>
</dependency>

在沙箱环境获取测试账号,以及付钱的账号

在这里插入图片描述

  • 后面controller需要填的一些信息和扫码支付的测试账号都在图片里面
    在这里插入图片描述

公钥私钥的生成可以下面这个工具

  • 链接:https://pan.baidu.com/s/1GNB1V3-cUNTAlvHKl0_x8w
    提取码:2dqo
  • 也可以自己在文档中心下载

在这里插入图片描述

Controller层

  • 做完上面那些步骤后就要在自己的项目的Controller层写代码了
  • 下面这个controller都是直接从接入文档复制下来的,然后把我项目的一些信息和公钥那些填进去
  • 不懂的问我或者看接入文档,接入文档很详细,比微信好多了
@RequestMapping(value = "/pay")
    public void pay(HttpServletResponse httpResponse, String oid) throws Exception {
        // 1.获得初始化的AlipayClient
        AlipayClient alipayClient = new DefaultAlipayClient(

                // 支付接口url
                //https://openapi.alipaydev.com/gateway.do
                "https://openapi.alipaydev.com/gateway.do",
                // APPI
                "2016100656227",
                // 商家的私钥
                "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCuRzePWKineX1AKR5780URiwxC3ObTQJfBtSCsQxLs+xmYPQS0YBQX/eIGkKB14tPXrVt8zvssNkcN7GaaX82b3CvOX0azZHL9lZAyDjPUkhlVp0SnyP2pO75EiMw+Ldy8pDPyzTcCERaTbZWn829JsW1urR/6zUk7waAb7QTB3G2RABaH7jNfihVdP1hfseKmZCuvSaqWBsd18q6YRzedrVOOTHFxEO0RjXk+Q/3HnI+jj9FBM1GUlsLlG7ok/GZCoilSJFl7D7M90qo1YRqKcranT+3M1IqETPWMNUSrvT/potAg+KG65t9/mQr7sE2RfBd/Pq1P/Ck/R99dalcJAgMBAAECggEAHSnvwz4r4vKyogT/g/B+s2PYZmv++IULoC/GSu1igmO2scIsQl79ndIve7fCElgl6Saqc6VTZN+kXlEcDmNPzfA3KG7LLwP1NjhMDARSahUUxj+afpVk1WgY+/EEdLdKBAtaYhwzQ1ZGt98TtypGikd1r5qrClZGFgjd2S59qE8KgKVpTrjB7KX25dqVWnpsgkU6EDpRowMH5x7qgyznfB0BVupCF88JFJES83vDdGkcXqYpkJcP7jKQ5bk4gQD0XzXjymMbQxD4qmWEUwOjvEt3+DioRcCzYwdJFMelpZXuncXo+gXG8MB22WVE4Co5ANScS19Hu/kN6qwkUT8sTQKBgQDwfZaXz8nrzSK2DNDFRjcPH+HxsxC9o79sC+3zvkG1jgAdluLIAvZAwR3yThxTF232rpubwNUKAUNhZoD9fPLAQ2emOYpccVYq5bnsnNkU067EcW7G4NcBogySxG6jB/OZUN5Ri6YXI3yLeFsH8D3VadMvSIJalO05WEVkH4nHRwKBgQC5hHyFOpRbPYg55mXc6Gsj5tO7SyKi6zaxPe2hDka2WT3U+qqxzv85gB8NcwfE4jIGrwKBgEHx1lGFgTbtqH7sZ0kfVPZuFtV839MJyWc3nECj0n7/Oft7HzIVYqQN5vvg6SpgKlBBaIKmuwAdXa4ZJ+obWTsZ3sIEgxz+cO2uZaqyv3k++CAvaTDwJ7QG0WO7Cm4WnPznyHWhrEH16gJWS6/wVFSl4pQtSp5g9gq/1ThWHFoBAoGBANK6OAuVKKdRzB+NcUe6jwXsxHhThA9alhvq2HRFD6QLKgYpgQ/mbGVkgDoFL8a7Adjrl8HojdfkS8up7O+SPW6lo0aCVLfjbgS86tBV0ZxrtLP5RG0IfpayH+N6HgMiEz1HR5qWGPC9rCUGvtgZqfwNNQ5qmOFeJM4PKRx6QP4o",

                // 格式化编码
                "JSON",

                // 编码格式
                "utf-8",

                // 支付宝的公钥(在沙箱环境中可以获取)
                "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArC+n7jVK2EtqhtynNGDxdFVYrwT8jP2gu3VsRu7CSfdsAfuDTrwmeuKeaQCBQ19gSAslwTzfip8ebIsiA6jnhRrpNbd+c3FxBxHR6tB6pG2tvBPB6EtQAStRTjPWkiTF1laTbcynuKsiW8X4dgX92PxPfW/Fx8bHgDgxrEBhrURUtZHuQh6VBdUyLHAnpy2DU5K1gw3s8anGoOMnc4tFsXW4yDEZQrspxbhtLiU7tWc4fvd4GEQ7Ye7OoPIWtUZq1iyra8TMtT2KIhyYRqj+1K21HyMsJkmf0cvwIDAQAB",

                // 签名的算法
                "RSA2");

        // 2.创建API对应的request
        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
        alipayRequest.setReturnUrl("http://localhost:8081/"); // 用户支付完比后跳转到页面,同步
        // 用户支付成功异步通知的请求
        alipayRequest.setNotifyUrl("http://8srwgj.natappfree.cc/updateOrder");//在公共参数中设置回跳和通知地址


        Order order = orderService.getOrderById(oid);

        // 订单的信息都是封装到下面的
        alipayRequest.setBizContent("{" +
                "    \"out_trade_no\":" + oid + "," +
                "    \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
                "    \"total_amount\":" + order.getTotalPrice() + "," +
                "    \"subject\":\"Iphone6 16G\"," +
                "    \"body\":\"Iphone6 16G\"," +
                "    \"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," +
                "    \"extend_params\":{" +
                "    \"sys_service_provider_id\":\"2088511833207846\"" +
                "    }" +
                "  }");//填充业务参数


        String form = "";
        try {
            form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        httpResponse.setContentType("text/html;charset=" + "utf-8");
        httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面
        httpResponse.getWriter().flush();
        httpResponse.getWriter().close();
    }
  • 两个链接要注意
  • alipayRequest.setReturnUrl(“http://localhost:8081/”);// 用户支付完比后跳转到页面,同步,是浏览器发的所以可以使用localhost
    // 用户支付成功异步通知的请求
    alipayRequest.setNotifyUrl(“http://w5g9y4.natappfree.cc/updateOrder”);//在公共参数中设置回跳和通知地址
  • 两个链接都是支付宝跳转的,第一个链接是支付成功后最终跳转到哪个页面,并且是同步的,你可以指定你的首页或支付成功页面,第二个链接是支付成功后跳转到第一个链接之前发的一个异步请求,这个请求可以发到你的想要跳转的controller里面做一些操作,如修改订单的未支付状态成已支付状态

模拟付款

  • 网页版付款

在这里插入图片描述

  • 也可以点击图片中的链接下载一个手机模拟的支付宝app付款

猜你喜欢

转载自blog.csdn.net/qq_41270550/article/details/113779086