質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CoffeeScript

CoffeeScriptはプログラミング言語です。シンタックスシュガーの導入により、JavaScriptのコードに変換された後動作します。JavaScriptに比べ、可読性と簡潔性が向上しています。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

1227閲覧

Pay.jp(v2)でクレジットカード登録がしたい

chipot

総合スコア0

CoffeeScript

CoffeeScriptはプログラミング言語です。シンタックスシュガーの導入により、JavaScriptのコードに変換された後動作します。JavaScriptに比べ、可読性と簡潔性が向上しています。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/07/20 12:03

前提・実現したいこと

Pay.jpで決済機能を実装しています。
その一環としてクレジットカード登録機能を実装したいです。
しかし下記の表示が出ており、先に進めない状態です。

発生している問題・エラーメッセージ

=> "sk_test_***" [2] pry(CardsController)> params['payjp_token'] NameError: undefined local variable or method `params' for CardsController:Class from (pry):2:in `<class:CardsController>' [3] pry(CardsController)> exit Processing by CardsController#pay as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"gp/XP+s***4+jPjPj9/TVDvHPAXlyLUKg==", "payjp_token"=>"${response.id}", "card_token"=>"${response.card.id}"} ``` ### 該当のソースコード ```ruby Rails.application.routes.draw do resources :cards, only: [:new, :show] do collection do post 'show', to: 'cards#show' post 'pay', to: 'cards#pay' post 'delete', to: 'cards#delete' end end end ``` ```ruby class CardsController < ApplicationController before_action :require_login require 'payjp' def new Payjp.api_key = ENV['PAYJP_SECRET_KEY'] @card = Card.where(user_id: current_user.id) end # payjpとCardのデータベース作成 def pay Payjp.api_key = ENV["PAYJP_SECRET_KEY"] if params['payjp_token'].blank? redirect_to action: "new" else customer = Payjp::Customer.create( card: params['payjp_token'], metadata: {user_id: current_user.id} ) @card = Card.new( user_id: current_user.id, customer_id: customer.id, card_id: customer.default_card ) if @card.save redirect_to action: "show" else redirect_to action: "pay" end end end end ``` ```coffeescript $(window).bind 'turbolinks:load', -> if document.URL.match(/cards/) console.log() # if document.getElementById('info-submit') != blank payjp = payjp('pk_test_***') elements = payjp.elements() numberElement = elements.create('cardNumber') expiryElement = elements.create('cardExpiry') cvcElement = elements.create('cardCvc') numberElement.mount '#number-form' expiryElement.mount '#expiry-form' cvcElement.mount '#cvc-form' submit_btn = $('#info-submit') submit_btn.click (e) -> e.preventDefault() payjp.createToken(numberElement).then (response) -> if response.error alert response.error.message regist_card.porp 'disabled', false else alert '登録が完了しました' $('#card_token').append('<input type="hidden" name="payjp_token" val(response.id)>, <input type="hidden" name="card_token" val(response.card.id)>') # $('#card_token').append('<input type="hidden" name="payjp_token">'.value(response.id)) $('#card_form')[0].submit() $('#card_number').removeAttr 'name' $('#cvc-form').removeAttr 'name' $('#exp_month').removeAttr 'name' $('#exp_year').removeAttr 'name' return return # return return ``` ```html <div class = "card-new-wrapper"> <div class = "container"> <div class = "row"> <div class = "col-md-offset-3 col-md-6"> <h1 class = "text-center">クレジットカード登録</h1> <hr class = "hr-color"> <% if @card.present? %> <h3 class = "text-center">既に登録されています</h3> <% else %> <div class = "card-new"> <div class = "form-group"> <h4 class = "card-new-number-tag">カード番号</h4> <div id = "number-form", class = "payjs-outer"></div> <div class = "card-image"> <%= image_tag 'cards/VISA.png' %> <%= image_tag 'cards/MasterCard.png' %> <%= image_tag 'cards/JCB.png' %> <%= image_tag 'cards/AmericanExpress.png' %> <%= image_tag 'cards/DinersClub.png' %> <%= image_tag 'cards/Discover.png' %> </div> <h4 class = "card-new-exp-tag">有効期限</h4> <div id = "expiry-form", class = "payjs-outer"></div> <h4 class = "card-new-cvc-tag">セキュリティーコード</h4> <div id = "cvc-form", class = "payjs-outer"></div> </div> </div> <div class = "form-group"> <%= form_with url: pay_cards_path,method: :post, id: "card_form" do |f| %> <div id = "card_token"> <%= f.submit "登録する", class: "btn btn-outline-secondary btn-black", id: "info-submit" %> </div> <% end %> </div> <% end %> </div> </div> </div> </div> ``` ### 試したこと ・javascriptに書き直し ・turbolinksの削除 ### 補足情報(FW/ツールのバージョンなど) ruby 2.6.3 Rails 5.2.4.5 Pay.jpはv2を使用しています。 記載が足りなければご指摘いただけますと幸いです。 よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問