gpt4 book ai didi

javascript - 由于 firebase 云函数中的一些错误,付款未被收取

转载 作者:行者123 更新时间:2023-11-30 19:31:15 25 4
gpt4 key购买 nike

我正在制作一个使用 firetore 作为数据库的 react-redux 应用程序。现在,我想使用 firebase 云函数来处理 strip 支付。

这是设置:

以下是结帐的操作方法,在从 react 端收到 token 和金额后。

export const checkoutFunc = (token, amount) => {
return (dispatch, getState, { getFirebase, getFirestore }) => {
const uid = getState().firebase.auth.uid;
const ref = database.ref();
ref.child(`payments/${uid}`).push({
token: token,
amount: amount
});
};
};

此函数创建付款并保存 token 和金额。

现在,在创建上述付款后,这里是应该“收取”付款的云函数。

exports.stripeCharge = functions.database
.ref("/payments/{userId}/{paymentId}")
.onWrite((change, context) => {
const payment = change.after.val();

const userId = context.params.userId;
const paymentId = context.params.paymentId;

if (!payment || payment.charge) return;

return admin
.database()
.ref(`/teachers/${userId}`)
.once("value")
.then(snap => {
return snap.val();
})
.then(customer => {
const amount = payment.amount;
const idempotency_key = paymentId;
const source = payment.token.id;
const currency = "usd";
const charge = { amount, currency, source };

return stripe.charges.create(charge, { idempotency_key });
})

.then(charge => {
admin
.database()
.ref(`/payments/${userId}/${paymentId}/charge`)
.set(charge)
.then(charge => {
return true;
});
});
});

支付工作的创建和 token 和金额保存在支付表中。但是,云功能并没有完成收取 token 的工作。

预期结果:

https://i.ibb.co/Fq9Zfhq/image.png

实际结果:

https://i.ibb.co/Krk7cGL/image.png

最佳答案

虽然@Doug Stevenson 提供的答案有帮助,但这不是主要问题。因此,我在这里为其他苦苦挣扎的人编写解决方案。我在我的应用程序中使用了错误的公钥和私钥对,当我正确使用时,它起作用了。

关于javascript - 由于 firebase 云函数中的一些错误,付款未被收取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56415738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com