SpringBoot+Alipay支付宝支付对接教程(沙箱环境)

Alipay

  • 一、学习文档
  • 二、环境准备
    • 1、调试
    • 2、依赖
  • 三、开发
  • 完结

一、学习文档

1、API(统一收单下单并支付页面接口)
https://opendocs.alipay.com/apis/api_1/alipay.trade.page.pay
2、沙箱环境(打开登陆)
https://openhome.alipay.com/platform/appDaily.htm

二、环境准备

1、调试

(1)获取appid

点击上述沙箱环境网址,登陆进入,以下为appid
SpringBoot+Alipay支付宝支付对接教程(沙箱环境)_第1张图片
(2)设置RSA2密钥
1、依然是沙箱环境,如下,点击 设置
SpringBoot+Alipay支付宝支付对接教程(沙箱环境)_第2张图片
2、选择 公钥 ,此处的公钥支付宝提供了专门的生产工具,很方便
SpringBoot+Alipay支付宝支付对接教程(沙箱环境)_第3张图片
生成密钥有两种方式,我选择的是生成器生成。以下为生成器下载地址:
https://opendocs.alipay.com/open/291/105971
下载后安装即可使用
SpringBoot+Alipay支付宝支付对接教程(沙箱环境)_第4张图片
3、生成密钥
打开安装好的密钥生成器,选好后,点击生成密钥
SpringBoot+Alipay支付宝支付对接教程(沙箱环境)_第5张图片
4、返回沙箱环境,设置密钥
将3中生成的应用公钥拷贝到沙箱环境公钥位置
SpringBoot+Alipay支付宝支付对接教程(沙箱环境)_第6张图片
点击保存,会生成支付宝公钥,后续开发会说明用在哪里。
SpringBoot+Alipay支付宝支付对接教程(沙箱环境)_第7张图片

2、依赖

引入pom依赖,大家选择合适的版本即可

<dependency>
   <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>4.11.54.ALL</version>
</dependency>

三、开发

先上代码,最后对代码进行说明

@RestController
@RequestMapping("/alipay")
@Slf4j
public class AlipayController {
    private String publicKey;
    private String appId;
    private String privateKey;
    @RequestMapping("/pay")
    public String pay(@RequestParam(value = "amt") BigDecimal amt,
                      @RequestParam(value = "subject") String subject,
                      @RequestParam(value = "body") BigDecimal body) {
        log.info("支付宝支付入参:{}", amt + "," + subject + "," + body);
        String serverUrl = "https://openapi.alipaydev.com/gateway.do";
        String format = "json";
        String charset = "utf-8";
        String signType = "RSA2";
        AlipayClient alipayClient = new DefaultAlipayClient(serverUrl,appId,privateKey, format, charset,publicKey, signType);
        AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
        // 设置请求参数
        request.setReturnUrl(""); // 设置 支付宝同步返回支付结果url,可以以此结果做后续业务逻辑处理 可为空
		request.setNotifyUrl(""); // 设置 异步通知地址 可为空
        // 设置网页支付参数
        // outTradeNo 格式为yyyyMMddHHmmsss
        request.setBizContent("{\"out_trade_no\":\""+ new SimpleDateFormat("yyyyMMddHHmmsss").format(new Date()); +"\","
                + "\"total_amount\":\""+ amt +"\","
                + "\"subject\":\""+ "测试" +"\","
                + "\"body\":\""+ "iphone 12 pro max" +"\","
                + "\"timeout_express\":\""+ "5m" +"\","
                + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
        try {
            //这里和普通的接口调用不同,使用的是sdkExecute
            AlipayTradePagePayResponse response = alipayClient.pageExecute(request);
            if(response.isSuccess()){
               log.info("【 Ali pay调用成功 】");
            } else {
                log.info("【 Ali pay调用失败 】");
            }
            log.info("支付宝支付结束,响应为:{}", JSON.toJSON(response));
            // 就是orderString 可以直接给客户端请求,无需再做处理。
            return response.getBody();
        } catch (AlipayApiException e) {
            log.error("【 Ali pay 异常 】", e);
        }
        return "fail";
    }

}

上述代码中,publicKey即支付宝公钥,为上述设置完密钥后生成的部分
SpringBoot+Alipay支付宝支付对接教程(沙箱环境)_第8张图片
privateKey即应用私钥,即在密钥生成器中的应用私钥
SpringBoot+Alipay支付宝支付对接教程(沙箱环境)_第9张图片
测试url:http://localhost:9909/alipay/pay?amt=0.01&subject=测试&body=测试订单描述
请求结果如下:
SpringBoot+Alipay支付宝支付对接教程(沙箱环境)_第10张图片
**注:**付款成功后,会同步收到回调和异步回调,回调地址是在请求时设置的:
在这里插入图片描述
此外,扫码付款需要下载沙箱版支付宝(只支持安卓手机),不可用自己的支付宝账号密码登陆,需到沙箱环境下载沙箱钱包,用沙箱账号登陆
SpringBoot+Alipay支付宝支付对接教程(沙箱环境)_第11张图片

完结

支付宝提供了demo,下载地址:https://opendocs.alipay.com/open/203/105910
该demo是javaweb版本的,需要自己有tomcat,用开发工具打开项目后,要将项目转为web项目,此外就是需要按照文章前两节,获取必备信息,配置进去,项目启动成功即可体验支付宝支付。

你可能感兴趣的:(java技术分享,java,springboot,支付对接,alipay)