Полностью ударяя головой о стену, пытаясь выяснить, как отменить подписку на пользователя. Я прошел через StackOverflow и, похоже, не нашел ничего, что могло бы помочь. Поскольку я довольно новичок в RoR, API-интерфейс Stripe только смущает меня немного больше. Я понимаю, что мне нужно как-то захватить и сохранить идентификатор пользователя, прежде чем я смогу отменить. Я не смог понять это ... поэтому почему я не могу отменить подписки. HELP PLEASEStripe Отмена подписки пользователя
Subscribe_controller.rb
class SubscribeController < ApplicationController
before_filter :authenticate_user!
def new
unless (params[:plan_id] == '1' || params[:plan_id] == '2' || params[:plan_id] == '3')
flash[:notice] = "Please select a plan to sign up."
redirect_to new_subscribe_path
end
end
def update
# Amount in cents
token = params[:stripeToken]
customer = Stripe::Customer.create(
:email => current_user.email,
:card => token,
plan: params[:id]
)
current_user.subscribed = true
current_user.stripe_id = customer.id
current_user.save
redirect_to demo_path, notice: "Your Plan was created. Enjoy the demo!"
end
def cancel_plan
@user = current_user
if @user.cancel_user_plan(params[:customer_id])
@user.update_attributes(customer_id: nil, plan_id: 1)
flash[:notice] = "Canceled subscription."
redirect_to pricing_path
else
flash[:error] = "There was an error canceling your subscription. Please notify us."
redirect_to edit_user_registration_path
end
end
def update_plan
@user = current_user
if (params[:user][:stripe_id] != nil) && (params[:plan] == "2")
@user.update_attributes(plan_id: params[:plan], email: params[:email], stripe_id: params[:user][:stripe_id])
@user.save_with_payment
redirect_to edit_user_registration_path, notice: "Updated to premium!"
else
flash[:error] = "Unable to update plan."
redirect_to :back
end
end
end
User_controller.rb
class UsersController < ApplicationController
before_action :authenticate_user!
def update
if current_user.update_attributes(user_params)
flash[:notice] = "User information updated"
redirect_to edit_user_registration_path
else
flash[:error] = "Invalid user information"
redirect_to edit_user_registration_path
end
end
private
def user_params
params.require(:user).permit(:name)
end
end
Edit User Info Page
<div class="col-md-9 text-center">
<h2>Manage Plan</h2>
</div>
<div class="text-center">
<%= button_to "Cancel my account", cancel_plan_path, :data => { :confirm => "Are you sure?" }, :method => :delete, class: "btn btn-danger" %>
<button class="btn-lg btn btn-primary" disabled="disabled">Update Plan</button>
</div>
routes.rb
get 'cancel_plan' => 'subscribe#cancel_plan'
resources :subscribe
devise_for :users
Спасибо за вход ... да, и вот тут у меня проблемы. Что происходит вместо CUSTOMER_ID и SUBSCRIPTION_ID? Также я предполагаю, что это помещено в его собственный метод совершенно правильно? Я полностью понимаю эту концепцию, но понятия не имею, что разместить в этих двух областях или в .retrieve ("cus _...") или .retrieve ("sub _...") – Fdwillis
, если вы войдете в свою полосу в соответствии с вами увидит 'CUSTOMER_ID' он loos, как *** cus_5LXt66ikj5nYz5 *** Когда я создаю клиента, мне нравится его сохранять в моем DB – MZaragoza
Да. Я думал, что делаю это с вызовами '' 'current_user.subscribed = true current_user.stripe_id = customer.id current_user.save' '', которые у меня есть по методу обновления. Неправильная ли эта часть? Потому что я не могу сохранить их в своем DB – Fdwillis