【发布时间】:2020-01-23 13:35:39
【问题描述】:
我遇到的问题是我从条纹返回一组用户信用卡。因为 Stripe 将默认卡片或“来源”与卡片对象分开,所以我需要将响应附加回我的应用程序。我的应用程序有一个带有 isDefault BOOL 变量的结构。应用部分无法真正更改。
在我在下面发布的 JSON 代码中,我用 aarows 制作了一些关于我想要新键:值去哪里的 cmets。简而言之,如果他们自己的 {} 中的任何卡与用户拥有的默认卡匹配,那么我只想将键值:“isDefault”:true 插入与默认卡匹配的 {}。
我玩这个已经有一段时间了,我被卡住了。我使用 for 循环在数组中搜索匹配的卡片 ID,但不知道如何附加到卡片的特定 {} 中,它只是进入整个数组。
使用 cmets 的 JSON 响应:
{
"cardsData": [
{
"id": "card_328746328746",
"object": "card",
"address_city": null,
"address_country": null,
"address_line1": null,
"address_line1_check": null,
"address_line2": null,
"address_state": null,
"address_zip": null,
"address_zip_check": null,
"brand": "Discover",
"country": "US",
"customer": "cus_djklfhdskljfhs",
"cvc_check": "pass",
"dynamic_last4": null,
"exp_month": 9,
"exp_year": 2023,
"fingerprint": "dfhsdkljfsdlkf",
"funding": "credit",
"last4": "1117",
"metadata": {},
"name": null,
"tokenization_method": null
},
{
"id": "card_kjdslhfjdhf", <-- HAPPENS TO BE DEFAULT CARD, NEED TO INSERT HERE
"object": "card",
"address_city": null,
"address_country": null,
"address_line1": null,
"address_line1_check": null,
"address_line2": null,
"address_state": null,
"address_zip": null,
"address_zip_check": null,
"brand": "Visa",
"country": "US",
"customer": "cus_dkljfhdkjfhd",
"cvc_check": "pass",
"dynamic_last4": null,
"exp_month": 4,
"exp_year": 2054,
"fingerprint": "dfjsklkjfhsd",
"funding": "credit",
"last4": "4242",
"metadata": {},
"name": null,
"tokenization_method": null
"isDefault": true <-- THIS CURRENTLY DOES NOT EXIST, THIS IS WHERE I NEED HELP TO GET THIS INSERTED
}
]
}
Node JS/Cloud 功能代码:
exports.getCardsTest = functions.https.onRequest((req, res) => {
if (req.method !== 'POST') {
return;
}
const customerId = req.body.stripeId;
stripe.customers.retrieve(
customerId,
{
},
function (err, customer) {
const cardsData = customer.sources.data;
const defaultCard = customer.default_source;
var isDefault = false; //check of vairable value
console.log('isDefault before:', isDefault);
for (var i = 0; i < cardsData.lenth; i++); {
if (cardsData[i].id == defaultCard);
isDefault = true;
cardsData.push({ isDefault }); <--THIS IS WHERE I NEED HELP, I NEED isDefault: true APPENDED TO THE ARRAY STRING {} MATCHING THE KEY VALUE OF THE DEFAULT CARD
};
console.log('isDefaultAfter:', isDefault); // check to make sure IF statement is working
return res.status(200).send({ cardsData });
}
);
});
【问题讨论】:
标签: node.js google-cloud-functions stripe-payments