在parse.cloud.httprequest中获取正确的格式时遇到问题,无法在周期结束时删除订阅。
我可以使用x-www-form-urlencoded,key'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);
    }
  });

我试着添加了一个内容类型为set的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);
    }
  });

如果有人能告诉我更好的写作方法,那将是史诗般的:)
干杯

最佳答案

这个对我来说总是特别棘手,以下是我一直在使用的有效方法:

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) {
    ...
  }
});

这里有一些额外的细节。
我最初将“content type:application/json”作为标题之一,但这似乎不正确,尽管(我认为)过去需要它。
密钥的base64编码可以用
echo-e'sk_live_abcdef123456:'openssl base64
别忘了键末尾的冒号(:),这很重要。
不过,这只是一个细节,看起来将密钥直接放在url中也很有效。

关于http - 在at_period_end param解析云httpRequest strip 订阅,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29910651/

10-11 07:33