In the stripe docs I see some ruby code that conditionally returns a status 400, status 200 etc.
# Using Sinatra.
require 'sinatra'
require 'stripe'
set :port, 4242
# Set your secret key. Remember to switch to your live secret key in production!
# See your keys here: https://dashboard.stripe.com/account/apikeys
Stripe.api_key = 'sk_test_51HYHSFGtUKse83O9J4QeAib3cp8sHzGaOQRrnwvnghEzuYQKUCKEP3CHE3AIHe5ModevMK7TVAUCyJU0ADSwIUoX00qxZmBI9r'
# Uncomment and replace with a real secret. You can find your endpoint's
# secret in your webhook settings.
# webhook_secret = 'whsec_...'
post '/webhook' do
payload = request.body.read
sig_header = request.env['HTTP_STRIPE_SIGNATURE']
event = nil
# Verify webhook signature and extract the event.
# See https://stripe.com/docs/webhooks/signatures for more information.
begin
event = Stripe::Webhook.construct_event(
payload, sig_header, webhook_secret
)
rescue JSON::ParserError => e
# Invalid payload.
status 400
return
rescue Stripe::SignatureVerificationError => e
# Invalid Signature.
status 400
return
end
if event['type'] == 'payment_intent.succeeded'
payment_intent = event['data']['object']
handle_successful_payment_intent(payment_intent)
end
status 200
end
def handle_successful_payment_intent(payment_intent)
# Fulfill the purchase.
puts payment_intent.to_s
end
Is the literal status 200 supposed to be valid ruby code, or pseudocode that the programmer needs to change to whatever they want to have happen when a status 400 occurs? (i.e. should the literal status 400, status 200 etc be deleted?)
The reason for asking is because when the code gets to the point where it runs status 200, it returns:
(byebug) status 200
*** ArgumentError Exception: wrong number of arguments (given 1, expected 0)