官方文档说的很清楚,但是不懂要做什么的话看着就会很迷。
https://docs.open.alipay.com/270/105899/
稍微整理一下头绪:
要做什么:
根据你的需求 调用支付宝接口,生成一个支付页面 生成一个收费用的二维码。
知道了要做什么 接口会返回什么后面就简单了。
流程:
- 1 根据你的逻辑计算出你要的金额,用于生产二维码金额。
- 2 你的单号便于查询到这条交易的详情,demo的话随手打一个。
- 3 带着你的金额和单号 访问支付宝提供的接口。
- 4 返回一个支付页面给用户。等待用户支付。
- 5 支付完成后回调接口中rsaCheckV1()方法确认是否支付成功。
查看https://docs.open.alipay.com/270/105899/
了解 什么是 appid,秘钥
成为商户需要认证,demo的开发可以使用沙箱。
沙箱:
https://openhome.alipay.com/platform/appDaily.htm?tab=info
沙箱环境就是一个虚拟的 交易者与商户。
你可以在这里获取 appid
实际开发自己申请即可。
获取生成支付链接接口代码如下:
@RequestMapping(value = "/goAlipay", produces = "text/html; charset=UTF-8")
@ResponseBody
public String goAlipay(HttpServletRequest request, HttpServletRequest response) throws Exception {
System.out.println("------支付宝-------");
//获得初始化的AlipayClient
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do", "2016101000653099", PaymentConstant.PRIVATE_KEY, "json", "UTF-8", PaymentConstant.PUBLIKE_KEY, "RSA2");
//设置请求参数
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
//回调函数
alipayRequest.setReturnUrl("localhost:8180/user/alipayReturnNotice");
alipayRequest.setNotifyUrl("localhost:8180/user/alipayNotifyNotice");
//商户订单号,商户网站订单系统中唯一订单号,必填
String out_trade_no = "2019-08-08-M";
//付款金额,必填
String total_amount = "0.01";
//订单名称,必填
String subject = "辣条";
//商品描述,可空
String body = "卫龙辣条*" + 1;
// 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
String timeout_express = "1c";
alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
+ "\"total_amount\":\""+ total_amount +"\","
+ "\"subject\":\""+ subject +"\","
+ "\"body\":\""+ body +"\","
+ "\"timeout_express\":\""+ timeout_express +"\","
+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
//请求
String result = alipayClient.pageExecute(alipayRequest).getBody();
return result;
}