一、给项目加上域名,
1.点击下面链接,进行注册,登录,实名认证等操作
NATAPP-内网穿透 基于ngrok的国内高速内网映射工具
2.登录完成后,点击购买隧道,购买免费隧道
每个人可以申请两条隧道,建议选择一条web和一条tcp隧道
3.购买成功后点击右上角的客户端下载,选择自己对应的操作系统,下载解压
4.下载后解压打开 输入natapp -authtoken 你的NETAPP上的隧道authtoken
这个就是网络地址
访问时在用网络地址替换本地地址就行了(访问的时候一定要把这个窗口打开)
以前
localhost/front/page/login.html
现在
http://g3zjqu.natappfree.cc/front/page/login.html
二、使用支付宝接口进行沙箱支付
1.搜索点击支付宝,开发者,控制台,沙箱,或直接点击下面链接
登录 - 支付宝
2.像这样一样配置
配置:应用网关地址的链接 https://openapi.alipaydev.com/gateway.do
第一次使用需要加载几分钟,基本信息显示的慢
3.在项目中进行配置
3.1 导入pom坐标
<!--阿里支付-->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-easysdk</artifactId>
<version>2.0.2</version>
</dependency>
3.2 在application.yml文件中进行相关配置
server:
port: 80
alipay:
#支付宝中应用唯一标识
appId:
#应用私钥
privateKey:
#支付宝公钥
publicKey:
#网关:固定不改
gateway: openapi.alipaydev.com
#支付成功后,支付宝会往配置的returnUrl对应的页面进行跳转 -- 支付成功后的回跳页面
returnUrl: http://2kipe6.natappfree.cc/return.html
#支付成功的支付宝回调接口:通常在回调接口中完成支付成功后的业务逻辑操作,比如: 修改订单状态
notifyUrl: http://2kipe6.natappfree.cc/pay/fallback
应用私钥和支付宝公钥在查看里面
配置application.yml时需注意空格,域名每一次是经常变动的,需要及时修改
3.3 添加配置类
/**
* 项目初始化
* @date 2020-09-08
* */
@Component
public class AliPayConfig implements ApplicationRunner {
//应用id
@Value("${alipay.appId}")
private String appId;
//私钥
@Value("${alipay.privateKey}")
private String privateKey;
//公钥
@Value("${alipay.publicKey}")
private String publicKey;
//支付宝网关
@Value("${alipay.gateway}")
private String gateway;
//支付成功后的接口回调地址,不是回调的友好页面,不要弄混了
@Value("${alipay.notifyUrl}")
private String notifyUrl;
/**
* 项目初始化事件
* */
@Override
public void run(ApplicationArguments args) throws Exception {
//初始化支付宝SDK
Factory.setOptions(getOptions());
System.out.println("**********支付宝SDK初始化完成**********");
}
private Config getOptions() {
//这里省略了一些不必要的配置,可参考文档的说明
Config config = new Config();
config.protocol = "https";
config.gatewayHost = this.gateway;
config.signType = "RSA2";
config.appId = this.appId;
// 为避免私钥随源码泄露,推荐从文件中读取私钥字符串而不是写入源码中
config.merchantPrivateKey = this.privateKey;
//注:如果采用非证书模式,则无需赋值上面的三个证书路径,改为赋值如下的支付宝公钥字符串即可
config.alipayPublicKey = this.publicKey;
//可设置异步通知接收服务地址(可选)
config.notifyUrl = notifyUrl;
return config;
}
}
3.4 在使用的时候发送请求调用就行了
@Slf4j
@RestController
@RequestMapping("/pay")
public class PayController {
@Value("${alipay.returnUrl}")
private String returnUrl;
@Autowired
private OrdersService ordersService;
//get http://localhost:8080/pay/confirm?id=undefined
@GetMapping("/confirm")
public Object pay(Long id) throws Exception {
log.info("订单号为{}",id);
//根据订单id查询订单详情
Orders orders = ordersService.getById(id);
//生成订单名称
String orderName="订单号:"+id+"收货人:"+orders.getConsignee();
//调用sdk,发起支付
AlipayTradePagePayResponse response = Factory.Payment
//选择网页支付平台
.Page()
//调用支付方法,设置订单名称、我们自己系统中的订单号、金额、回调页面
.pay(orderName , //订单名称
id.toString(), //订单号
orders.getAmount().toString() , //金额
returnUrl);
//这里的response.body,就是一个可以直接加载的html片段,
// 这里为了简单我直接返回这个片段,前端直接
return response.body;
}
@PostMapping("/fallback")
public void fallback(HttpServletRequest request){
Map map = request.getParameterMap();
//取出订单号
String[] numbers = (String[]) map.get("out_trade_no");
String number = numbers[0];
//根据订单号查询订单详情
Orders order = ordersService.getById(number);
log.info("--------------------------订单:"+number+"支付成功,进入了回调---------------------------");
//修改订单状态
order.setStatus(2); // 1: 待付款 2:待派送
ordersService.updateById(order);
}
}
4.使用的过程中使用沙箱账号登录支付,记得充钱(虚拟的)
文章来源:https://www.toymoban.com/news/detail-455184.html
文章来源地址https://www.toymoban.com/news/detail-455184.html
到了这里,关于如何给自己的项目加上域名,在浏览器中被别人访问,使用支付宝进行沙箱支付的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!