【发布时间】:2016-04-30 19:20:49
【问题描述】:
首先,如果这被认为是模糊的,请原谅我,这是我第一次在 Stack Exchange 上发帖。
希望这不是一个格式不正确的问题,我确实考虑过它,尽管它假定您熟悉 CURL、Stripe 和 Angular。
关于问题:
我正在尝试使用 Angular.js 的 $http 将 CURL 的结果重新创建到 Stripe API,但这样做时遇到了一些麻烦。
使用 CURL,我可以创建一个卡片令牌,如下所示:
curl -X POST https://api.stripe.com/v1/tokens \
-u MY_TEST_KEY: \
-d "card[number]"=4242424242424242 \
-d "card[exp_month]"=12 \
-d "card[exp_year]"=2017 \
-d "card[cvc]"=123
这给了我类似“tok_blahblahbcryptnonsense”的东西
但是,我似乎无法将此 CURL 转换为 Angular $http 函数,并且返回状态码 400,并显示消息“您必须传递完整的卡详细信息才能创建令牌。”
$http({
method: 'POST',
url: 'https://api.stripe.com/v1/tokens',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer MY_TEST_KEY'
},
params: {
card: {
"number": '4242424242424242', // I have tried this as
// an integer and string
// Stripe docs say string
"exp_month": 12,
"exp_year": 2017,
"cvc": '123' // I have tried this as
// an integer and string
// Stripe docs don't specify but I think string
}
}
}).then(function(success){
console.log('success ', success)
}, function(error){
console.log('error ', error) // gets here, this is where the message is
})
就我的理解而言,这是完全可能的。我只需要为所述卡创建一个令牌。时间不早了,这可能是一个完全显而易见的解决方案,我太累了。
【问题讨论】:
-
打开浏览器的开发工具,点击网络标签。然后发送您的请求。然后在网络选项卡中查看请求的正文。它看起来像什么?
-
哇,我已经很尴尬了,应该更具体一些。我在 ionic 中运行此代码,在模拟的 iPhone 5s - iOS 9.2 上启用了实时重新加载和控制台。代码本身只是有角度的,所以我想以这种方式提出问题。我想我会把它放到一个不同的角度项目中并快速检查一下。
-
@SamuelPolicar:请注意,出于 PCI 合规性的原因,您应该不自己发出原始 HTTP 请求。您应该改用 Stripe Checkout 或 Stripe.js。