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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

解決済

1回答

460閲覧

登録しているクレジットカードを読み込みたい【Pay.jp】

tomtom1

総合スコア168

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/10/16 09:21

###実現したいこと
登録しているクレジットカードを読み込みたいです。
すでにPay.jpとの関連づけは終わっており、カードの情報も登録できます。
しかし、支払いの処理をする時に、登録しているカードの読み込みができていません。
・以下で購入処理

Controller

1class ItemsController < ApplicationController 2def pay 3 if card.blank? 4 redirect_to action: "new" 5 flash[:alert] = '購入にはクレジットカード登録が必要です' 6 else 7 @item = Item.find_by(id: params[:id]) 8 card = Card.where(user_id: current_user.id).first 9 Payjp.api_key = ENV["PAYJP_SECRET_KEY"] 10 Payjp::Charge.create( 11 :amount => @item.price, 12 :card => params['payjp-token'], 13 :currency => 'jpy' 14 ) 15 flash[:notice] = "購入しました" 16 redirect_to action: :done 17 end 18 end

・以下でカード登録処理

Controller

1class CardController < ApplicationController 2def create #payjpとCardのデータベース作成を実施します。 3 @book = Book.find_by(id: params[:id]) 4 Payjp.api_key = ENV["PAYJP_PRIVATE_KEY"] 5 if params['payjp-token'].blank? 6 redirect_to action: "new" 7 else 8 customer = Payjp::Customer.create( 9 email: @current_user.email, 10 card: params['payjp-token'], 11 metadata: {user_id: @current_user.id} 12 ) 13 @card = Card.new(user_id: @current_user.id, customer_id: customer.id, card_id: customer.default_card) 14 if @card.save 15 flash[:notice] = "登録しました" 16 redirect_to("/user/#{@current_user.id}") 17 else 18 render :new 19 end 20 end 21 end

schema

1create_table "cards", force: :cascade do |t| 2 t.integer "user_id" 3 t.string "customer_id" 4 t.string "card_id" 5 t.datetime "created_at", null: false 6 t.datetime "updated_at", null: false 7 end

以下のような設定方法も他のサイトでみましたが、叶いませんでした。

card = current_user.credit_card

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

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

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

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

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

tomtom1

2020/10/18 08:49

ありがとうございます!参考になりました!
guest

回答1

0

自己解決

:customer => @card.customer_id の代入が足りていませんでした。

投稿2020/10/18 08:50

tomtom1

総合スコア168

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問