1

I am trying to pull PayPal order information using Python and paypalrestsdk.

For some reason I am getting an certificate error that does not make sense to me.

payment_history = paypalrestsdk.Payment.all({"count": 10}, api=PayPal_key.Key_api())
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/paypalrestsdk-1.6.2-py2.7.egg/paypalrestsdk/resource.py", line 137, in all
    response = api.get(url)
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/paypalrestsdk-1.6.2-py2.7.egg/paypalrestsdk/api.py", line 222, in get
    return self.request(util.join_url(self.endpoint, action), 'GET', headers=headers or {})
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/paypalrestsdk-1.6.2-py2.7.egg/paypalrestsdk/api.py", line 135, in request
    http_headers = util.merge_dict(self.headers(refresh_token=refresh_token), headers or {})
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/paypalrestsdk-1.6.2-py2.7.egg/paypalrestsdk/api.py", line 205, in headers
    token_hash = self.get_token_hash(refresh_token=refresh_token)
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/paypalrestsdk-1.6.2-py2.7.egg/paypalrestsdk/api.py", line 98, in get_token_hash
    "Accept": "application/json", "User-Agent": self.user_agent
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/paypalrestsdk-1.6.2-py2.7.egg/paypalrestsdk/api.py", line 161, in http_call
    response = requests.request(method, url, proxies=self.proxies, **kwargs)
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/requests-2.5.0-py2.7.egg/requests/api.py", line 49, in request
    response = session.request(method=method, url=url, **kwargs)
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/requests-2.5.0-py2.7.egg/requests/sessions.py", line 461, in request
    resp = self.send(prep, **send_kwargs)
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/requests-2.5.0-py2.7.egg/requests/sessions.py", line 573, in send
    r = adapter.send(request, **kwargs)
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/requests-2.5.0-py2.7.egg/requests/adapters.py", line 431, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

I checked the paypal.com certificate:

requests.get('https://paypal.com', verify=True)

and got:

<Response [200]>

Could someone help to resolve this?

1 Answers1

0

The certificate presented by paypal.com is different from that presented by their API endpoints, so your test:

requests.get('https://paypal.com', verify=True)

.. does not reveal the issue you're having when trying to use their APIs.

If you are still having issues, I recommend taking a look at upgrading the underlying version of OpenSSL to ensure you're using a version that supports TLS 1.2 which PayPal's API endpoints require.

lukewarm
  • 839
  • 6
  • 14