Java调支付宝接口最新版!
技术: Java+SpringBoot+Maven+沙箱测试
时间: 2022/3/1日发布
-
新建SpringBoot添加Web模块不多介绍了,肯定都会
-
添加支付宝的依赖
<dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.22.32.ALL</version> </dependency>
-
开始配置沙箱
地址: https://open.alipay.com/platform/appDaily.htm
在旧版本还需要自动生成公钥私钥,但是新版已经为您生成好了,直接用就可以…
沙箱简介:
点击公钥模式,查看,里面参数后面用到
账号就是一个买家一个卖家 比较简单,就介绍到这里,下面开始上代码
-
模拟一张页面,方便POST请求,代码如下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>支付宝支付测试</title> </head> <body> <h1>商品购买页面</h1> <form action="/buy" method="post"> <p>商品单号:<input type="text" name="out_trade_no"></p> <p>商品名称:<input type="text" name="subject"></p> <p>付款金额:<input type="text" name="total_amount"></p> <p>商品描述:<input type="text" name="body"></p> <p>支付超时时间:<input type="text" name="timeout_express"></p> <p>销售产品码:<input type="text" name="product_code"></p> <p><input type="submit" value="提交"></p> </form> </body> </html>
-
开始对交易做一些基础的配置,下面的config类上面都打了注释,也就不跟大家一个一个介绍了,大部分都是上面介绍沙箱时候用到的参数
我这里支付成功就跳转百度,你们可以根据你们的需求来
大家不喜欢用Java类也可使用配置文件,之后IO读取是一样的,代码如下
/** * @author: ZhouXK * @date: 2022/3/1-17:06 * @describeL: 支付宝接口参数 */ public class AliPayConfig { /** * 商户APPId */ public static String APPID = "2021000119626311"; /** * 私钥 */ public static String RSA_PRIVATE_KEY = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC78A16/43Px6/HdN4s4sbC5jy3SrLa136cvxEZ8O7ckcW7bpqWqHTXkI6qv+AsTAtzgc+0OA4AfumsRYAAi5DFMcLS1gnDhLxbtnbTcvednP/dd4KobfuN8IOPt0FeCiC4SRX+4ttqYF3J3+WagD7NOOBZ0Aa8Rvct1z+pl7e9QryYZ0tXnG6Mcn+EUFDsHKvMpy4S9XgRUW8IMObLRfCx9VSnaEy6ahR3pKAzYseWA1VzUKIy0eFtf5iE94p/axh3NwUEpboR5mrpb+W6egQE782lImwrQwfMXeLCWNgsyVD0ViwLIe5HV3T0Uf+WcqALctDrzltOFvjvbJYbMNZJAgMBAAECggEAPwujagyKpRZGyHFTCtm0dbNI0PAVGcbKqYiLExm493NLUroiz8GJGLtcsLkXWaTU/pWgeMOJJu9sMidKbmRjV1N/GL1GnzlK+rU2HW7m1A/T4ZZy1U+34IC7kZ2XJxXcrhWOdGfj1Uaoj801N+QnrS6UTGy1pblkuBMKPzkvISTLDx75en3ShQO2Ts+icY5t9k0PlozjJTcGpt1ltly778oJR5UG3V9izkCWm5/ZyDrf/IvKbXYfxtfQO2NFc8JONenoI5awe7bDlSn/NQuzDFu94sQZXUzzgGY0392tn56rue6Ibwpc9B4zffaxWpbA43MkLIhOB/derJqqIYW9BQKBgQD1F7gyguCWtIfiPEIi+QeECqWUQifgB8W5e8Vrxl/J1Qq2eODJou9xy0/g2fj/ifpl8JTULlXXRNQCwhoi+DCNrDsX81RyIiB28IJUmhKCr7wKEL9P8P+HAtEXHQUd8P2DU+zfi6DA3ky7WpGa8HOgohQwzNUkg0Ni8ueX7ICBIwKBgQDETS5K2XgwijwQAbZ7uDjfva+aWxXWtKsdi4jIVBY0UVMr2c1ElJga56GCIfgmzrJbkJ3ASTPpfzolNHvuiyfXfcrqIKS2KyUJdPrKXpYC7ujRgw+DqMatrwQZjpdIMowO67w8p7b5YMLQd9RcBEdcilWVDRIUZ0xIhGSXAv0/owKBgENslAqpQHmVDnCpXRRb57pmZ2iizm9uE/HT39qnRwCyL/FEzaoKvc5TPRVBQaOi5JSYm4jHemvvDlf359LI7ip7QAJ1uTxwsPencGMvw3naOGOYedjXFqSgnL68CAVVn5g6RUa2FbIZNYixAK9cCKMfE2jdYKFbzvTwl8+Oi0d7AoGAaTJ3WXNbfp/F+koAsiKSkAzGO3EOrgYaIXYycjDlyVm/uaM55sO/E8QIAIYVxy5D1OAWOgLAyCP/VArhU3/NdSUbhgbCXkGW0o+XCrZPq/i+WfDjcooTFubQyqVomy9DcYeRU+wJGXFqVW+yJTHB0Gzt2jer9bU54y7X/TmD4AMCgYEA3L3SYNFh9txoOd7dtJaBzj52Eiu6LOWGV2wQLYoiKLfaoa7+RUjDK6CWs6LxVd6aKtjOchxNA052Feu1XyMNKNlbfT5HPpOrGcoLCn0qHYX/D3/jiftECGz7M6Sp9jvLXamiIMhGQCm8Dnv9PCA0DIXdsQJ4ldRvZ5RbvnT244c="; /** * 异步通知URL */ public static String NOTIFY_URL = "https://www.baidu.com/"; /** * 同步通知URL */ public static String RETURN_URL = "https://www.baidu.com/"; /** * 请求网关地址 */ public static String URL = "https://openapi.alipaydev.com/gateway.do"; /** * 编码格式 */ public static String CHARSET = "UTF-8"; /** * 返回格式 */ public static String FORMAT = "json"; /** * 支付宝公钥 */ public static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlhRcorwMswcYN61r8AY7/qX6vASrDKbr1N4GvXUV1z7kIJvMNCiNrbO90pqr788gqf7TJVIRjWjgvVhTZiYWUBveKeho2C4XnZXFk2d6QY2jOBpWCXsjC+5ggp4njDdwj5thD2ujo7/reepgpC+KHHaPJ5iZ4JTifDHE4qJ1KBJNIikmNokQIT3YNKpdYSD8eRhQqi2lXOo1Fj7IuKESMGdG+JHo1p+s0Z3XTdVkuWlNxxClO0WxU89Vq+0FRbSh4R2jaC+LiKwtwHVUnYkbSgmToukb4vBjjmB2HbWYKbKJw018RMiDhziRVYjupF6wBPyfUuSkubCj4//yYgi8xwIDAQAB"; /** * 加密方式 */ public static String SIGNTYPE = "RSA2"; }
-
接下来就写Controller层
/** * @author: ZhouXK * @date: 2022/3/1-17:19 * @describeL: 支付宝支付接口 */ @Controller public class ShopAlipayController { @PostMapping("/buy") @ResponseBody //这个接收的参数就是前端页面那几个参数,这是MVC的东西,如果可以我建议你封装一个DTO对象啥的... public String test(HttpServletResponse response, String out_trade_no, String subject, String total_amount, String body, String timeout_express, String product_code) throws IOException { /** * 支付宝签名方式,参数讲解,跟配置类里面的参数是照应的,如果不想要配置类,直接把值写到这里面也ok * 1.请求网关 * 2.收款人Id * 3.支付宝私钥 * 4.返回格式 * 5.编码格式 * 6.支付宝公钥 * 7.加密方式 */ AlipayClient alipayClient = new DefaultAlipayClient( AliPayConfig.URL, AliPayConfig.APPID, AliPayConfig.RSA_PRIVATE_KEY, AliPayConfig.FORMAT, AliPayConfig.CHARSET, AliPayConfig.ALIPAY_PUBLIC_KEY, AliPayConfig.SIGNTYPE ); //创建Request请求,这个是支付宝提供的 AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest(); // 封装参数 AlipayTradeWapPayModel payModel = new AlipayTradeWapPayModel(); payModel.setOutTradeNo(out_trade_no); payModel.setSubject(subject); payModel.setTotalAmount(total_amount); payModel.setBody(body); payModel.setTimeoutExpress(timeout_express); payModel.setProductCode(product_code); request.setBizModel(payModel); //设置异步地址 request.setNotifyUrl(AliPayConfig.NOTIFY_URL); //设置同步回调地址 request.setReturnUrl(AliPayConfig.RETURN_URL); //生成表单 String form = null; try { form = alipayClient.pageExecute(request).getBody(); } catch (AlipayApiException e) { e.printStackTrace(); } return form; } }
之后请求localhost:8080默认跳转index.html,参数随便填写,请求就完事了
浏览器付款,这样用沙箱账号,或者直接下载一个沙箱版APP也是可以的
剩下的就是登录成功付款成功之后跳转百度了… 走到这里教程就结束了,加油,打工人!