1.支付宝支付
1.1.蚂蚁金服开放平台
https://open.alipay.com/platform/home.htm
1.2.沙箱环境
https://openhome.alipay.com/platform/appDaily.htm
1.2.1.密钥设置
采用RSA2非对称加密方式
支付宝密钥生成工具下载:
https://opendocs.alipay.com/open/291/105971
生成密钥:
支付宝沙箱 -> 设置公钥:商户公钥
支付宝沙箱 -> 保存设置
2.内网穿透
2.1.简介
内网穿透可以允许我们使用外网的网址来访问主机。
正常的外网需要访问应用的流程是:
- 购买服务器并且有公网固定IP
- 购买域名映射到服务器的IP
- 域名需要进行备案和审核
2.2.使用场景
- 开发测试(微信,支付宝等)
- 智慧互联
- 远程控制
- 私有云
2.3.内网穿透常用软件
-
natapp:https://natapp.cn
2.4.Natapp使用
2.4.1.下载natapp客户端
2.4.2.购买免费隧道
2.4.3.获取内网穿透地址
- 以管理员身份运行natapp客户端
- 执行此命令,natapp -authtoken 隧道authtoken
3.整合支付宝
支付宝SDK:https://opendocs.alipay.com/open/54/cyz7do
Alipay Easy SDK:https://github.com/alipay/alipay-easysdk
API接口文档:https://github.com/alipay/alipay-easysdk/blob/master/APIDoc.md
3.1.导入支付宝服务端新版SDK
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-easysdk</artifactId>
<version>2.2.0</version>
</dependency>
3.2.支付宝配置
# 支付宝-沙箱
alipay.protocol=https
alipay.gatewayHost=openapi.alipaydev.com
alipay.signType=RSA2
alipay.appId=9021000122694995
# 商户私钥
alipay.merchantPrivateKey=static/alipay/zh_sy.txt
# 支付宝公钥
alipay.alipayPublicKey=static/alipay/zh_gy.txt
# fsp6n6.natappfree.cc 内网穿透地址
alipay.notifyUrl=http://server.natappfree.cc/alipay/notify
# 支付成功之后跳转的链接地址
alipay.returnUrl=http://member.gmall.com/memberOrder.html
# 支付限时
alipay.timeoutExpress=1m
AlipayProperties
package com.atguigu.gmall.order.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* 支付宝-沙箱环境参数 {@link AlipayProperties}
*
* @author zhangwen
* @email: 1466787185@qq.com
*/
@ConfigurationProperties(prefix = "alipay")
@Data
public class AlipayProperties {
private String protocol;
private String gatewayHost;
private String signType;
/**
* 应用id
*/
private String appId;
/**
* 应用私钥
*/
private String merchantPrivateKey;
/**
* 支付宝公钥
*/
private String alipayPublicKey;
/**
* 异步通知接收服务地址
*/
private String notifyUrl;
}
AlipayConfig
package com.atguigu.gmall.order.config;
import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.kernel.Config;
import com.atguigu.common.utils.ReadTxtUtils;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import java.io.IOException;
/**
* 支付宝配置 {@link AlipayConfig}
*
* @author zhangwen
* @email: 1466787185@qq.com
*/
@EnableConfigurationProperties(AlipayProperties.class)
@Configuration
public class AlipayConfig {
@Bean
public Config config(AlipayProperties alipayProperties) throws IOException {
Config config = new Config();
config.protocol = alipayProperties.getProtocol();
config.gatewayHost = alipayProperties.getGatewayHost(