本文主要是介绍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, interface或enum
这里参考: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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!