【发布时间】:2015-07-09 09:43:22
【问题描述】:
在使用 Parse.Cloud.httpRequest 在_period_end 删除订阅时无法正确获取格式。
我能够使用 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);
}
});
我尝试过添加一个设置了 Content-Type 的 headers 对象,但没有成功。
我认为这只是一个格式转换问题,从我正确输入 PostMan 的内容到我的 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);
}
});
如果有人能告诉我一个更好的方法来写这个,那就太棒了:)
干杯
【问题讨论】:
-
查看您的 Stripe 日志(在仪表板上)并查看实际发送的内容。 sub会被删除吗?我想知道 parse 是否不理解
method: 'DELETE' -
是的,订阅确实被删除了,只是没有使用参数 at_period_end。
-
我设法用内联样式解决了这个问题,例如 ?at_period_end=true.. 仍然......不得不这样做很烦人。
标签: http parse-platform stripe-payments parse-cloud-code http-request