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

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

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

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

605閲覧

クレジット決済について

begenner

総合スコア79

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2018/05/27 07:15

現在ECサイトを作成しています。
注文の支払い方法をクレジット決済で行おうとpayjpを利用して作成していました。
しかしdevelopment環境で下記のエラーが表示され注文完了画面まで行き着きません。
rails uninitialized constで調べてみましたが

Rubyでのハマりポイント

のような原因とは思えませんでした(m_ m)
わかる方がいらっしゃいましたらご教授いただきますようよろしくお願いいたします(m
_m)

###エラー内容
イメージ説明
###期待する動作

  • まずはpayjpによるクレジット機能が問題なく動作すること
  • できれば注文も同時に保存したい

###動作環境
OS:mac
Ruby:2.3.5
Ruby on Rails: 4.2.5

###参考サイト
[Ruby/Rails]PAY.JPを利用したクレジットカード決済の実装

[Ruby] Pay.jpでクレジットカード決済を簡単実装
###試したこと

  • 最初はcreateアクションに全て書こうと思ったが参考サイトのようにform_tagを利用すると入れ子ができなかった
  • createアクションではなくpayアクションにpayjpの決済処理を書いた後に無理やりカートの内容を注文へ移そうとしたが、そもそもトークンを作成している部分でエラーが出る(?)

###補足情報
gem payjp はインストール済みです
###該当のソースコード
config/routes.rb

ruby:routes.rb

1#routes.rb 2 resources :orders, only: [:new, :create] do 3 collection do 4 post 'pay' 5 end 6 end

app/controllers/orders_controller.rb

ruby

1class OrdersController < ApplicationController 2. 3. 4 def pay 5 Payjp.api_key = 'sk_test_5856604ca5d22e70cf473d39' 6 7 # Pay::Token.new ← 関係なし 8 token = Pay::Token.create( 9 :card => { 10 number: params[:number], 11 cvc: params[:cvc], 12 exp_month: params[:exp_month], 13 exp_year: params[:exp_year] 14 } 15 ) 16 17 # 売上を確定する 18 Payjp::Charge.create( 19 :amount => @total_price, 20 :card => params[token.id], 21 :currency => 'jpy' 22 ) 23# エラー処理 24 rescue Payjp::CardError 25 render 'new' 26 end 27end

app/views/orders/new.html.erb

ruby

1<%= form_tag('/pay', method: :post, datakey: 'payjpのテスト用公開鍵') do %> 2 3 <input type="text" name="number" maxlength="16" placeholder="カード番号"><br> 4 <input type="text" name="cvc" maxlength="3" placeholder="CVC"><br> 5 <input type="text" name="exp_month" maxlength="2" placeholder="月"><br> 6 <input type="text" name="exp_year" maxlength="4" placeholder="西暦(4桁)"><br> 7 8 <div class="field"> 9 <input type="submit"> 10 </div> 11<% end %>

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

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

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

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

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

guest

回答1

0

ベストアンサー

payjpのGemを使うための名前はPayjpで、エラーは単にPayだけになっているミスが原因と思われます。

投稿2018/05/27 07:24

maisumakun

総合スコア145183

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

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

begenner

2018/05/27 23:22

すいません、単純な記述ミスでした(m_ _m) おかげさまで無事動作しました!! ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問