如何配置支付宝密钥之如何配置证书|保姆级教学(二)

发布时间 2023-11-10 11:43:37作者: 盐焗代码虾

之前讲了「如何配置普通的 RSA2 密钥」,今天来捋一下如何配置证书~

依照惯例先放一下官方文档:[如何生成及配置公钥证书],小伙伴们也可以直接按照文档来~

 

前期准备:证书的适用范围

目前支付宝的所有产品都支持证书密钥去进行调用

其中「单笔转账」和「现金红包」 只能使用 证书 进行接口调用。

详情可参阅 ? [什么接口推荐使用公钥证书签名]

 

划重点:证书的主要用处

配置证书主要获取 5 个参数:CSR 文件 、应用私钥、应用公钥证书、支付宝公钥证书、支付宝根证书

  • 其中 CSR 文件 是拿来跟支付宝换 应用公钥证书、支付宝公钥证书、支付宝根证书
  • 应用私钥、应用公钥证书、支付宝公钥证书、支付宝根证书 是要传到代码中进行接口调用的。

 

第一步:生成证书

需要先下载支付宝官方工具:密钥生成工具

通过这个工具,我们可以获取到 CSR 文件 应用私钥

 

选择【证书】、【RSA2】、【组织/公司】填写支付宝账号的全称。

组织/公司 支付宝账号的全称 必须要保持一致,不然平台配置会报错:[上传证书提示:CSR文件中的企业名称 * 与认证的支付宝企业账户名称 * 不匹配]。

 

点击【打开文件位置】之后,我们可以在本地的 支付宝开放平台密钥工具 文件夹中找到生成的证书文件,文件名称是 证书+证书生成的具体时间点,如下图:

注意,其中:

  • CSR文件 是要拿到平台跟支付宝换 应用公钥证书、支付宝公钥证书、支付宝根证书 的。
  • 应用私钥 后续要写到代码里面的,需要妥善保管,如果泄露了需要及时更换整个密钥。

? [应用私钥泄露会怎么样]

  • 应用公钥 证书模式下一般情况用不到,先不管。

特别注意:这个工具生成的密钥默认是 Java 语言(PKCS8 格式)使用的,如果是其他语言,请用工具中的【格式转化】,把密钥转化成 PKCS1 格式。

? [如何区分密钥格式类型]

 

第二步:配置证书

配置密钥的过程就是讲 CSR 文件 要怎么去跟支付宝换 应用公钥证书、支付宝公钥证书、支付宝根证书。

其实官方的指引流程比较详细了,只要找到配置的位置,接下来的步骤就比较顺利。

位置在支付宝开放平台对应的应用界面下:

 

 

没有应用的小伙伴先可以创建一个应用 ? [如何创建应用]

 

点击【设置】,选择【证书】:

 

 

点击【下一步】,会有一个如何生成密钥文件的指引说明,也就是本文之前说的生成密钥步骤:

 

 

继续点击【下一步】:

 

上传文件的位置,选择之前的 CSR 文件 上传、

证书到期后的处理 直接选择平台自动签发,这两个模式区别在于证书到期之后都会发通知告知安全联系人需要修改证书,但是如果一直不处理的话,不自动签发模式下的证书就自动过期了。这时这个密钥下如果有线上业务在运行的话,所有业务都会因为证书到期而报错导致业务中断。

安全联系人 就是填写证书到期前要通知人的联系方式。

 

点击【上传】之后,会有一个校验,用验证码或者是支付密钥校验都可以:

 

 

上传成功之后,就可以换到 应用公钥证书、支付宝公钥证书、支付宝根证书 ,直接下载下来:

 

 

第三步:如何使用证书

通过上文的配置密钥的流程,我们就能拿到需要传入到代码中的 应用私钥 应用公钥证书、支付宝公钥证书、支付宝根证书

还是拿这个参考示例供大家查阅:

? [手机网站支付的代码参考示例]

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.CertAlipayRequest;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradeWapPayRequest;
import com.alipay.api.response.AlipayTradeWapPayResponse;

import net.sf.json.JSONObject;

public class AlipayTradeWapPay {

    public static void main(String[] args) throws AlipayApiException {
        
        /** 引用初始化方法,Config配置链接:https://opensupport.alipay.com/support/FAQ/08d46c24-15a8-4f1c-85a0-68fdf587f813  **/   
        CertAlipayRequest alipayConfig = new CertAlipayRequest();
        alipayConfig.setServerUrl(Config.gatewayUrl);
        alipayConfig.setAppId(Config.app_id);
        alipayConfig.setCharset(Config.charset);
        alipayConfig.setSignType(Config.sign_type);
        alipayConfig.setFormat(Config.format);
        alipayConfig.setPrivateKey(Config.merchant_private_key);
        alipayConfig.setCertPath(Config.app_cert_path);
        alipayConfig.setAlipayPublicCertPath(Config.alipay_cert_path);
        alipayConfig.setRootCertPath(Config.alipay_root_cert_path);
        AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
        
        AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest()
        JSONObject Content = new JSONObject() ;
        Content.put("out_trade_no", "20200612000001");
        Content.put("subject", "subject");
        Content.put("total_amount", "0.1");
        Content.put("product_code", "ALIPAY_WAP_PAY");
        request.setBizContent(Content.toString());
        
    request.setNotifyUrl(Config.notify_url);
    AlipayTradeWapPayResponse response = alipayClient.pageExecute(request,"GET");//生成url链接

    /** 获取接口调用结果 **/
    System.out.println(response.getBody());
    }

}

 

代码中这四个参数对应的位置为:

merchant_private_key 传入 应用私钥

app_cert_path 传入 应用公钥证书

alipay_cert_path 传入 支付宝公钥证书

alipay_cert_path 传入 支付宝根证书

 

以上就是配置「支付宝密钥之如何配置证书」的教程啦~,希望对你有所帮助~✿✿ヽ(°▽°)ノ✿