Payola Gem с Stripe - Обновление таблицы payola_subscription

Я только начал смотреть на драгоценный камень Payola и возникли проблемы. Драгоценный камень создает таблицу под названием payola_subscription, который должен регистрировать создание, отмену подписки и т. д. До сих пор, когда я создаю новую подписку, она записывается в эту таблицу, но когда я отменяю подписку, эта таблица не обновляется. Мой вопрос: должен ли гем payola обновлять записи в этой таблице, если такие действия, как cancel subscription выполняются, или я должен реализовать это вручную в моем cancel метод? Странная вещь (для меня) в том, что Payola::UpdateCard.call используется в card_update метод обновляет базу данных новым номером кредитной карты, но Payola::CancelSubscription.call не обновляет таблицу. Ниже приведен код контроллера для отмены подписки. Что я пропускаю или делаю неправильно?

# subscriptions_controller.rb
class SubscriptionsController < ApplicationController
  include Payola::StatusBehavior

  def create
    owner = current_user # this is just an example for Devise
    # set your plan in the params hash
    params[:plan] = SubscriptionPlan.find_by(id: params[:plan_id])
    # call Payola::CreateSubscription
    subscription = Payola::CreateSubscription.call(params, owner)
    current_user.subscription_plan_id=params[:plan_id]
    current_user.save
    flash.notice = "Subscription successfully created"
    UserMailer.subscribe_email(current_user).deliver_now
    render_payola_status(subscription)
  end

  def cancel
    if params[:guid].present?
       @subscription = Payola::Subscription.find_by(:guid => params[:guid])
       Payola::CancelSubscription.call(@subscription) if !@subscription.nil?
       current_user.subscription_plan_id=nil
       current_user.save
       UserMailer.unsubscribe_email(current_user).deliver_now
       flash.notice = "Subscription successfully cancelled"
       redirect_to dashboard_path
    end
  end

  def card_update
      @subscription = Payola::Subscription.find_by!(guid: params[:guid])
      Payola::UpdateCard.call(@subscription, params[:stripeToken])
      flash.notice = "Your credit card successfully updated!"
      render_payola_status(@subscription)
  end

end

1 ответ

Решение

Настройте веб-крючок Stripe, чтобы получать отмены и другие изменения, синхронизированные с Stripe, в ваше приложение. Подробная информация о настройке webhook на https://github.com/peterkeen/payola.

(Оригинальный источник для этого ответа https://github.com/peterkeen/payola/issues/237)

Другие вопросы по тегам