|
首先去支付宝开发平台入驻https://open.alipay.com/
1:开发入驻
输入信息入驻后进入 研发服务--》沙箱

2:查看appid和支付宝网关
因为是沙箱环境 所以网关统一都是测试环境 https://openapi.alipaydev.com/gateway.do

3:生成密钥

在沙箱环境中配置应用公钥


得到支付宝公钥

4:配置
新建配置
package com.sinosoft.config;
public class AlipayConfig {
//客户appid
public static String APPID="第二步的appid";
//私钥
public static String RSA_PRIVATE_KEY="应用私钥 第三步需要配置到java中的";
//服务器异步通知页面路径
public static String notify_url="http://www.baidu.com";
public static String return_url="http://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="配置应用公钥之后生成的支付宝公钥";
//RSA2
public static String SIGNTYPE="RSA2";
}
5:编写请求页面和java
package com.sinosoft.controller;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayTradePagePayModel;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.response.AlipayTradePagePayResponse;
import com.sinosoft.config.AlipayConfig;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@RestController
public class OrderController {
/**
* 阿里支付
*/
@PostMapping("/oalipay")
public String alipay(String out_trade_no,String subject,String total_amount,String body,String product_code) throws AlipayApiException {
AlipayConfig alipayConfig = new AlipayConfig();
//封装RSA签名方式
AlipayClient alipayClient = new DefaultAlipayClient(
alipayConfig.URL,//请求网关
alipayConfig.APPID,//收款ID
alipayConfig.RSA_PRIVATE_KEY,//私钥
alipayConfig.FORMAT,//返回格式
alipayConfig.CHARSET,//字符编码格式
alipayConfig.ALIPAY_PUBLIC_KEY,//支付宝公钥
alipayConfig.SIGNTYPE);//加密方式
//创建request
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
//设置异步回调地址
request.setNotifyUrl(alipayConfig.notify_url);
//设置同步回调地址
request.setReturnUrl(alipayConfig.return_url);
//封装参数
AlipayTradePagePayModel model = new AlipayTradePagePayModel();
model.setOutTradeNo(UUID.randomUUID().toString());//商品id
model.setBody(body);//商品描述
model.setSubject(subject);//商品名称
model.setTimeoutExpress("30m");//超市
model.setTotalAmount(total_amount);//支付金额
model.setProductCode("FAST_INSTANT_TRADE_PAY");
//设置request参数
request.setBizModel(model);
/*alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\","
+ "\"total_amount\":\"" + total_amount + "\","
+ "\"subject\":\"" + subject + "\","
+ "\"body\":\"" + body + "\","
+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");*/
//生成表单
AlipayTradePagePayResponse alipayTradePagePayResponse = alipayClient.pageExecute(request);
String result = alipayTradePagePayResponse.getBody();
return result;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<H1>支付宝demo测试</H1>
<hr>
<form action="/oalipay" method="post">
*商户订单 :<br>
<input type="text" name="out_trade_no"><br>
*订单名称 :<br>
<input type="text" name="subject"><br>
*付款金额 :<br>
<input type="text" name="total_amount"><br>
商品描述 :<br>
<input type="text" name="body"><br>
商品码 :<br>
<input type="text" name="product_code"><br>
<input type="submit" value="支付宝支付">
</form>
</body>
</html>
6:访问

7:点击支付
跳转到支付页面

|