Javaweb项目调制支付宝官方沙箱,当面付demo正确运行(环境IDEA+Tomcat9.0.4)

本文主要是介绍Javaweb项目调制支付宝官方沙箱,当面付demo正确运行(环境IDEA+Tomcat9.0.4),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Sandboxie(又叫沙箱、沙盘)即是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或其他程序,因此运行所产生的变化可以随后删除。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。其为一个独立的虚拟环境,可以用来测试不受信任的应用程序或上网行为。
支付宝提沙箱支持当面付demo运行结果如下:
在这里插入图片描述
点击支付:
在这里插入图片描述

先下载支付宝体验demo地址如下:
https://opendocs.alipay.com/open/194/105201/
在这里插入图片描述
这里我下载的是eclipse的,但是我运行的软件是idea,运行前要改一下编码,不然会报错:

Error:(1, 1) java: 非法字符: ‘\ufeff’ 
Error:(1, 10) java: 需要class, interfaceenum 

这里参考:https://www.cnblogs.com/diffx/p/10000123.html进行修改
下载完成之后新建一个Web项目,把需要的jar包还有jsp导进项目中,我这里是这样配置的:
在这里插入图片描述
同时在Project Structure–>Modules–>Dependencies下面也要导入这些jar包
在这里插入图片描述
接着,配置我们的java文件:AlipayConfig.java

package com.alipay.config;
import java.io.FileWriter;
import java.io.IOException;/* **类名:AlipayConfig*功能:基础配置类*详细:设置帐户有关信息及返回路径*修改日期:2017-04-05*说明:*以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。*该代码仅供学习和研究支付宝接口使用,只是提供一个参考。*/public class AlipayConfig{//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号public static String app_id = "2021000116688549";// 商户私钥,您的PKCS8格式RSA2私钥,(这是我生成的私钥,也就是你支付宝开放平台开发助手里面生成的那个应用私钥)public static String merchant_private_key = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCCPwtXI7zgIW9UL/F3YZaAZqX0sLr77+WnOd5X9uv/gmntY3tJQhcGrVDIgawBksaHGe2kZ2umEjB7soYydxsg0dQ/+15sClEeiru8iSedJkmWUfRBWmsQqorzLA7esU0xUCn9QgeNsEl5pb313e02tn/CTsAIOdldsl1MFoVbRYWkCi/EP0uZ+fg09OlvjChbkOSqRaplxQKLFCu6x/9PRtFF0vLxUjMa6Wdlq6crgozne3yKmDzxGqH5ubUss+xnSGf4QfTKF9Em6MvzqId67kmiVLVJOoLvTLOqAQ5N5mqBRLIC1feU58FKYaeOgpumggTItmdlHD0eiPAUboV/AgMBAAECggEALX+0iHZVjr5fU7uD0L5oguZY5wet6kC9qxNOFtCNVK7MLj9oXAkYXh7Bb6nM2qfZbmyiVaJDOrpz8WJF+u8crPRf/xHixD8+Yzr3pj8LdZxgbICooQPjDulkrNohP64UVzu3z173oImKwVIi7/bc3RYXv1sfPkBnLJIYgXIEmANIqKywuFJU12YM55T9C/Z45qLQFqdCDJdSbjMHsoqKx9HTuG7UPQQEaA5SNDvc9DaxT68rPZ9gTm5K4uPPF0SiCBAL5rGvjUyP8k5OAnqBh3ut/qzXnIT7JfOYcrkYE22Oa/URTxDqGkPposI4ADBmlbHJh+jGdJ7RmkAuTtOeAQKBgQDjaTwGoa1DpkiZYK7mno3Ku6QUKkGiRcWhPE9QAKndURoIJ0Q+tLVrcictI6ap6VzvOW/fa2WVVTEwAvJ5fGN0SZryon7n+Owto6FOtwyM8ArbfuQ2YDDRBJ+X5X9xUpZbWeC64wS9InI3oNiQu3QKRU4ZOWP7Mi9kpwbuZwYrgQKBgQCSnsHM2aE/dlU//lGiGqS4raMpcomgRL+hp3KxwTRTTSKdfAKb3J+gaOEQhURgtcAFmdKv68xzyz/paz3rNhN9llo+FnoBtqr8x6pVk6TbaXxLKEK8ZVo1eSvAQDTUMUI3tIM9ApXLVHJRhXEVi44OWSuFHTIDYsrIZcaRcaEw/wKBgQC1OdDXLBLK3YHvkOfw6xvuGvjYBRDHA7lKE6jVBaJYt9/57WjqW9JT7OWhiE6yC0G/dtNbhdevWPPY4hBfliwfqOStRafCr1Fv0X2kICYFTuooH4g4eRGOEJQqVX7pTTp7VDXOWUoWe5PwFuNe+7Ou16o0WdL+hPDV0nGonTuCgQKBgH1znyjy0VhmnJzLsvd7ypNF5sSQ/xcFm93qU2WqhWX9KvAK6oSH6oErG9+x14bUHD/ulOn3XRF6x+2l1+4Ib/bWDdLwEmai8HynLqRYVwdxo2r/QNLH+b6lNf0iMtGYcCsPpfcu3hKC5+m+vrqLlPnL7EPSbjedcRq0kolh62TrAoGAFH40zm0q382wN99Frw+ObnBcS2GveGCf4a9mobxprPIS+bJi7sVFWeBQtj8rkSPhtF44zrcrcDJIBA81CHM8usIcXRCbajtUHcmW1QNZDScfv7VV/7YUFhGpR+pUl4IJQlpda6WiAth7MEA1Z0iqKSRWbogSkKgni2ij0Vq4u9c=";// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。(对应公钥)public static String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoVTZWujges/iBdwC4ibzsIko0WUdeztwgvZKTNclTU703lCjugitpt3g2/ma4gdGbSfH+NpUiLP3NB0tZzNah5tdPSeah4lQW2utXMAUO0UTvVWTZFgSNrvOLAzlqvOowbY7ZNEnBIWi9w42zJCSOtBcs/X5IgdzuOYDTv2CLEGxZar8tV0RcLGjIgf+t04Kagv6buYeN4iNLov34dR9XPHSdakyD5sriS8XUUxX2icDwRtpqBmXT0t2FJxIQy3drZa5bgC4hAmNPMV9DwCmewbeYHfAi8PyWD5xhu3QS4EsZdq986/0k3CXoMjul3ofSdovgZjdNmA+4kpcgEaEKQIDAQAB";// 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问(notify_url.jsp 可以在里面做支付成功的业务逻辑处理)public static String notify_url = "http://localhost:8080/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问(http://localhost:8080/untitled_war_exploded是支付成功后跳转的路径,你可以让他调用一个jsp,我这里写的是我的Tomcat输出的URL,这个returnjsp里面好像不能调用自己设置的参数)public static String return_url = "http://localhost:8080/untitled_war_exploded/return_url.jsp";// 签名方式,不用动public static String sign_type = "RSA2";// 字符编码格式,不用动public static String charset = "utf-8";// 支付宝网关,这个地方刚打开时是默认不是沙盒的地址:https://openapi.alipay.com/gateway.do,要改成下面的样子public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";// 支付宝网关public static String log_path = "";//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑/** * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)* @param sWord 要写入日志里的文本内容*/public static void logResult(String sWord) {FileWriter writer = null;try {writer = new FileWriter(log_path + "alipay_log_" + System.currentTimeMillis()+".txt");writer.write(sWord);} catch (Exception e) {e.printStackTrace();} finally {if (writer != null) {try {writer.close();} catch (IOException e) {e.printStackTrace();}}}}
}

