【问题标题】:TLS issue while calling stripe charge API from my local env从我的本地环境调用条带收费 API 时出现 TLS 问题
【发布时间】:2018-06-02 22:39:13
【问题描述】:

我正在沙盒模式下实施 Stripe 支付网关。我已经嵌入了结帐流程,并且还创建了服务器用来调用 API 来创建费用的令牌。

使用的API版本是:stripe.api_version = '2017-06-05'

charge = stripe.Charge.create(
   amount=1000,
   currency="usd",
   description="Example charge",
   source=token,
)

当我调用此费用创建 api 时,我收到以下错误:

b'{\n "error": {\n "type": "invalid_request_error",\n
"message": "Stripe 不再支持使用 TLS 1.0 发出的 API 请求。 请使用 TLS 1.2 或更高版本启动 HTTPS 连接。你可以学习 更多信息请访问https://stripe.com/blog/upgrading-tls。"\n }\n}\n'

用于在本地机器上创建费用的条带 API 是:

POST: https://api.stripe.com/v1/charges

我怎样才能让它在我的本地机器上工作?

但是当我将它部署到 AWS 时,它就在那里工作。

【问题讨论】:

    标签: python django stripe-payments


    【解决方案1】:

    您的本地 Python 解释器链接到不支持 TLS 1.2 的旧版 OpenSSL。您可以通过以下方式检查:

    $ python -c "import ssl; print(ssl.OPENSSL_VERSION)"
    

    您需要 OpenSSL 1.0.1 或更高版本才能使用 TLS 1.2。

    如果您使用的是 OS X,解决此问题的最简单方法是使用 Homebrew 包管理器:

    $ brew update && brew upgrade && brew install openssl && brew install python
    

    如果您使用的是 Python 3,请将上述命令行末尾的 python 替换为 python3

    【讨论】:

    • 当我最初运行$ python -c "import ssl; print(ssl.OPENSSL_VERSION)" 时,它给了我OpenSSL 0.9.8zh 14 Jan 2016。但是在运行$ brew update && brew upgrade && brew install openssl && brew install python3 之后,它给了我openssl 1.0.2n。但在我项目的虚拟环境中,版本没有改变。它在虚拟环境中显示OpenSSL 0.9.8zh 14 Jan 2016
    • @AnkitaGupta 这意味着您的 virtualenv 仍在使用 OS X 的默认 Python (/usr/bin/python) 而不是 brew 安装的 Python (/usr/local/bin/python3)。
    猜你喜欢
    • 2019-03-04
    • 1970-01-01
    • 2011-04-26
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 2022-11-20
    • 1970-01-01
    相关资源
    最近更新 更多