对于那些正在寻找即时解决方案的人,除了@preston-phx 和@houdi 提供的信息之外,这里还有更多技术细节:
Paypal 文章中提到:https://www.paypal.com/us/smarthelp/article/migration-to-digicert-root-certificates-ts2240
在此处从 Digicert 下载“DigiCert High Assurance EV Root CA”和“DigiCert Global Root G2”证书:
https://www.digicert.com/kb/digicert-root-certificates.htm
另外,下载您要调用的所有 Paypal API 的证书:
https://www.paypal.com/us/smarthelp/article/ts1510
(就我而言,我只使用 api.paypal.com,所以我下载了 api.paypal.com.pem 和 api.sandbox.paypal.com.pem)
这些将为您提供一组 pem 文件,例如:
DigiCertGlobalRootG2.crt.pem
DigiCertHighAssuranceEVRootCA.crt.pem
api.paypal.com.pem
api.sandbox.paypal.com.pem
将所有文件合并到一个 paypal.crt 文件中,如下所示:
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
...
将文件放在项目中的某个位置。我把它放在data/paypal.crt 下,类似于 PayPal-Ruby-SDK 存储它的位置。
现在您可以修改 SDK 以使用您的 paypal.crt 文件,而不是 SDK 中提供的过期文件,方法是在您初始化 PayPal SDK 之前的某处添加以下 sn-p:
# Monkey patch the paypal certificate file
PayPal::SDK::Core::Util::HTTPHelper.class_eval do
def default_ca_file
File.expand_path("../../data/paypal.crt", __dir__)
end
end
我使用的是 Rails,所以我直接将它添加到我的 config/initializers/paypal.rb 文件的顶部。
(我没有在此处提供证书或证书本身的任何直接链接,因为您永远不应信任第三方提供的任何证书。直接从 PayPal 和 Digicert 站点下载所有证书)