我正在尝试在我的网站上实施Stripe卡支付,我对他们的API还是很陌生,看了他们的示例,我希望为卡号,有效期和cvc设置单独的字段,所以我没有使用卡对象。以下是我的代码:
Javascript:以下是checkout.html页面上的最终按钮单击事件,在提交到charge.html页面之前,将生成令牌并设置隐藏输入字段中的各种值。
$("#cardPayBtn").click(function() {
var options = {
};
stripe.createToken(cardNumber, options).then(function(result) {
if (result.error) {
var errorElement = document.getElementById('cardErrors');
errorElement.textContent = result.error.message;
//alert(errorElement);
}
else {
$("#chargeAmount").val(parseInt($("#totalFee").val())*100);
$("#chargeCurrency").val("gbp");
$("#tokenSource").val(JSON.stringify(result.token));
$("#cardPaymentForm").submit();
}
});
});
在chargeView.py文件中,post方法用于处理checkout.html页面上的form-post操作,并按以下方式创建费用;
def post(self, request):
token = request.POST["tokenSource"]
chargeAmount = request.POST['chargeAmount']
chargeCurrency = request.POST['chargeCurrency']
charge = stripe.Charge.create(
amount=chargeAmount,
currency=chargeCurrency,
description='Example charge',
source=json.loads(token),
)
return render(request, self.template)
我检查过,其中有金额,货币和来源的值;但是,充电不会发生以下错误;
APIConnectionError at /photos/charge/
Unexpected error communicating with Stripe. If this problem persists,
let us know at support@stripe.com.
(Network error: SSLError: ("bad handshake: SysCallError(-1, 'Unexpected EOF')",))
经过几个小时的搜索,我有点头绪,不胜感激,谢谢!
吉姆
答案 0 :(得分:0)
我自己找到了答案,这是由于公司过时的OpenSSL认证所致,如果您的openSSL版本低于1.0.xx,则需要对其进行更新,我使用的是MAC OS,因此可以通过以下方式进行更新Brew,然后安装新版本的Python,并将SSL链接到新的Python,require.txt下的所有依赖项都需要重新安装。