How Do I Loop Through An Array Item Of Json And Make Async Api Requests With Certain Json Objects
I apologize if my question seems kind of newbie, I'm very new to async programming and I'm still trying to figure everything out. I'm also trying to figure out how to ask good ques
Solution 1:
Your main issue is that .forEach(async
is very rarely, if at all, going to work like you expect
However, the other issue is
const price = await stripe.prices.retrieve(item.price_id)
.then(function(message) {
console.log(message.unit_amount);
//log the unit_amount value from price object
},
function(error) {
console.log("Reject:", error);
}
);
This will result in price
being undefined
- since the .then
doesn't return anything
It's always (usually) not a good idea to mix .then
/.catch
with async
/await
So - fixing those two issues - your code becomes
const stripe = require('stripe')('sk_test_51Hemg7ETi3TpMq6bUmiw1HoxERPmReLOT3YLthf11MEVh4xCmnsmxtFHZRlWpimoSnwHjmUOKNkOFsbr9lEEIybe00SQF71RtF');
//This is a test secret key for a dummy stripe account, don't worry I'm not sharing anything sensitiveconst express = require('express');
const app = express();
app.use(express.static('.'));
constYOUR_DOMAIN = 'http://localhost:4242';
app.post('/create-session', async(req, res) => {
//Body of the POST requestconst cartContents = [{
product_id: 'prod_IHb8dX3ESy2kwk',
quantity: '2',
price_id: 'price_1Hh1wcETi3TpMq6bSjVCf3EI'
}, {
product_id: 'prod_IFIIyTO0fHCfGx',
quantity: '2',
price_id: 'price_1HeniJETi3TpMq6bPDWb3lrp'
}
];
//Array to push parsed data onto for line_items object in stripe sessionconst lineItems = [];
try {
for (let item of cartContents) {
//Retrieve price object from stripe API:const price = await stripe.prices.retrieve(item.price_id);
console.log(price.unit_amount);
//log the unit_amount value from price object//retrieve product object from stripe APIconst product = await stripe.products.retrieve(item.product_id);
console.log(product.name);
// retrieve "name" and "images" from returned product object and assign to variableconst productName = product.name;
const productImage = product.images;
//retrieve "unit_amount" from returned price object and assign to variableconst productPrice = price.unit_amount;
//retrieve item quantity from cartContents object and assign to variableconst productQuantity = item.quantity;
//Add variables to item and push to lineItems array
lineItems.push({
price_data: {
currency: 'usd',
product_data: {
name: productName,
images: [productImage],
},
unit_amount: productPrice,
},
quantity: productQuantity,
});
}
const session = await stripe.checkout.sessions.create({
payment_method_types: ['card'],
line_items: lineItems,
mode: 'payment',
success_url: `http://localhost:5001/success.html`,
cancel_url: `http://localhost:5001/cancel.html`,
});
res.json({id: session.id});
} catch(e) {
// handle error here
}
});
Post a Comment for "How Do I Loop Through An Array Item Of Json And Make Async Api Requests With Certain Json Objects"