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.

È stato utile?

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:

https://github.com/integrallis/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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top