私は、今現在stripeのcheckoutを使って、決済機能を実装しようと考えています。showページで、決済機能を配置しているので、showコントローラでリダイレクトやcustomerのcreateを実装しようと考えているのですが、"You cannot use a Stripe token more than once"というエラーが発生して動かない状態にあります。

試したこと:
他のコントローラ(purchase)に配置して、リダイレクトやcustomerのcreateを実装しようと考えたのですが、コントローラのアクションが行われず、そのまま元のページに戻ってしまう状態になってしまいました。

config/routes.rb

resources :plans
post "plans/:id/purchase", to: "plans#purchase"
get  "plans/:id/purchase" => "plans#purchase"

controllers/plans_controller.rb

def purchase 
    @plan = Plan.find(params[:id])
end

def show
    @plan = Plan.find(params[:id])

    customer = Stripe::Customer.create({
     email: params[:stripeEmail],
     source: params[:stripeToken],
  })

    charge = Stripe::Charge.create({
     customer: customer.id,
     amount: @plan.price,
     description: "商品ID:#{@plan.id} 商品名:#{@plan.title}",
     currency: "jpy",

  })
  if customer.save
    #ページのリダイレクト
    redirect_to "/plans/#{@plan.id}/purchase", notice: "商品を購入しました!"
    #購入者にメールを送る
    GuiderMailer.guider_payment_mail(self).deliver_now
    #投稿者にメールを送る
    GuiderMailer.guider_shipment_mail(self).deliver_now
    #投稿を削除する
    @plan.destroy
  else
    redirect_to "/plans/#{@plan.id}/fail", notice: "エラーが起きました"
  end

  rescue Stripe::CardError => e
    flash[:error] = e.message

end

views/plans/show.html.erb

<%= form_tag("/plans/#{@plan.id}/purchase") do %>
    <script src="https://checkout.stripe.com/checkout.js" style="background: #EBEBEB;" class="stripe-button"
        data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
        data-amount="<%= @plan.price %>"
        data-currency="jpy"
        data-description="クレジット決済"
        data-name=<%= "#{@plan.title}を購入" %>
        data-email=<%= "#{current_guider.email}" %>
        data-label="購入する"
        data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
        data-locale="auto"
        data-allow-remember-me="false">
    </script>
<% end %>