1. 程式人生 > 其它 >提取根證書失敗AlipayRootCert Is Invalid

提取根證書失敗AlipayRootCert Is Invalid

技術標籤:支付Java後端java

問題解決:當專案打為jar時,支付寶證書不能儲存在classes目錄下

最開始我的配置資訊如下所示:

ali.pay.appCertPath=classpath:appCertPublicKey_2021001166627070.crt
ali.pay.alipayCertPath=classpath:alipayCertPublicKey_RSA2.crt
ali.pay.alipayRootCertPath=classpath:alipayRootCert.crt

執行專案測試支付功能時,一直報證書檔案找不到,AlipayRootCert Is Invalid,我就納悶了,微信證書直接這麼儲存就測試通過,為什麼支付寶證書一直找不到呢?開始以為屬性搞錯了,我又再三檢查了實體類,如下:

package com.ltf.config;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import lombok.Data;

/**
 * 支付寶支付商戶基本資訊
 * @author xhz
 *
 */
@Data
@Component
@ConfigurationProperties(prefix = "ali.pay")
public class AliPayProperties {

	/**
	 * appId
	 */
	private String appId;
	/**
	 * 應用私鑰
	 */
	private String appPrivateKey;
	/**
	 * 支付寶公鑰
	 */
	private String aliPayPublicKey;
	/**
	 * 應用公鑰證書路徑
	 */
	private String appCertPath;
	/**
	 * 支付寶公鑰證書路徑
	 */
	private String alipayCertPath;
	/**
	 * 支付寶根證書路徑
	 */
	private String alipayRootCertPath;
	/**
	 * 支付寶回撥地址
	 */
	private String url;
	/**
	 * 應用回撥地址
	 */
	private String notifyUrl;
	/**
	 * 編碼
	 */
	private String charset;
	/**
	 * 返回格式
	 */
	private String format;
	/**
	 * 加密型別
	 */
	private String signType;

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this,
				ToStringStyle.MULTI_LINE_STYLE);
	}

}

經過反覆對比,屬性確實沒錯呀,嘗試了各種辦法都不行,心態要炸了,後來我把證書copy出來,換了個路徑儲存

配置檔案資訊改為如下:

ali.pay.appCertPath=C:/alipay/appCertPublicKey_2021001166627070.crt
ali.pay.alipayCertPath=C:/alipay/alipayCertPublicKey_RSA2.crt
ali.pay.alipayRootCertPath=C:/alipay/alipayRootCert.crt

再次啟動專案並測試支付功能,這次終於測試通過了,真是坑呀!!!