実現したいこと
Stripeを使った決済機能を作成しているのですが、カード情報を打ち込むと保存されるのは出来たのですが、顧客欄の顧客をクリックすると名将未定の顧客と表示されるので、Stripe Checkoutで名前を打ち込むフォーム欄を表示させる方法を教えて頂きたいです。
また削除機能を付けたのですが、エラーでundefined method `delete'になるのですがカード登録している際に表示するようにしている解約ボタンが消えるので、登録しているカードがちゃんと削除されているようにも見えたのですがStripe側の顧客一覧には残っているので、これはそう言う仕様なのか、それとも削除できていないのかを知りたいです。
前提
Stripeを使ったサブスク機能は下記のサイトを参考にしました。
RailsアプリにStripeを用いたサブスクリプション決済を導入する(詳しく解説)
発生している問題・エラーメッセージ
undefined method `delete'
該当のソースコード
teams_controllers
1class TeamsController < ApplicationController 2 3 4 def new 5 @user = current_user 6 @team = Team.find_by(user_id: @user.id) 7 end 8 9 def create 10 @team = Team.new(user_id: current_user.id) 11 customer = Stripe::Customer.create({ 12 source: params[:stripeToken] 13 }) 14 subscription = Stripe::Subscription.create({ 15 customer: customer.id, 16 plan: "price_" 17 }) 18 @team.plan_id = "price" 19 @team.customer_id = customer.id 20 @team.stripe_subscription_id = subscription.id 21 @team.active_until = Time.zone.at(subscription.current_period_end) 22 if @team.save 23 flash[:success] = "成功しました" 24 redirect_to root_url 25 else 26 render 'new' 27 end 28 end 29 30 def destroy 31 @team = Team.find_by(user_id: current_user.id) 32 @deleting_stripe_subscription = Stripe::Subscription.retrieve(@team.stripe_subscription_id) 33 if current_user.unsubscribe 34 @deleting_stripe_subscription.delete 35 flash[:notice] = "解約に成功しました" 36 redirect_to root_url 37 else 38 render 'new' 39 end 40 end 41end
views/teams/new.html.erb
1<%= form_tag teams_path do %> 2 <article> 3 <% if flash[:error].present? %> 4 <div id="error_explanation"> 5 <p><%= flash[:error] %></p> 6 </div> 7 <% end %> 8 9 <label class="amount"> 10 <span>料金: 500円</span> 11 </label> 12 </article> 13 14 <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" 15 data-key = "pk_test" 16 data-description="月額支払い" 17 data-name="月額料金支払い" 18 data-amount="500" 19 data-locale="ja" 20 data-currency="JPY" 21 data-label="支払い"> 22 </script> 23<% end %> 24<% if @team %> 25 <%= link_to "解約する",@team, method: :delete, data: { confirm: "解約しますがいいですか?"}%> 26 <p>登録日が月末付近の場合ご注意ください</p> 27<% end %>
試したこと
名前を登録するところはscriptタグ内の記述で設定できるのかなと思うのですが、調べてもうまく見つからないので、別で作成する必要があるのでしょうか?
補足情報(FW/ツールのバージョンなど)
ruby 3.2.2
rails 6
あなたの回答
tips
プレビュー