Parse Cloud httpRequest Stripe Subscriptions at_period_end p



在删除订阅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 中也是有效的。

最新更新