Pregunta

Sé que hay otra pregunta que existe similar a esta, pero no creo que se le pregunte / respondió muy bien.

Básicamente, tengo una aplicación de rieles de trabajo donde los usuarios pueden inscribirse en mi suscripción, ingrese la información de la tarjeta de crédito, etc. Eso está funcionando.Pero necesito manejar la situación en la que se rechaza la tarjeta de un usuario en algún momento durante esta suscripción recurrente.

Los tipos de eventos que envían están aquí: https://stripe.com/docs/ api? lang= ruby # event_types .

Tengo problemas para acceder a la carga. Objeto favorecido en mi aplicación.

Los documentos en los webhooks también están aquí: https://stripe.com/docs/webhooks ,y cualquier ayuda sería muy apreciada.

¿Fue útil?

Solución

Debe crear un controlador para aceptar básicamente y manejar las solicitudes.Es bastante sencillo, aunque no tan directo para envolver tu mente alrededor inicialmente.Aquí hay un ejemplo de mis 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

El receptor DEF es la opinión de que tiene que señalar los WebHOOKS en la interfaz de la raya.La vista recibe al JSON, y lo estoy usando para actualizar el perfil del usuario en caso de que un pago falle o tenga éxito.

Otros consejos

Ahora es mucho más fácil usar la gema stripe_event:

https://github.com/integlallis/stripe_event

Esta es una situación de prueba menos que ideal ...

La raya necesita una forma de "forzar" a los efectos web para fines de prueba.Actualmente, la suscripción más corta que puede hacer es de 1 semana (en modo de prueba);Sería mucho más útil si pudiera configurarlo durante 1 minuto, 1 hora, o incluso simplemente hacer que la devolución de llamada se realice en tiempo real, por lo que puede probar su sistema de respuesta API.

Las pruebas locales son excelentes, pero nada reemplaza al mundo real, en vivo, a través de Internet, WebHOOKS / Callbacks.Tener que esperar una semana (!) En serio ralentiza los proyectos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top