So, I'm trying to make a simple Stripe Webhook. Ideally, this should not be difficult.
I use this webhook
So here is my code:
<?php require_once('lib/Stripe.php'); // Replace "xyz" with your Stripe Secret Live Key // Stripe::setApiKey("xxx"); $body = @file_get_contents('php://input'); $event_json = json_decode($body); // SETUP: // 1. Customize all the settings (stripe api key, email settings, email text) // 2. Put this code somewhere where it accessible by a URL on your server. // 3. Add the URL of that location to the settings at https://manage.stripe.com/#account/webhooks // 4. Have fun! // set your secret key: remember to change this to your live secret key in production // see your keys here https://manage.stripe.com/account // retrieve the request body and parse it as JSON $body = @file_get_contents('php://input'); $event_json = json_decode($body); // for extra security, retrieve from the Stripe API $event_id = $event_json->id; $event = Stripe_Event::retrieve($event_id); // This will send receipts on succesful invoices if ($event->type === 'invoice.payment_succeeded') { email_invoice_receipt($event->data->object); } function email_invoice_receipt($invoice) { $customer = Stripe_Customer::retrieve($invoice->customer); //Make sure to customize your from address $subject = 'Your payment has been received'; $headers = 'From: "MyApp Support" < support@myapp.com >'; mail($customer->email, $subject, message_body(), $headers); } function format_stripe_amount($amount) { return sprintf('$%0.2f', $amount / 100.0); } function format_stripe_timestamp($timestamp) { return strftime("%m/%d/%Y", $timestamp); } function payment_received_body($invoice, $customer) { $subscription = $invoice->lines->subscriptions[0]; return <<<EOF Dear {$customer->email}: This is a receipt for your subscription. This is only a receipt, no payment is due. Thanks for your continued support! ------------------------------------------------- SUBSCRIPTION RECEIPT Email: {$customer->email} Plan: {$subscription->plan->name} Amount: {format_stripe_amount($invoice->total)} (USD) For service between {format_stripe_timestamp($subscription->period->start)} and {format_stripe_timestamp($subscription->period->end)} ------------------------------------------------- EOF; } ?>
The registration page is here: http://www.strategic-options.com/trade/sign_up Webhook here: http://www.strategic-options.com/trade/3_party/Simple-Bootstrap-Stripe-Payment-Form/stripe_webhook .php
My transactions are on, I see them on the toolbar. I installed webhook on the toolbar correctly with the correct link. Therefore, when I try to test the webhook function, I always get a failure because evt_000000000 does not receive a response. I donβt know any other way to check this website other than using the control panel
<br/> <b>Fatal error</b>: Uncaught exception 'Stripe_InvalidRequestError' with message 'No such event: evt_00000000000000' in /home/strategicoptions/strategic-options.com/trade/3_party/Simple-Bootstrap-Stripe-Payment-Form/lib/Stripe/ApiRequestor.php:152 Stack trace: #0 /home/strategicoptions/strategic-options.com/trade/3_party/Simple-Bootstrap-Stripe-Payment-Form/lib/Stripe/ApiRequestor.php(212): Stripe_ApiRequestor->handleApiError('{\n "error": {\n...', 404, Array) #1 /home/strategicoptions/strategic-options.com/trade/3_party/Simple-Bootstrap-Stripe-Payment-Form/lib/Stripe/ApiRequestor.php(114): Stripe_ApiRequestor->_interpretResponse('{\n "error": {\n...', 404) #2 /home/strategicoptions/strategic-options.com/trade/3_party/Simple-Bootstrap-Stripe-Payment-Form/lib/Stripe/ApiResource.php(24): Stripe_ApiRequestor->request('get', '/v1/events/evt_...', Array) #3 /home/strategicoptions/strategic-options.com/trade/3_party/Simple-Bootstrap-Stripe-Payment-Form/lib/Stripe/ApiResource.php(8): Stripe_ApiResource->refresh() #4 /home/strategicop in <b>/home/strategicoptions/strategic-options.com/trade/3_party/Simple-Bootstrap-Stripe-Payment-Form/lib/Stripe/ApiRequestor.php</b> on line <b>152</b><br/>
source share