質問編集履歴

2

公式のURLを追加しました

2018/07/21 08:31

投稿

begenner
begenner

スコア79

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,17 @@
6
6
 
7
7
 
8
8
 
9
+ payjpの公式サイトには
10
+
11
+ ```
12
+
13
+ PAY.JP APIへのリクエストでは、GET、POST、DELETEの3種類のHTTPメソッドを利用できます。
14
+
15
+ ```
16
+
17
+ と書いてありますが
18
+
9
- いろいろ探しまし参考になる情報が全く見つからず困っています(m_ _m)
19
+ 利用するめの参考になる情報が全く見つからず困っています(m_ _m)
10
20
 
11
21
 
12
22
 
@@ -37,6 +47,8 @@
37
47
  [[Ruby] Pay.jpでクレジットカード決済を簡単実装](https://qiita.com/Sa2Knight/items/baefe2a49cefc9f03af6)
38
48
 
39
49
 
50
+
51
+ [Payjp公式](https://pay.jp/docs/api/?ruby#%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89)
40
52
 
41
53
  ###該当のソースコード
42
54
 

1

大幅に変更しました

2018/07/21 08:31

投稿

begenner
begenner

スコア79

test CHANGED
@@ -1 +1 @@
1
- railsでのpayjpの実装について
1
+ payjpで保存したクレジットカード情報について
test CHANGED
@@ -1,38 +1,14 @@
1
- 現在アプリを作成していて決済機能にpayjpを使っています。
1
+ 現在Railsでアプリを作成しています。
2
-
3
- サイトでクレジット情報を再利用できるようにしたいと思い、以下の記事を見つけました。
4
2
 
5
3
 
6
4
 
7
- [Rails で Payjp を使って決済システムを導入する](https://qiita.com/hirotakasasaki/items/794c920016ac7c33da74)
8
-
9
- ```ruby
10
-
11
- #app/views/products/index.html.erb
12
-
13
- <%= form_tag(action: :pay, method: :post) do %>
14
-
15
- <script type="text/javascript" src="https://checkout.pay.jp" class="payjp-button" data-key="公開キー"></script>
16
-
17
- <% end %>
18
-
19
- ```
20
-
21
- しかしこれだとURLから決済が完了する動線だと気づきました(というよりそのように思います)。
22
-
23
- これはアプリでクレジットカード情報の再利用ができないです。
5
+ payjp登録したクレジットカード情報を表示したいです。
24
-
25
- 今回実装したいのは
26
-
27
- - クレジットカード情報の登録(上のようなscriptを使って簡単に実装できるととても嬉しいです)
28
-
29
- - 上のようなscriptを利用できない場合はform_for(form_tag)で代用したい
30
-
31
- - クレジットカード情報の再利用(ユーザーと紐付けたい)
32
6
 
33
7
 
34
8
 
35
-
9
+ いろいろ探しましたが参考になる情報が全く見つからず困っていま(m_ _m)
10
+
11
+
36
12
 
37
13
  わかる方がいらっしゃれば教えていただきますようよろしくお願いいたします(m_ _m)
38
14
 
@@ -42,43 +18,39 @@
42
18
 
43
19
  ###期待する動作
44
20
 
45
- - クレジット情報をアプリで再利用できるようにしたい
21
+ payjpに保存した顧客のクレジット情報を表示したい(index,showアクションで)
22
+
23
+ (カードの種類、カード番号の下4桁、有効期限)
46
24
 
47
25
  ###動作環境
48
26
 
49
- - OS:mac
27
+ OS:mac
50
28
 
51
- - Ruby:2.3.5
29
+ Ruby:2.3.5
52
30
 
53
- - Ruby on Rails: 4.2.5
31
+ Ruby on Rails: 4.2.5
54
-
55
- - gem
56
-
57
- -> devise(gem): 4.4.0
58
-
59
- -> dotenv-rails
60
32
 
61
33
 
62
34
 
63
35
  ###参考サイト
64
36
 
65
- [Rails Payjp を使って決済システム導入する](https://qiita.com/hirotakasasaki/items/794c920016ac7c33da74)
37
+ [[Ruby] Pay.jpでクレジットカード決済を簡単実装](https://qiita.com/Sa2Knight/items/baefe2a49cefc9f03af6)
66
38
 
67
39
 
68
40
 
69
- ###現在のコード
41
+ ###該当ソースコード
70
42
 
71
- リレーション
43
+ db/schema.rb
72
44
 
73
45
  ```ruby
74
46
 
75
- #app/models/user.html.erb
47
+ create_table "payments", force: :cascade do |t|
76
48
 
77
- has_many :credits
49
+ t.integer "user_id", limit: 4
78
50
 
79
- #app/models/credit.html.erb
51
+ t.string "customer_id", limit: 255
80
52
 
81
- belongs_to :user
53
+ end
82
54
 
83
55
  ```
84
56
 
@@ -86,13 +58,37 @@
86
58
 
87
59
 
88
60
 
89
- app/controllers/credits_controller.rb
61
+ app/controllers/payments_controller.rb
90
62
 
91
63
  ```ruby
92
64
 
65
+ class PaymentsController < ApplicationController
66
+
67
+
68
+
69
+
70
+
71
+ def index
72
+
73
+ #ここでのクレジットカード情報の表示の方法がわからない
74
+
75
+ @payments = Payment.where(user_id: current_user.id)
76
+
77
+ end
78
+
79
+
80
+
81
+ def show
82
+
83
+ #ここでのクレジットカード情報の表示の方法がわからない
84
+
85
+ end
86
+
87
+
88
+
93
89
  def new
94
90
 
95
- @credit = Credit.new
91
+ @payment = Payment.new
96
92
 
97
93
  end
98
94
 
@@ -100,15 +96,13 @@
100
96
 
101
97
  def create
102
98
 
103
- Payjp.api_key = ENV['payjp_test_private_key']
99
+ Payjp.api_key = ENV['payjp_private_key']
104
100
 
105
101
 
106
102
 
107
103
  #トークン作成
108
104
 
109
105
  token = Payjp::Token.create(
110
-
111
- user_id: current_user.id,
112
106
 
113
107
  card: {
114
108
 
@@ -126,23 +120,29 @@
126
120
 
127
121
  )
128
122
 
123
+ #顧客の作成
129
124
 
130
-
131
- @credit = Credit.new(credit_params)
132
-
133
- @credit.user_id = current_user.id
134
-
135
- @credit.customer_id = token.id
125
+ Payjp::Customer.create(card: token.id)
136
126
 
137
127
 
138
128
 
139
- if @credit.save
129
+ #トークンとアプリのユーザーの紐付け
140
130
 
131
+ @payment = Payment.new(payment_params)
132
+
133
+ @payment.user_id = current_user.id
134
+
135
+ @payment.customer_id = token.id
136
+
137
+
138
+
139
+ if @payment.save
140
+
141
- redirect_to hoge_path, success: "登録ができました"
141
+ redirect_to payments_path, success: "登録ができました"
142
142
 
143
143
  else
144
144
 
145
- # ここの処理はどのようにすればいいのか?
145
+ render 'new'
146
146
 
147
147
  end
148
148
 
@@ -152,24 +152,20 @@
152
152
 
153
153
  rescue Payjp::CardError
154
154
 
155
- render 'new' notice: 'エラーが発生しました。もう一度入力内容を確認してください'
155
+ render 'new'
156
-
157
- end
158
156
 
159
157
  end
160
158
 
161
- ```
162
159
 
163
160
 
161
+ private
164
162
 
165
- app/views/credits/new.html.erb
163
+ def payment_params
166
164
 
167
- ```ruby
165
+ params.permit(:payment).permit(:user_id, :customer_id)
168
166
 
169
- <%= form_tag(action: :create, method: :post) do %>
167
+ end
170
168
 
171
- <script type="text/javascript" src="https://checkout.pay.jp" class="payjp-button" data-key="<%= ENV['payjp_test_public_key'] %>"></script>
172
-
173
- <% end %>
169
+ end
174
170
 
175
171
  ```