好的,我从来没有见过这样的编码反应和发送第三方SOAP API调用,但看起来像PayPal要求他们的大客户使用X509证书发送API调用而不是仅通过标准API签名发送像大多数API要求你这样做。
我是唯一一个认为这有点奇怪或不是stadnard的人吗?
http://en.wikipedia.org/wiki/X.509
我不明白这与API调用有什么关系。我看到他们用C#在.NET中实现ICertificatePolicy接口给我的示例代码...但这对我来说很陌生,这与他们在PayPal沙箱中仍然为您提供API签名的事实有关。那么为什么我需要读取物理文件证书并使用API签名?我想我没有看到证书和PayPal SOAP API之间的链接。
答案 0 :(得分: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 ...我工作的大多数API需要X509证书非常过时且我没有看到这个使用过在过去两年写的API中。
答案 1 :(得分:0)
你正在处理人们的钱,虽然我不知道证书的工作方式,但基本上它确保从你的应用程序发送的付款更安全。
一个简单的API密钥更容易欺骗,并且我更容易假设欺诈。