目录
一、安装支付宝支付demo
二、配置demo信息
三、配置回调地址和异步地址
四、内网穿透
(一)简介
(二)使用场景
(三)内网穿透的几个常用软件
(四)使用natapp
选择Java版本,下载后是一个eclipse项目
SDK & Demo 获取 - 支付宝文档中心 (alipay.com)
导入ideal参考:IDEA导入Eclipse项目步骤详解-CSDN博客
在AlipayConfig中配置,需要配置的信息如下:
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
public static String app_id = "";
// 商户私钥,您的PKCS8格式RSA2私钥
public static String merchant_private_key = "xxx";
// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
public static String alipay_public_key = "xxx";
// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String notify_url = "http://工程项目/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";
// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String return_url = "http://工程项目/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp";
// 签名方式
public static String sign_type = "RSA2";
// 字符编码格式
public static String charset = "utf-8";
// 支付宝网关
public static String gatewayUrl = "";
// 支付宝网关
public static String log_path = "";
首先我们进入沙箱支付宝开放平台 (alipay.com)
沙箱会分配APPID还有支付宝网关地址支付宝 - 网上支付 安全快速!
日志路径log_path可以不写,接下来是商户私钥和支付宝公钥,一共四把钥匙,支付宝需要知道我们应用的公钥,密钥自己藏着,然后我们也需要知道支付宝的公钥,其关系如下图所示:
在沙箱中点击自定义密钥,然后选择公钥模式,可以获取支付宝公钥
接着下载支付宝密钥生成器密钥工具下载 - 支付宝文档中心 (alipay.com),(傻瓜式安装,最多自定义一下安装路径),生成完成后要把公钥配置在上面的应用公钥那,应用私钥配置在代码中,如此还欠回调地址和异步地址,但是已经可以启动项目了,不影响整体运行。
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
public static String app_id = "9021015688664745";
// 商户私钥,您的PKCS8格式RSA2私钥
public static String merchant_private_key = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCYVu3TUNAskQBtOk3Ghqr7QCMl47SdMgsFHgDtCO0j8WuMX7c1dr6Lrn0FenJk12P2PZ72ei1pYWjNU73nshKQUttJ0ZJ8rKKclMvUCPfFQyXtwd1m9r/ZUpFzhHcvuVeKyfTKEGKsdZu1unHf2a9BC/lOeXOsa7nU0Kr+KZHoRRQRra5rXhrYDCk9xvr45gJl1eWyR3vFEBLmKlJF6B5noUgs8QkCKcO4s6tZ2W64j5E6v/CJkOUHE9fz7XdgAzOEiDwFworgty+U4Zy6oYUnGbaPit2zqTQBItB1JAoGBAJb/mZwW8Atu9uaT6ooFFgR7y9MwD2PcjugKnvf1Ll+eiRg3qMQGrNhxNRQ2jCD6rQUYgjnLgd7WFY5RYok0tQfEHP4aNK7nN0Hd150oMwTTa5c44XipM1+G2QrzBtIEKTEQbx0mL2HkFqvstONKWDhKFexMxmqJbzixygriKvzBAoGACE+3kyPXCsOCQCxmaJuJovm9dmyMgktEtrPxhFDRfsYqOc6xyKd84LgzFNNKmcuhMVI2cTphHQw0M5l2wDhOQbKSh26t2urwZIGbHSa3v2tb/dKpkXi0gu63Y7PpsNYx1ZOKuSAStz8gv5TnqoCrPFynJKFWMhW4C0VqLVsLSvg=";
// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
public static String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wnAk9KNZf8hkPzI0KwEXu8ebXRgiRs8UXOd9O8LYScDHBBNTqTgexHaGJHeOXtZf8WLo6rBFfJRFedMOTcFk9S9j7arLdvqnAew7DUzE7bWl4jgPzcs5FH1CV2nCsURwrUKUvtx9cbRTCA82hDvC0uPDO6IDkj40tfYxJtL1IjIlMzfwbh4cMRXbZxo0VetjTe/BMG7JuQBokdnXpy84dGTOK8oJC/gJCOai65l57KcuSKXcG3EmlhqUZaq8HF4Rg9A7ScdSQ7Xu7bAp6XxOIkrw2VFEyA+93zEj2x6fWr3RTNsYez3Xjy1QhXoqeaZQQckolvc3huTfsT8eV2QVQIDAQAB";
// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String notify_url = "http://工程项目/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";
// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String return_url = "http://工程项目/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp";
// 签名方式
public static String sign_type = "RSA2";
// 字符编码格式
public static String charset = "utf-8";
// 支付宝网关
public static String gatewayUrl = "https://openapi-sandbox.dl.alipaydev.com/gateway.do";
// 支付宝网关
public static String log_path = "";
付款账号可以使用沙箱中给我们的,还能自己无限充钱
启动时报错:
Error:(1, 1) java: 非法字符: ‘\ufeff’
Error:(1, 10) java: 需要class, interface或enum
解决:
Error:(1, 1) java: 非法字符: '\ufeff'_浪里小菜鸡的博客-CSDN博客
配置成localhost:8080?确实可以,因为项目就在本机运行,但需要考虑到的是,买家在世界各地,支付完后访问不了这两个页面,为什么京东可以在全世界各地防问,因为有域名,所以我们需要一个域名可以映射本机localhost:8080,使得外网可以访问内网,这里介绍内网穿透
// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String notify_url = "http://localhost:8080/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String return_url = "http://localhost:8080/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp";
在网站中注册后下载客户端:NATAPP-内网穿透 基于ngrok的国内高速内网映射工具
新手教程:NATAPP1分钟快速新手图文教程 - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具
下载config.ini并放在客户端同一目录下,配置authToken后直接双击启动exe客户端, Forwarding行即为 域名->ip:端口
完成后将其配置到代码中
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
public static String app_id = "9021015688664745";
// 商户私钥,您的PKCS8格式RSA2私钥
public static String merchant_private_key = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCYVu3TUNAskQBtOk3Ghqr7QCMl47SdMgsFHgDtCO0j8WuMX7c1dr6Lrn0FenJk12P2PZ72ei1pYWjNU73nshKQUttJ0ZJ8rKKclMvUCPfFQyXtwd1m9r/ZUpFzhHcvuVeKyfTKEGKsdZu1unHf2a9BC/lOeXOsa7nU0Kr+KZHoRRQRra5rXhrYDCk9xvr45gJl1eWyR3vFEBLmKlJF6B5noUgs8QkCKcO4s6tZ2W64j5E6v/CJkOUHE9fz7XdgAzOEiDwFworgty+U4Zy6oYUnGbaPit2zqTQBItB1JAoGBAJb/mZwW8Atu9uaT6ooFFgR7y9MwD2PcjugKnvf1Ll+eiRg3qMQGrNhxNRQ2jCD6rQUYgjnLgd7WFY5RYok0tQfEHP4aNK7nN0Hd150oMwTTa5c44XipM1+G2QrzBtIEKTEQbx0mL2HkFqvstONKWDhKFexMxmqJbzixygriKvzBAoGACE+3kyPXCsOCQCxmaJuJovm9dmyMgktEtrPxhFDRfsYqOc6xyKd84LgzFNNKmcuhMVI2cTphHQw0M5l2wDhOQbKSh26t2urwZIGbHSa3v2tb/dKpkXi0gu63Y7PpsNYx1ZOKuSAStz8gv5TnqoCrPFynJKFWMhW4C0VqLVsLSvg=";
// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
public static String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wnAk9KNZf8hkPzI0KwEXu8ebXRgiRs8UXOd9O8LYScDHBBNTqTgexHaGJHeOXtZf8WLo6rBFfJRFedMOTcFk9S9j7arLdvqnAew7DUzE7bWl4jgPzcs5FH1CV2nCsURwrUKUvtx9cbRTCA82hDvC0uPDO6IDkj40tfYxJtL1IjIlMzfwbh4cMRXbZxo0VetjTe/BMG7JuQBokdnXpy84dGTOK8oJC/gJCOai65l57KcuSKXcG3EmlhqUZaq8HF4Rg9A7ScdSQ7Xu7bAp6XxOIkrw2VFEyA+93zEj2x6fWr3RTNsYez3Xjy1QhXoqeaZQQckolvc3huTfsT8eV2QVQIDAQAB";
// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String notify_url = "http://内网穿透域名/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";
// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String return_url = "http://内网穿透域名/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp";
// 签名方式
public static String sign_type = "RSA2";
// 字符编码格式
public static String charset = "utf-8";
// 支付宝网关
public static String gatewayUrl = "https://openapi-sandbox.dl.alipaydev.com/gateway.do";
// 支付宝网关
public static String log_path = "";
重新运行,测试结束。