一、支付宝沙箱环境配置
首先登陆支付宝开放平台官网(前蚂蚁金服开放平台),登陆并填写相关信息后点击页面最下方提交入驻申请

提交申请后进入如下页面并点击开发者中心

然后进入如下页面并点击研发服务

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

支付宝也需要设置秘钥,如下图所示,点击设置

然后弹出如下窗口,选择公钥并生成公钥

点击支付宝秘钥生成器跳转到如下页面,并选择自己电脑对应的系统下载生成器

下载安装并运行即可生成秘钥

将公钥复制到我们刚刚的弹框并保存

保存后我们会看到多了一个支付宝公钥,也就是在创建应用公钥的同时支付宝也会对应生成公钥和私钥,如下所示

接下来我们要设置应用网关和支付宝网关一直即可(支付宝网关在页面最上方),复制粘贴保存即可,如下图所示

二、支付宝沙箱应用下载并登录
在沙箱账号一栏,我们可以看到两个账号,分别是商家账号和卖家账号,用于模拟真实支付场景,即从卖家账户扣钱转入商家账户

接下来用手机下载沙箱版钱包,点击后用手机扫描二维码即可下载安装

三、内网穿透
由于我们的机器是可以访问到支付宝的服务器的,但支付宝不能访问我们的机器,因为我们的电脑相当于内网,因此,我们还需要进行一次内网穿透操作,免费的内网穿透服务可选ngrok
- 访问www.ngrok.cc,注册并登录
- 登录后进入如下页面选择开通隧道,然后购买免费服务器,如下图


添加成功后如下图所示

- 返回首页下载客户端

选择自己电脑对应的系统下载

下载并解压得到如下文件夹

进入如下目录启动.bat文件

- 启动客户端如下所示

这里需要我们输入客户端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

&spm=1001.2101.3001.5002&articleId=104085017&d=1&t=3&u=435471c80eac479092490333648ffd39)
1406

被折叠的 条评论
为什么被折叠?



