目录
config(这里需要亲自添加appid,privateKey,publicKey)
前言
本来想直接对接到自己的账号的,结果支付宝开发者账号申请支付,需要有公司营业执照(没有不能使用),有沙盒练手也行。
注册账号(直接搜索支付宝沙盒)
具体代码编写
Application配置(按自己需求添加)
server:
port: 9190
config(这里需要亲自添加appid,privateKey,publicKey)
public class AlipayConfig {
/**
* 支付宝网关地址
*/
public static String serverUrl = "https://openapi-sandbox.dl.alipaydev.com/gateway.do";
/**
* appId
*/
public static String appId = "";
/**
* 应用私钥 后期替换成自己的私钥
*/
public static String privateKey = "";
/**
* 发送数据的格式 目前只能为json
*/
public static String format = "json";
/**
* 设置字符集编码 目前只能为utf-8
*/
public static String charset = "utf-8";
/**
* 支付宝公钥 后期替换成自己的支付宝公钥
*/
public static String publicKey = "";
/**
* 支付宝签名 目前是 RSA2
*/
public static String signType = "RSA2";
public static AlipayClient getAlipayClient() {
// 获得初始化的AlipayClient
return new DefaultAlipayClient(AlipayConfig.serverUrl, AlipayConfig.appId,
AlipayConfig.privateKey, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.publicKey,
AlipayConfig.signType);
}
}
controller类
@RestController
@RequestMapping("alipay")
public class PayController {
@Autowired
private AliPayServiceImp aliPayServiceImp;
/**
* 支付请求接口
*/
@RequestMapping("pay/{orderId}/{cost}/{aliname}") // 订单id(不能重复)和消费金额
public void pay(@PathVariable String orderId,@PathVariable String cost,@PathVariable String aliname, HttpServletResponse response){
boolean pay = aliPayServiceImp.pay(orderId, cost,aliname, response);
}
}
Service类
public interface AliPayService {
boolean pay(String orderId, String cost ,String aliname, HttpServletResponse response);
}
ServiceImpl类
回调地址:成功后请求到的地址,可以直接使用,百度地址:https://www.baidu.com。
@Service
public class AliPayServiceImp implements AliPayService {
@Override
public boolean pay(String orderId, String cost, String aliname, HttpServletResponse response) {
try {
AlipayClient alipayClient = AlipayConfig.getAlipayClient();
// 设置请求参数
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
AlipayTradePayModel model = new AlipayTradePayModel();
model.setOutTradeNo(orderId);
// 设置订单金额
model.setTotalAmount(cost);
// 订单名字
model.setSubject(aliname);
// 订单描述
model.setBody("这是"+aliname+"的消费订单");
// 产品码
model.setProductCode("FAST_INSTANT_TRADE_PAY");
// 设置参数
alipayRequest.setBizModel(model);
// 设置回调地址
String url = "http://localhost:9528/#/example/index";
System.out.println(url);
alipayRequest.setReturnUrl(url);
String result = alipayClient.pageExecute(alipayRequest).getBody();
response.setContentType("text/html;charset=utf-8");
response.getWriter().println(result);
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}
运行
请求地址
http://localhost:9190/alipay/pay/222987226543232/509/111
请求接口后出现下面界面