这些公钥、私钥要在支付宝沙盒里面设置成一致的,支付宝沙盒环境地址:
https://open.alipay.com/platform/appDaily.htm?tab=info
如图,把APPID复制到AlipayConfig.java的String app_id:在这里插入图片描述
点击设置,选择公匙,刚开始要下载一下支付宝密匙生成器,生产一对密匙
密匙生成器下载地址:https://opendocs.alipay.com/open/291/106097/里面有生成密匙的介绍,这里不再讲解,把生成的公钥复制过来就到了第二步,沙箱会自动生成一个支付宝密钥,我们复制粘贴到AlipayConfig.java即可
在这里插入图片描述
再次强调一下,那个支付宝网关一定要修改为沙箱的网关,不然会报错:invalid-app-id(无效的AppID),解决方案参考网站:https://developer.aliyun.com/article/707643
下面是两个地址notify_url、return_url(支付成功后返回),把官网给地址加上自己设置的运行路径(我的是tomcat的输出url)如下图
在这里插入图片描述
最后运行项目,得到文章开头的结果。
我这个实验的项目上传到网盘了:
链接: https://pan.baidu.com/s/1dRoW-aFqmHIp40elCXh6DA
密码: cga1
可以直接下载,运行应该要调试一下tomcat跟里面几个jar包还有URL地址什么的。

这篇关于Javaweb项目调制支付宝官方沙箱,当面付demo正确运行(环境IDEA+Tomcat9.0.4)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/309073

相关文章

springboot rocketmq配置生产者和消息者的步骤

《springbootrocketmq配置生产者和消息者的步骤》本文介绍了如何在SpringBoot中集成RocketMQ,包括添加依赖、配置application.yml、创建生产者和消费者,并展... 目录1. 添加依赖2. 配置application.yml3. 创建生产者4. 创建消费者5. 使用在

Spring Retry 实现乐观锁重试实践记录

《SpringRetry实现乐观锁重试实践记录》本文介绍了在秒杀商品SKU表中使用乐观锁和MybatisPlus配置乐观锁的方法,并分析了测试环境和生产环境的隔离级别对乐观锁的影响,通过简单验证,... 目录一、场景分析 二、简单验证 2.1、可重复读 2.2、读已提交 三、最佳实践 3.1、配置重试模板

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

Java中有什么工具可以进行代码反编译详解

《Java中有什么工具可以进行代码反编译详解》:本文主要介绍Java中有什么工具可以进行代码反编译的相关资,料,包括JD-GUI、CFR、Procyon、Fernflower、Javap、Byte... 目录1.JD-GUI2.CFR3.Procyon Decompiler4.Fernflower5.Jav

Spring Boot 中正确地在异步线程中使用 HttpServletRequest的方法

《SpringBoot中正确地在异步线程中使用HttpServletRequest的方法》文章讨论了在SpringBoot中如何在异步线程中正确使用HttpServletRequest的问题,... 目录前言一、问题的来源:为什么异步线程中无法访问 HttpServletRequest?1. 请求上下文与线

在 Spring Boot 中使用异步线程时的 HttpServletRequest 复用问题记录

《在SpringBoot中使用异步线程时的HttpServletRequest复用问题记录》文章讨论了在SpringBoot中使用异步线程时,由于HttpServletRequest复用导致... 目录一、问题描述:异步线程操作导致请求复用时 Cookie 解析失败1. 场景背景2. 问题根源二、问题详细分

Java对象和JSON字符串之间的转换方法(全网最清晰)

《Java对象和JSON字符串之间的转换方法(全网最清晰)》:本文主要介绍如何在Java中使用Jackson库将对象转换为JSON字符串,并提供了一个简单的工具类示例,该工具类支持基本的转换功能,... 目录前言1. 引入 Jackson 依赖2. 创建 jsON 工具类3. 使用示例转换 Java 对象为

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot