请根据以下几点排查:
1、请检查待签名串的参数的格式是否和文档中要求的严格一致。
2、请注意文档中参数末尾的换行符要求,如body为空则需要使用两个\n换行符。
境外机构号重置证书后,旧的证书依然可以调用v2接口使用的原因:
1、存在平滑过渡期,并非立即失效。
2、自签换CA有14天,CA换CA48小时。
目前只有windows版本支持,建议在window7以上系统使用。
这个是在读取证书获取公钥时有问题,需要检查使用的类在新版本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. 使用证书查看工具,核对证书的颁发者为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证