在删除订阅at_period_end的 Parse.Cloud.httpRequest 中获取正确的格式时遇到问题。
我能够使用 x-www-form-urlencoded 成功地与 PostMan 提出此请求,键"at_period_end"值为 true。(由于我的声誉,无法发布截图)
这是我的云代码:
Parse.Cloud.httpRequest({
method : 'DELETE',
url : 'https://' + skey + ':@' + 'api.stripe.com/v1' + '/customers/' + request.params.customerId + '/subscriptions/' + request.params.subscriptionId,
body : {
"at_period_end": true
},
success: function(httpResponse) {
if (httpResponse.status === 200) {
response.success(httpResponse);
}
else {
response.error(httpResponse);
}
},
error: function(httpResponse) {
response.error(httpResponse);
}
});
我已经尝试添加了一个设置了内容类型的标题对象,但没有成功。
我认为这只是一个格式转换问题,从我正确输入到邮筒中的内容,到我的 httpRequest 对象中的内容......
我也找不到有关httpRequest方法的文档的任何重要信息,因此:(非常令人沮丧。
谢谢堆
编辑 ****** 解决方案:
设法使用 url 内联参数解决此问题:
var options = request.params.options,
url = 'https://' + skey + ':@api.stripe.com/v1/customers/' + request.params.customerId + '/subscriptions/' + request.params.subscriptionId,
keys;
keys = Object.keys(options);
// This is disgusting, I need to know a better way.
for (var i = 0; i < keys.length; i++)
{
if (i === 0)
{
url += '?';
}
url += keys[i] + '=' + options[keys[i]];
if (i !== keys.length - 1)
{
url += '&';
}
}
Parse.Cloud.httpRequest({
method : 'DELETE',
url : url,
success: function(httpResponse) {
if (httpResponse.status === 200) {
response.success(httpResponse);
}
else {
response.error(httpResponse);
}
},
error: function(httpResponse) {
response.error(httpResponse);
}
});
如果有人能告诉我更好的写法,那将是史诗般的:)
干杯
这个对我来说一直特别棘手,这是我一直在使用的有效方法:
Parse.Cloud.httpRequest({
method: 'DELETE',
url: 'https://api.stripe.com/v1/customers/' + request.params.stripeId + '/subscriptions/' + request.params.stripeSubscriptionId,
headers: {
'Authorization': 'Basic BASE_64_ENCODE_SECRET_KEY'
},
params: {
at_period_end: true
},
success: function(httpResponse) {
...
},
error: function(httpResponse) {
...
}
});
这里有一些额外的细节。
- 我最初将"内容类型:应用程序/json"作为标题之一,但这似乎是不正确的,尽管(我认为)过去需要它。
密钥的 base64 编码可以通过以下方式生成
echo -e 'sk_live_ABCDEF123456:' | openssl base64
不要忘记冒号(:)在密钥的末尾,它很重要。
然而,这只是一个细节,看起来将密钥直接放在 URL 中也是有效的。