Python 从本地环境调用条带收费API时TLS问题

Python 从本地环境调用条带收费API时TLS问题,python,django,stripe-payments,Python,Django,Stripe Payments,我正在沙箱模式下实现条带支付网关。我嵌入了签出过程,还创建了令牌,服务器使用该令牌调用API来创建费用 使用的API版本为:stripe.API\u version='2017-06-05' charge = stripe.Charge.create( amount=1000, currency="usd", description="Example charge", source=token, ) 调用此费用创建api时,我收到以下错误: b'{\n“错误”:{\n“

我正在沙箱模式下实现条带支付网关。我嵌入了签出过程,还创建了令牌,服务器使用该令牌调用API来创建费用

使用的API版本为:
stripe.API\u version='2017-06-05'

charge = stripe.Charge.create(
   amount=1000,
   currency="usd",
   description="Example charge",
   source=token,
)
调用此费用创建api时,我收到以下错误:

b'{\n“错误”:{\n“类型”:“无效的请求错误”,\n
“消息”:“条带不再支持使用TLS 1.0发出的API请求。 请使用TLS 1.2或更高版本启动HTTPS连接。您可以学习 有关详细信息,请访问。“\n}\n}\n”

用于在本地计算机中创建费用的条带API为:

POST: https://api.stripe.com/v1/charges
如何使其在本地机器上工作


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

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

$ python -c "import ssl; print(ssl.OPENSSL_VERSION)"
要使用TLS1.2,您需要OpenSSL 1.0.1或更高版本

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

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

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

当我运行
$python-c“导入ssl;打印(ssl.OPENSSL_版本)”
最初,它给了我
OPENSSL 0.9.8zh 2016年1月14日
。但是在运行
$brew update&&brew upgrade&&brew install openssl&&brew install python3
之后,它会给我
openssl 1.0.2n
。但在我的项目的虚拟环境中,版本没有改变。它在虚拟环境中显示
OpenSSL 0.9.8zh 2016年1月14日environment@AnkitaGupta这意味着您的virtualenv仍在使用OS X的默认Python(
/usr/bin/Python
),而不是brew安装的Python(
/usr/local/bin/python3
)。