1.alipayConfig.setServerUrl()设置的有问题,这是支付宝网关地址(如下图)
2.对于资金出入的操作,必须使用密钥证书方式
3.invalid-signature 错误原因: 验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,网关生成的验签字符串为:xxx
其他验签错误也可以查找一下
注意:如果只复制action对应的跳转连接到浏览器中,则浏览器则显示:错误代码 invalid-signature 错误原因: 验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,网关生成的验签字符串为:xxx,
正确方式:应把获取的数据全部复制到某个页面中,直接运行页面,则可以正确展示正确的页面
4.调用成功,但是支付宝沙箱显示加载中
新旧沙箱的区别
这是因为使用了新版沙箱,需要切换旧版,注意修改支付宝网关和appID
切换地址
5.我是下载《支付宝开放平台密钥工具》生成密钥,之后上传应用公钥,下载应用公钥证书,支付宝公钥证书,支付宝根证书,然后使用公钥证书方式测试的
测试代码
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCwpCJrrP5gR+ZNSLlSR5w+yWCEY79ZrK62zxRbXb1KLm8Bcg7yfl/yQcTdWx3tB6U3dLKL1rdGNL/7nDHWv3hmxJsYYf96U3cy9pHcqBQrKwCpEArc/p1y+QdgtluN7doxrlP8zx5iOen4/dXZwAQuskYmoT+APvYoRXAStL1diQQpvABAmr7GIGdWHGZqFrEutvJQxleR1avMUBsbZwnbB7BBDbjSyPDn7oqie0C+E7H71hjAZgePf2y2ynVFMIdwQnEMvn5ZOd0vW2cHtJLc5NEdVY8Qh+yPyU1v7dMBPO9FumUiepOQt0G39P1iHCIfMy1mmDDuboGk3QzQQEY9AgMBAAECggEABVpT+LNbWguTvQ/RHd8xqu1rUVe8erky6jNISKSEkfTqRD7ymQKfYbYAgzy5oW8z4IRWzMoK78O1dah8EifnPCYFFS4TEd/pos+6B9fIFK7O7FCiI6RLnSpSwOmFyL1Ge";
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipaydev.com/gateway.do");
alipayConfig.setAppId("2021000122XXXXX");
alipayConfig.setPrivateKey(privateKey);
alipayConfig.setFormat("json");
//支付宝公钥证书
alipayConfig.setAlipayPublicCertPath("C:\\Download\\alipayPublicCert.crt");
alipayConfig.setAppCertPath("C:\\Download\\appPublicCert.crt");//应用公钥证书:
alipayConfig.setRootCertPath("C:\\Download\\alipayRootCert.crt");//支付宝根证书
alipayConfig.setCharset("UTF8");
alipayConfig.setSignType("RSA2");
AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
model.setOutTradeNo("70501111111S0011111120");
model.setTotalAmount("9.00");
model.setSubject("大乐透");
model.setProductCode("QUICK_WAP_WAY");
request.setBizModel(model);
AlipayTradeWapPayResponse response = alipayClient.pageExecute(request);
System.out.println(response.getBody());
if (response.isSuccess()) {
httpResponse.setContentType("text/html;charset=" + "UTF-8");
httpResponse.getWriter().write(response.getBody());//直接将完整的表单html输出到页面
httpResponse.getWriter().flush();
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}