用于 Stripe 多计划订阅 api 调用的格式数组
Format array for Stripe multiple plan subscription api call
我正在尝试向 Stripe API 发送多个计划订阅请求。但是我有一个这样的数组
0: {"plan":"plan_EaDE7UnYYcicOj","quantity":"2"}
1: {"plan":"plan_EbOzfXj7R9hcdz","quantity":"2"}
我想把它转换成 Stripe 想要的格式,就像这样
curl https://api.stripe.com/v1/subscriptions \
-u sk_test_XXXXXXXXXXXXXXXXXX: \
-d customer=cus_4fdAW5ftNQow1a \
-d items[0][plan]=plan_CBXbz9i7AIOTzr \
-d items[0][quantity]=2
-d items[1][plan]=plan_IFuCu48Snc02bc \
-d items[1][quantity]=2
我正在使用如下的获取方法
const response = await fetch("https://api.stripe.com/v1/subscriptions", {
method: 'post',
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Authorization": "Bearer " + apiKey
},
body: encodeBody(customerId, items) //problem here
});
我一直在尝试将数组编码为正确的格式,但每次我得到 [Object Object] 并且由于 encode.concat
而将客户 ID 连接在一起
function encodeBody(customerId, items){
let encoded = "";
for (let [k, v] of Object.entries(items)) {
encoded = encoded.concat(k,"=", encodeURI(v), "&");
}
encoded = encoded.concat("customer", encodeURI(customerId));
return encoded;
}
我刚开始使用编码功能,所以我不知道该怎么做。
您希望查询字符串的 items
为以下格式:
items[0][plan]=plan_CBXbz9i7AIOTzr&items[1][plan]=plan_IFuCu48Snc02bc&items[1][quantity]=2
为此,您需要遍历 plans
和每个 plan
的属性。您可以通过 encodeBody()
的实现来实现这一点(使用 ES6,因为我看到您已经在上面使用 const
):
function encodeBody(customerId, items) {
let encoded = '';
for (let i = 0; i < items.length; i++) {
const item = items[i];
for (pair of Object.entries(item)) {
console.log(pair);
encoded += `items[${i}][${pair[0]}]=${pair[1]}&`;
}
}
encoded += `customer=${customerId}`;
return encoded;
}
我正在尝试向 Stripe API 发送多个计划订阅请求。但是我有一个这样的数组
0: {"plan":"plan_EaDE7UnYYcicOj","quantity":"2"}
1: {"plan":"plan_EbOzfXj7R9hcdz","quantity":"2"}
我想把它转换成 Stripe 想要的格式,就像这样
curl https://api.stripe.com/v1/subscriptions \
-u sk_test_XXXXXXXXXXXXXXXXXX: \
-d customer=cus_4fdAW5ftNQow1a \
-d items[0][plan]=plan_CBXbz9i7AIOTzr \
-d items[0][quantity]=2
-d items[1][plan]=plan_IFuCu48Snc02bc \
-d items[1][quantity]=2
我正在使用如下的获取方法
const response = await fetch("https://api.stripe.com/v1/subscriptions", {
method: 'post',
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Authorization": "Bearer " + apiKey
},
body: encodeBody(customerId, items) //problem here
});
我一直在尝试将数组编码为正确的格式,但每次我得到 [Object Object] 并且由于 encode.concat
而将客户 ID 连接在一起 function encodeBody(customerId, items){
let encoded = "";
for (let [k, v] of Object.entries(items)) {
encoded = encoded.concat(k,"=", encodeURI(v), "&");
}
encoded = encoded.concat("customer", encodeURI(customerId));
return encoded;
}
我刚开始使用编码功能,所以我不知道该怎么做。
您希望查询字符串的 items
为以下格式:
items[0][plan]=plan_CBXbz9i7AIOTzr&items[1][plan]=plan_IFuCu48Snc02bc&items[1][quantity]=2
为此,您需要遍历 plans
和每个 plan
的属性。您可以通过 encodeBody()
的实现来实现这一点(使用 ES6,因为我看到您已经在上面使用 const
):
function encodeBody(customerId, items) {
let encoded = '';
for (let i = 0; i < items.length; i++) {
const item = items[i];
for (pair of Object.entries(item)) {
console.log(pair);
encoded += `items[${i}][${pair[0]}]=${pair[1]}&`;
}
}
encoded += `customer=${customerId}`;
return encoded;
}