关于java:一篇文章搞定支付宝网页支付

50次阅读

共计 4614 个字符,预计需要花费 12 分钟才能阅读完成。

作者:叁滴水 \
博客:https://blog.csdn.net/qq_3028…

前言

理解了支付宝秘钥设置的原理之后,可更加疾速的进行开发支付宝领取。在此示例一下支付宝领取较为简单的场景——电脑网站领取。

这个场景对于后端开发者是比拟敌对的,官网的 demo 中曾经提供了 html 页面,只须要进行简略的配置即可运行。

一、电脑网站领取

1.1 沙箱环境配置

登录支付宝,进入控制台进入沙箱环境。

进入之后配置沙箱环境秘钥。由上图可见,用来计算签名的 RSA 加密是必须要配置的,开发者要下载支付宝开发工具获取一对 RSA 秘钥,另外选填局部的 利用网关 受权地址 容易搞混,解释如下:

利用网关

用于接管由支付宝服务器告诉 次要用于:

1、生存号被动告诉

2、口碑门店的被动告诉

3、单笔转账到支付宝账户

4、现金红包

5、以及其余局部产品和订阅音讯

受权回调地址

顾名思义仅用于受权接口次要用于:

1、第三方利用受权

2、用户信息受权

3、以及其余波及受权的产品(如商户会员卡)

不论是受权回调地址还是利用网关都是须要传入 http 或是 https 结尾的网页地址。更具体的阐明可查看支付宝官网。

AES加密在选填局部。可见在对接支付宝时,官网并不强制要求应用 AES 加密,能够依据本人的理论状况自行抉择是否应用 AES 加密。

1.2、demo 加载

1.2.1、idea 间接增加

至今官网提供的 demo 还是比拟古老的一种形式,是采纳的 Eclipse 开发工具编写的,外面有一些简略的 jsp 页面,只须要下载即可。

当初开发工具根本都换成了 idea,也能够通过 idea 间接关上 eclipse 工程。另外,关注公众号 Java 技术栈,在后盾回复:激活码,能够获取我写的获取正版 IDEA 激活码的形式,很多人都获取到了。

1.2.2、maven 增加

当初大部分都是 maven 工程,我的 idea 中 javaee 都没有,很是难堪,因而,我抉择间接转换成 springboot 工程。

Spring Boot 基础教程就不介绍了,系列教程能够看这里:https://github.com/javastacks…

将 jsp 代码和 java 配置类复制到一个污浊的 springboot 工程中,构造大略如此,webapp 是须要本人新建的,将原有工程的类和 jsp 复制进来即可。

pom 文件中 增加对 jsp 的反对 ,另外 打包时将默认的 jar 包改成 war 包,war 包对 jsp 更加敌对, 配置示例如下。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>alipay</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>alipay</name>
    <packaging>war</packaging>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        
<!--        增加反对 jsp-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <!-- tomcat 的反对 -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>   <!-- 编译时依赖  运行是不须要此包 -->
        </dependency>
    </dependencies>

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>            <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- 增加 war 插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
        
    </build>
</project>

在官网提供的 demo 中,有 3 个包须要进行增加。

因为是测试,而且依赖的代码写在了 jsp 中,不影响打包,索性能够间接先打包,而后将 3 个 jar 复制到服务器的 lib 目录。


1.3、参数配置

demo 中提供了一个配置类AlipayConfig.java

这里须要将沙箱环境提供的参数配置上。

// 利用 ID, 您的 APPID,收款账号既是您的 APPID 对应支付宝账号
public static String app_id = "";

// 商户私钥,您的 PKCS8 格局 RSA2 私钥
public static String merchant_private_key = "";

// 支付宝公钥, 查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应 APPID 下的支付宝公钥。public static String alipay_public_key = "";

// 服务器异步告诉页面门路  需 http:// 格局的残缺门路,不能加?id=123 这类自定义参数,必须外网能够失常拜访
public static String notify_url = "http://{服务器 ip}/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";

// 页面跳转同步告诉页面门路 需 http:// 格局的残缺门路,不能加?id=123 这类自定义参数,必须外网能够失常拜访
public static String return_url = "http://{服务器 ip}/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp";

// 签名形式
public static String sign_type = "RSA2";

// 字符编码格局
public static String charset = "utf-8";

// 支付宝网关
public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";

// 日志门路
public static String log_path = "/";
  1. app_id 利用 id。每个利用都有本人的惟一标示。这个参数在支付宝、微信等许多开放平台都有呈现。
  2. merchant_private_keyalipay_public_key 这是用来计算签名的秘钥。
  3. notify_url 这个是用来接管支付宝回调告诉的 接口 地址,这个接口须要进行幂等解决。
  4. return_url 配置领取胜利之后跳转的 页面 地址。
  5. sign_type 签名形式,这个就默认的 RSA2 加密即可。个别不须要批改。
  6. gatewayUrl 支付宝网关, 这个在 app 配置的时候官网提供了,复制下来即可。

1.4、启动工程

配置实现之后即可启动工程,进入首页index.jsp

我的门路是/alipay/index.jsp,大家参考下。

官网的 demo 中提供了 付款、交易查问、退款、退款查问、交易敞开 等性能。开发者可自行抉择调试。

另外沙箱环境是一套独立的支付宝环境,须要下载官网提供的沙箱支付宝 app(只有安卓)。

点即付款性能的领取按钮,即可跳入领取页面,领取实现之后会自行跳转到配置的 return_url 地址。

注:有时候会提醒 存在钓鱼危险提醒页面。只须要敞开浏览器,只关上领取入口页面index.jsp,不要关上其余的支付宝页面就解决了。

本文来自作者「叁滴水」投稿,谢谢分享,也欢送喜好技术分享的各位技术敌人向「Java 技术栈」投稿,让更多人看到,投稿形式:关注公众号「Java 技术栈」在后盾回复:投稿。

近期热文举荐:

1.600+ 道 Java 面试题及答案整顿(2021 最新版)

2. 终于靠开源我的项目弄到 IntelliJ IDEA 激活码了,真香!

3. 阿里 Mock 工具正式开源,干掉市面上所有 Mock 工具!

4.Spring Cloud 2020.0.0 正式公布,全新颠覆性版本!

5.《Java 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

正文完
 0