问题
I am creating a payment gateway using Stripe.
I want to set my localhost url localhost/stripe/webhook.php
as my webhook url. Is it possible to set a localhost address as a webhook url? This will be used to create a mail service that is triggered on every successful charge in Stripe.
回答1:
Check out http://www.ultrahook.com which allows you to receive webhooks on localhost
回答2:
How to use ngrok and set up Stripe Webhooks url
Source Link
- First Download ngrok and extract it on your computer
- Double click ngrok.exe
Try typing ngrok.exe http 80 at this terminal prompt to expose port 80
For example if we you have Stripe webhooks url on localhost like so http://localhost/stripeproject/webhook.php
Just specify your ngrok url as the endpoint with your webhooks service and you’re almost done.
You can set up this url http://f253021b.ngrok.io/stripeproject/webhook.php to send test webhooks to your integration’s endpoint within your account’s webhooks settings.
It's working fine for me.
More details click here
回答3:
There's now another option: you can now use the Stripe CLI to seamlessly test webhooks locally without the need for a 3rd party tool.
In this case you would just do something like this to plumb your Stripe events through to your local webhook handler code:
stripe listen --forward-to localhost/stripe/webhook.php
回答4:
No this won't work. Stripe servers have to be able to contact your server to send the webhook. Stripe won't know how to contact your "localhost" . You need a web accessible address or IP address for this to work
回答5:
Like Matt said, you will need to put that somewhere online - preferably using https://. For your reference, I put up an example mail webhook 2 months ago here: https://github.com/pnommensen/Stripe-Webhook-Emails.
回答6:
It is possible to send the webhooks to your local host. Look up "ngrok", when you run that it opens up a port to public internet access and provides you with a url that can access your localhost from. take this url and set it as your webhook address and finish the url by pointing it at your webhook.php file.
* EDIT *
This is only appropriate for testing.
回答7:
Even simpler, add this endpoint to your app when running locally (not in prod!):
const eventsSeen = new Set();
app.post("/test/simulate-stripe-webhook", async (req, res) => {
const events = await stripe.events.list({ limit: req.query.limit || 10 });
for (const event of events) {
if (eventsSeen.has(event.id)) continue;
await processStripeEvent(event);
eventsSeen.add(event.id);
}
return res.status(200).end();
});
...where processStripeEvent
is whatever logic your webhook triggers.
Then there's no need to manage webhooks in stripe.
来源:https://stackoverflow.com/questions/15357356/is-it-possible-to-set-localhost-as-a-stripe-webhook-url