請根據(jù)以下幾點排查:
1、請檢查待簽名串的參數(shù)的格式是否和文檔中要求的嚴格一致。
2、請注意文檔中參數(shù)末尾的換行符要求,如body為空則需要使用兩個\n換行符。
境外機構號重置證書后,舊的證書依然可以調用v2接口使用的原因:
1、存在平滑過渡期,并非立即失效。
2、自簽換CA有14天,CA換CA48小時。
目前只有windows版本支持,建議在window7以上系統(tǒng)使用。
這個是在讀取證書獲取公鑰時有問題,需要檢查使用的類在新版本jdk中是否deprecated的,如jdk9中是deprecated的。
登錄商戶平臺【account settings】->【API security】->【API certificate】,可查看商戶API證書序列號。
商戶API證書和微信支付平臺證書均可以使用第三方的證書解析工具,查看證書內容。或者使用openssl命令行工具查看證書序列號。
$ openssl x509 -in 1900009191_20180326_cert.pem -noout -serial
serial=1DDE55AD98ED71D6EDD4A4A16996DE7B47773A8C
推薦使用微信支付提供的SDK。你也可以查看下列編程語言的示例代碼。
/**
* 獲取證書。
*
* @param filename 證書文件路徑 (required)
* @return X509證書
*/
public static X509Certificate getCertificate(String filename) throws IOException {
InputStream fis = new FileInputStream(filename);
BufferedInputStream bis = new BufferedInputStream(fis);
try {
CertificateFactory cf = CertificateFactory.getInstance("X509");
X509Certificate cert = (X509Certificate) cf.generateCertificate(bis);
cert.checkValidity();
return cert;
} catch (CertificateExpiredException e) {
throw new RuntimeException("證書已過期", e);
} catch (CertificateNotYetValidException e) {
throw new RuntimeException("證書尚未生效", e);
} catch (CertificateException e) {
throw new RuntimeException("無效的證書文件", e);
} finally {
bis.close();
}
}
主要是為了確保在更換平臺證書時,不影響商戶使用微信支付的各種功能。以下場景中,微信支付會更換平臺證書:
1. 證書到期后,必須更換。(目前是五年)
2. 證書到期前,例行更換。(每年一次)
主要是為了防御“中間人攻擊”。
由于驗證應答報文的簽名和加密敏感信息時,必須使用到平臺證書。平臺證書是商戶認證微信支付身份時最關鍵的要素。因此,要通過簽名和加密等多重機制來保障商戶獲取到的平臺證書沒有被“中間人”篡改。
商戶在調用下載接口獲取平臺證書時,應進行以下四步操作,以保證證書的真實性:
1. 使用與平臺共享的對稱密鑰,解密報文中的證書(必須)
2. 通過解密得到的證書,來驗證報文的簽名(必須)
3. 使用證書查看工具,核對證書的頒發(fā)者為Tenpay.com Root CA。(強烈推薦)
4. 通過證書信任鏈驗證平臺證書(強烈推薦)
下面介紹如何使用openssl工具,通過證書信任鏈驗證平臺證書。
首先,從微信支付商戶平臺下載平臺證書信任鏈 CertTrustChain.p7b ,并將它轉換為pem證書格式。
openssl pkcs7 -print_certs -in CertTrustChain.p7b -inform der -out CertTrustChain.pem
然后,-CAfile file
指定受信任的證書,驗證下載的平臺證書
openssl verify -verbose -CAfile ./CertTrustChain.pem ./WeChatPayPlatform.pem
商戶上送敏感信息時使用了微信支付平臺公鑰加密。為了能使用正確的密鑰解密,微信支付要求商戶在請求的HTTP頭部中包括證書序列號 ,以聲明加密所用的密鑰對和平臺證書。詳見私鑰和證書的說明。
Customer Service Tel
Business Development
9:00-18:00
Monday-Friday GMT+8
Technical Support
WeChat Pay Global
ICP證