Java 接入支付宝网页支付(SpringBoot + IDEA + 内网穿透 + 沙箱配置 )

一、支付宝沙箱环境配置

首先登陆支付宝开放平台官网(前蚂蚁金服开放平台),登陆并填写相关信息后点击页面最下方提交入驻申请
在这里插入图片描述
提交申请后进入如下页面并点击开发者中心
在这里插入图片描述
然后进入如下页面并点击研发服务
在这里插入图片描述
这里要简单提一下对称加密和非对称加密

  • 对称加密即通过一个密匙来加密和解密,常见的如MD5加密,这样就会存在一定安全问题
  • 非对称加密即存在一个公钥和私钥,它们是成对存在的,公钥进行加密,私钥进行解密,支付宝支付即采用的非对称加密,简单示意图如下
    在这里插入图片描述

支付宝也需要设置秘钥,如下图所示,点击设置
在这里插入图片描述
然后弹出如下窗口,选择公钥并生成公钥
在这里插入图片描述
点击支付宝秘钥生成器跳转到如下页面,并选择自己电脑对应的系统下载生成器
在这里插入图片描述
下载安装并运行即可生成秘钥
在这里插入图片描述
公钥复制到我们刚刚的弹框并保存
在这里插入图片描述
保存后我们会看到多了一个支付宝公钥,也就是在创建应用公钥的同时支付宝也会对应生成公钥和私钥,如下所示
在这里插入图片描述
接下来我们要设置应用网关和支付宝网关一直即可(支付宝网关在页面最上方),复制粘贴保存即可,如下图所示
在这里插入图片描述

二、支付宝沙箱应用下载并登录

在沙箱账号一栏,我们可以看到两个账号,分别是商家账号和卖家账号,用于模拟真实支付场景,即从卖家账户扣钱转入商家账户
在这里插入图片描述
接下来用手机下载沙箱版钱包,点击后用手机扫描二维码即可下载安装
在这里插入图片描述

三、内网穿透

由于我们的机器是可以访问到支付宝的服务器的,但支付宝不能访问我们的机器,因为我们的电脑相当于内网,因此,我们还需要进行一次内网穿透操作,免费的内网穿透服务可选ngrok

  1. 访问www.ngrok.cc,注册并登录
  2. 登录后进入如下页面选择开通隧道,然后购买免费服务器,如下图
    在这里插入图片描述
    在这里插入图片描述
    添加成功后如下图所示
    在这里插入图片描述
  3. 返回首页下载客户端
    在这里插入图片描述
    选择自己电脑对应的系统下载
    在这里插入图片描述
    下载并解压得到如下文件夹
    在这里插入图片描述
    进入如下目录启动.bat文件
    在这里插入图片描述
  4. 启动客户端如下所示
    在这里插入图片描述
    这里需要我们输入客户端id,也就是我们的隧道id
    在这里插入图片描述
    将隧道id复制粘贴并回车即可,如下图即表示该域名映射到了本地的127.0.0.1:80端口
    在这里插入图片描述

四、下载官方Demo

首先在沙箱应用中选择电脑网站支付
在这里插入图片描述
然后选择如下图所示下载
在这里插入图片描述
下载并解压后如下图所示,这是一个web项目
在这里插入图片描述
将该项目导入到IDEA中,然后打开打开AlipayConfig类,我们需要使用到这里的配置信息,下图红色框选中的部分为我们需要修改部分,异步通知和同步通知可自定义逻辑功能
在这里插入图片描述

五、SpringBoot项目构建接入支付宝支付

先创建一个新的SpringBoot项目(此步骤省略),项目完整结构如下
在这里插入图片描述
导入Maven依赖如下

<dependencies>
    <!-- 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>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.33</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</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>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

首先根据官方Demo修改为alipay.properties如下

#应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
app_id = 2016101800712368

#商户私钥,您的PKCS8格式RSA2私钥
merchant_private_key = xxx

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

#服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
notify_url = http://ranran.free.idcfengye.com/alipay/static/notify_url.jsp

#页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
return_url = http://ranran.free.idcfengye.com/alipay/static/return_url.jsp

#签名方式
sign_type = RSA2

#字符编码格
charset = utf-8

#支付宝网关
gatewayUrl = https://openapi.alipaydev.com/gateway.do

# 支付宝网关
log_path = "C:\\"

创建实体类如下

import lombok.Data;
import lombok.experimental.Accessors;

/*支付实体对象*/
@Data
@Accessors(chain = true)
public class AlipayBean {
   
   
    /*商户订单号,必填*/
    private String out_trade_no;
    /*订单名称,必填*/
    private String subject;
    /*付款金额,必填*/
    private StringBuffer total_amount;
    /*商品描述,可空*/
    private String body;
    /*超时时间参数*/
    private String timeout_express = "10m";
    private String product_code = "FAST_INSTANT_TRADE_PAY";
}

创建service接口如下

import com.alipay.api.AlipayApiException;
import com.ranran.alipay.pojo.AlipayBean;

public interface PayService {
   
   
    String aliPay(AlipayBean alipayBean) throws AlipayApiException;
}

创建service实体类如下

import com.alipay.api.AlipayApiException;
import com.ranran.alipay.config.AlipayUtil;
import com.ranran.alipay.pojo.AlipayBean;
import org.springframework.stereotype.Service;

@Service(value = "alipayOrderS
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值