3

好的,我在编码和发送第 3 方 SOAP API 调用时从未见过这种情况,但看起来 PayPal 需要更大的客户端使用 X509 证书才能发送 API 调用,而不是像大多数 API 那样仅通过标准 API 签名发送要求你做。

我是唯一一个认为这有点奇怪或不标准的人吗?

http://en.wikipedia.org/wiki/X.509

我不明白这与 API 调用有何关系。我看到了他们在 C# 中给我的示例代码,在 .NET 中实现 ICertificatePolicy 接口……但这对我来说只是陌生的,这与他们仍然在 PayPal 沙箱中也为您提供 API 签名这一事实有何关系。那么为什么我需要读取物理文件证书并使用 API 签名呢?我想我没有看到证书和 PayPal SOAP API 之间的链接。

4

2 回答 2

1

在处理需要更安全的“握手”的连接时,这在大公司中很常见,这就是它的全部用途。

该文件由根证书制成,通常是 .pem、.p12、.pfx 这是一个使用 python 和 cURL 的示例,它非常简单,如果您对 X.509 文件有任何问题,我会得到与您购买根证书的人联系,或者只是在谷歌上搜索如何导出您需要的文件(我个人总是以 .p12 文件结尾)。

这是python代码

        c = pycurl.Curl()
        c.setopt(pycurl.URL, FirstDataAPI_URL)
        c.setopt(pycurl.HTTPHEADER, ["Accept:"])
        c.setopt(pycurl.POST, 1)
        c.setopt(pycurl.POSTFIELDS, urllib.urlencode(FirstDataAPI_PostData))
        b = StringIO.StringIO()
        c.setopt(pycurl.WRITEFUNCTION, b.write)
        c.setopt(pycurl.FOLLOWLOCATION, 1)
        c.setopt(pycurl.MAXREDIRS, 5)
        #c.setopt(pycurl.SSLCERT, '/home/***/***/***/ssl/digitalID.p12')
        c.setopt(pycurl.SSLCERT, '/home/***/***/***/ssl/productionDigitalId.p12')
        c.setopt(pycurl.SSLCERTTYPE, 'p12')
        c.setopt(pycurl.SSLCERTPASSWD, '******')
        c.perform()

为了与 SOAP 一起使用,我会寻找一个允许您设置证书文件的设置,然后您将被设置。

顺便说一句,这只是表明 Paypal 已经好几年没有更新他们的 API 了……我工作的大多数需要 X509 证书的 API 都非常过时,我还没有看到它在 API 中使用那是在过去 2 年里写的。

于 2010-01-19T21:06:09.440 回答
0

你正在处理人们的钱,虽然我不知道证书如何工作的细节,但基本上它确保从你的应用程序发送的付款更安全。

我假设一个简单的 API 密钥更容易被欺骗,并且更容易允许欺诈。

于 2010-01-19T21:05:23.357 回答