Webhook a strisce su rotaie
-
09-12-2019 - |
Domanda
So che c'è un'altra domanda che esiste simile a questo, ma non penso che sia stato chiesto / rispose molto bene.
Fondamentalmente ho un'app per guide di lavoro in cui gli utenti possono registrarsi per il mio abbonamento, inserire le informazioni sulla carta di credito, ecc. Questo è tutto il lavoro.Ma ho bisogno di gestire la situazione in cui la carta di un utente è diminuita ad un certo punto durante questo abbonamento ricorrente.
I tipi di eventi che inviano sono qui: https://tripe.com/docs/ API? Lang= ruby # event_types .
Ho problemi a accedere all'otto di carica.Failed Object nella mia app.
I documenti su Webhooks sono anche qui: https://tripe.com/docs/webhooks ,E qualsiasi aiuto sarebbe molto apprezzato.
Soluzione
È necessario creare un controller per accettare fondamentalmente e gestire le richieste.È piuttosto semplice, anche se non così dritto per avvolgere la tua mente inizialmente.Ecco un esempio del mio hooks_controller.rb:
class HooksController < ApplicationController
require 'json'
Stripe.api_key = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
def receiver
data_json = JSON.parse request.body.read
p data_json['data']['object']['customer']
if data_json[:type] == "invoice.payment_succeeded"
make_active(data_event)
end
if data_json[:type] == "invoice.payment_failed"
make_inactive(data_event)
end
end
def make_active(data_event)
@profile = Profile.find(User.find_by_stripe_customer_token(data['data']['object']['customer']).profile)
if @profile.payment_received == false
@profile.payment_received = true
@profile.save!
end
end
def make_inactive(data_event)
@profile = Profile.find(User.find_by_stripe_customer_token(data['data']['object']['customer']).profile)
if @profile.payment_received == true
@profile.payment_received = false
@profile.save!
end
end
end
.
Il ricevitore DEF è la vista che devi puntare i webHooks a sull'interfaccia Stripe.La vista riceve il JSON e lo sto usando per aggiornare il profilo dell'utente nel caso in cui un pagamento fallisce o ha successo.
Altri suggerimenti
È molto più facile usare il gemma stripe_event
:
Questa è una situazione di test meno della ...
Striscia ha bisogno di un modo per "forzare" i webhooks a scopo di test.Attualmente, il più breve abbonamento che è possibile effettuare è per 1 settimana (in modalità test);Sarebbe molto più utile se è possibile impostarlo per 1 minuto, 1 ora, o addirittura semplicemente perché il callback si verifichi in tempo reale, in modo da poter testare il sistema di risposta API.
I test locali sono fantastici, ma nulla sostituisce il mondo reale, dal vivo, su Internet, iHooks / callbacks.Dover aspettare una settimana (!) Singola seriamente progetti.