Hea*_*row 0 stripe-payments firebase typescript
为什么我会发现这个错误?
我在这里看到过类似的问题,但它们似乎没有解决我的问题。
错误:未找到与负载的预期签名匹配的签名。您是否正在传递从 Stripe 收到的原始请求正文?https://github.com/stripe/stripe-node#webhook-signing
这是我的 index.ts 删除了键。
import * as functions from 'firebase-functions';
import * as Stripe from 'stripe';
const stripe = new Stripe('sk_test_*****************************');
const endpointSecret = 'whsec_******************************';
import * as express from 'express';
import * as cors from 'cors';
const bodyParser = require('body-parser')
const app = express();
app.use(cors({origin: true}));
app.post('/webhook', bodyParser.raw({type: 'application/json'}), async(req, res) => {
const sig = req.headers['stripe-signature'] as string;
let event;
try {
event = stripe.webhooks.constructEvent(req.body, sig, endpointSecret);
} catch (err) {
console.log("ERROR!!!1");
console.log(err);
return res.status(400).send(`Webhook Error: ${err.message}`);
}
console.log('Success:', event.id);
// Handle the checkout.session.completed event
if (event.type === 'checkout.session.completed') {
const session = event.data.object;
console.log("MADE IT!!!");
console.log(session);
return;
// Fulfill the purchase...
//handleCheckoutSession(session);
}
return;
});
export const payments = functions.https.onRequest(app);
Run Code Online (Sandbox Code Playgroud)
小智 17
就我而言,发生这种情况是因为我使用了错误的“签名秘密”。我使用的是出现在右上角的 webhook id。但我们必须使用“签名秘密”
因此,要获取它,请按照以下步骤操作:
它解决了我的问题。请尝试一下。随着条纹的用户界面发生变化,我们大多数人都迷失了方向。
2021 - 解决方案
我遇到了这个错误,经过大量研究后,我无法轻松找出问题所在,但最终我可以根据我的架构来解决这个问题:
//App.js
this.server.use((req, res, next) => {
if (req.originalUrl.startsWith('/webhook')) {
next();
} else {
express.json()(req, res, next);
}
});
Run Code Online (Sandbox Code Playgroud)
//routes.js
routes.post(
'/webhook-payment-intent-update',
bodyParser.raw({ type: 'application/json' }),
//your stripe logic (Im using a controller, but wherever)
(req, res) => {
stripe.webhooks.constructEvent(...)
}
)
Run Code Online (Sandbox Code Playgroud)
需要注意的两大警告:
req.headers['stripe-signature']endpointSecret是对的,如果不是它仍然会说同样的错误提示:
通过安装 Stripe CLI 在本地进行测试:https : //stripe.com/docs/webhooks/test
在条带仪表板上验证您的密钥,或者您也可以通过验证您的条带日志来确定您是否拥有正确的密钥,如下所示:
| 归档时间: |
|
| 查看次数: |
3160 次 |
| 最近记录: |