#javascript #arrays #stripe-payments #velo
#javascript #массивы #stripe-платежи #velo
Вопрос:
Я пытаюсь отправить запрос на подписку на несколько планов в 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
function encodeBody(customerId, items){
let encoded = "";
for (let [k, v] of Object.entries(items)) {
encoded = encoded.concat(k,"=", encodeURI(v), "amp;");
}
encoded = encoded.concat("customer", encodeURI(customerId));
return encoded;
}
Я новичок в использовании функции кодирования, поэтому я не понимаю, что делать.
Ответ №1:
Вы хотите, чтобы ваша строка запроса items
была в этом формате:
items[0][plan]=plan_CBXbz9i7AIOTzramp;items[1][plan]=plan_IFuCu48Snc02bcamp;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]}amp;`;
}
}
encoded = `customer=${customerId}`;
return encoded;
}
Комментарии:
1. БОЛЬШОЕ ВАМ СПАСИБО!!