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.
Check out http://www.ultrahook.com which allows you to receive webhooks on localhost
How to use ngrok and set up Stripe Webhooks url
- 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
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
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
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.
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.
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