支付宝支付-升级公钥证书

本文介绍如何将支付宝接口密钥升级为公钥证书模式,包括必要的文件准备、SDK版本更新及代码配置调整等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因

项目需要实现自动提现到支付宝,涉及到资金类支出接口 ,所以需要升级密钥为公钥证书
参考文档:支付宝密钥相关文档

准备证书

在这里插入图片描述
在这里插入图片描述
生成csr时保存下来的2个.txt(应用公钥没啥用,应用私钥需要妥善保存),支付宝平台下载 3个.csr(应用公钥证书、支付宝公钥证书、支付宝根证书);

代码修改
  1. 升级SDK版本,低版本SDK不支持证书模式
	<dependency>
		<groupId>com.alipay.sdk</groupId>
		<artifactId>alipay-sdk-java</artifactId>
		<version>4.11.54.ALL</version>
	</dependency>
  1. 升级初始化方式
    private static final String URL = "https://openapi.alipay.com/gateway.do";
    /**
     * 数据类型
     */
    public static final String DATA_FORMAT = "json";
    public static final String CHARSET = CharsetUtil.UTF_8;
    /**
     * 签名类型
     */
    public static final String SIGN_TYPE = "RSA2";
 

    @Bean
    public AlipayClient aplipayClient(AliPayProperties properties) {
        try {
            CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
            certAlipayRequest.setServerUrl(URL);
            certAlipayRequest.setAppId(properties.getAppId());
			//应用私钥,生成csr文件时,保存到本地的私钥txt文件
			certAlipayRequest.setPrivateKey(readKey(properties.getMerchantPrivateKeyPath()));
            certAlipayRequest.setFormat(DATA_FORMAT);
            certAlipayRequest.setCharset(CHARSET);
            certAlipayRequest.setSignType(SIGN_TYPE);
            //应用公钥证书路径
            certAlipayRequest.setCertPath(properties.getMerchantCertPath());
            //支付宝公钥证书路径
            certAlipayRequest.setAlipayPublicCertPath(properties.getAlipayCertPath());
            //支付宝根证书路径
            certAlipayRequest.setRootCertPath(properties.getAlipayRootCertPath());
            return  new DefaultAlipayClient(certAlipayRequest);
        } catch (AlipayApiException e) {
            AssertUtils.fail("AlipayClient初始化失败:"+e.getMessage());
            return null;
        }

    }

    private String readKey(String path) {
        if (FileUtil.exist(path)) {
            FileReader reader = new FileReader(path);
            return reader.readString();
        } else {
            AssertUtils.fail("缺少支付宝应用密钥文件");
        }
        return null;
    }
  1. alipayClient.execute改成 alipayClient.certificateExecute
  2. 回调验签方法 AlipaySignature.rsaCheckV1 升级为 AlipaySignature.rsaCertCheckV1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值