質問編集履歴

5

疑問点追加

2019/04/18 08:29

投稿

nobu09
nobu09

スコア34

test CHANGED
File without changes
test CHANGED
@@ -38,17 +38,39 @@
38
38
 
39
39
 
40
40
 
41
- ソースコードは以下になります。
41
+ 現状の問題点
42
42
 
43
- PayjpのAPIを使用していま
43
+ - コンソールで確認したところ、`PayjpObject::Client.api_key=nil`になっていました
44
+
45
+ - PayjpObject::Client.request、PayjpObject::Subscription.createにはそれぞれ何を記載すれば良いのでしょうか
46
+
47
+ - PayjpObject::Subscription.createに引数を与えるにはどうすれば良いのでしょうか
44
48
 
45
49
 
46
50
 
51
+
52
+
47
- ・controllers/concerns/payjp_object_client.rb
53
+ PayjpのAPIを使用したソースコードは以下になります。
48
54
 
49
55
 
50
56
 
57
+ ・config/initializers/payjp_object_client.rb
58
+
59
+
60
+
51
- ```ruby
61
+ ```
62
+
63
+ PayjpObject::Client.api_key = ENV["PAYJP_SECRET_KEY"];
64
+
65
+ ```
66
+
67
+
68
+
69
+ ・controllers/concerns/payjp_object/client.rb
70
+
71
+
72
+
73
+ ```
52
74
 
53
75
  module PayjpObject
54
76
 
@@ -56,13 +78,9 @@
56
78
 
57
79
  class_attribute :api_key
58
80
 
59
-
60
-
61
81
  def self.request
62
82
 
63
- Payjp.api_key = PayjpObject::Client.api_key
83
+ Payjp::Subscription.create
64
-
65
- return []
66
84
 
67
85
  end
68
86
 
@@ -74,7 +92,7 @@
74
92
 
75
93
 
76
94
 
77
- ・controllers/concerns/PayjpObject/payjp_object.rb
95
+ ・controllers/concerns/payjp_object/subscription.rb
78
96
 
79
97
 
80
98
 
@@ -84,17 +102,17 @@
84
102
 
85
103
  class Subscription
86
104
 
87
- def get_all
105
+ def self.create(attrs)
88
106
 
89
- Client.request(Payjp::Plan.all)
107
+ Client.request(Payjp::Subscription.create).map { |attrs| Subscription.new attrs }
90
108
 
91
109
  end
92
110
 
93
111
 
94
112
 
95
- def create
113
+ def find_by(attrs)
96
114
 
97
- Client.request(Payjp::Subscription.create).map { |attrs| Subscription.new attrs }
115
+ Client.request(Payjp::Subscription.find_by).map { |attrs| Subscription.new attrs }
98
116
 
99
117
  end
100
118
 
@@ -103,15 +121,3 @@
103
121
  end
104
122
 
105
123
  ```
106
-
107
-
108
-
109
- ・config/initializers/payjp_object.rb
110
-
111
-
112
-
113
- ```ruby
114
-
115
- PayjpObject::Client.api_key = ENV["PAYJP_SECRET_KEY"];
116
-
117
- ```

4

エラー修正

2019/04/18 08:29

投稿

nobu09
nobu09

スコア34

test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  発生するエラー:
36
36
 
37
- NoMethodError (undefined method `create' for PayjpObject::Subscription:Class)
37
+ Payjp::AuthenticationError: No API key provided. Set your API key using "Payjp.api_key = <API-KEY>".
38
38
 
39
39
 
40
40
 
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
 
47
- modules/ayjpObject/client.rb
47
+ controllers/concerns/payjp_object_client.rb
48
48
 
49
49
 
50
50
 
@@ -74,7 +74,7 @@
74
74
 
75
75
 
76
76
 
77
- modules/PayjpObject/Subscription.rb
77
+ controllers/concerns/PayjpObject/payjp_object.rb
78
78
 
79
79
 
80
80
 
@@ -106,24 +106,12 @@
106
106
 
107
107
 
108
108
 
109
- ・controller
109
+ ・config/initializers/payjp_object.rb
110
110
 
111
111
 
112
112
 
113
113
  ```ruby
114
114
 
115
- class ChargesController < ApplicationController
115
+ PayjpObject::Client.api_key = ENV["PAYJP_SECRET_KEY"];
116
-
117
- include PayjpObject
118
-
119
- def create
120
-
121
- subscription = PayjpObject::Subscription.create(plan: params[:plan_id], customer: current_user.customer_id)
122
-
123
-
124
-
125
- redirect_to root_path
126
-
127
- end
128
116
 
129
117
  ```

3

ソースコード、エラー追記

2019/04/18 07:20

投稿

nobu09
nobu09

スコア34

test CHANGED
File without changes
test CHANGED
@@ -30,7 +30,13 @@
30
30
 
31
31
 
32
32
 
33
- [**追記**]
33
+ ### 追記
34
+
35
+ 発生するエラー:
36
+
37
+ NoMethodError (undefined method `create' for PayjpObject::Subscription:Class)
38
+
39
+
34
40
 
35
41
  ソースコードは以下になります。
36
42
 
@@ -108,6 +114,8 @@
108
114
 
109
115
  class ChargesController < ApplicationController
110
116
 
117
+ include PayjpObject
118
+
111
119
  def create
112
120
 
113
121
  subscription = PayjpObject::Subscription.create(plan: params[:plan_id], customer: current_user.customer_id)

2

ソースコード追加

2019/04/18 05:47

投稿

nobu09
nobu09

スコア34

test CHANGED
File without changes
test CHANGED
@@ -25,3 +25,97 @@
25
25
 
26
26
 
27
27
  module化やconcernでの実装を考えたのですが、クラスで実装しているようにapikey設定を一ヶ所にまとめる方法が思い付きませんでした。
28
+
29
+
30
+
31
+
32
+
33
+ [**追記**]
34
+
35
+ ソースコードは以下になります。
36
+
37
+ PayjpのAPIを使用しています。
38
+
39
+
40
+
41
+ ・modules/ayjpObject/client.rb
42
+
43
+
44
+
45
+ ```ruby
46
+
47
+ module PayjpObject
48
+
49
+ class Client
50
+
51
+ class_attribute :api_key
52
+
53
+
54
+
55
+ def self.request
56
+
57
+ Payjp.api_key = PayjpObject::Client.api_key
58
+
59
+ return []
60
+
61
+ end
62
+
63
+ end
64
+
65
+ end
66
+
67
+ ```
68
+
69
+
70
+
71
+ ・modules/PayjpObject/Subscription.rb
72
+
73
+
74
+
75
+ ```ruby
76
+
77
+ module PayjpObject
78
+
79
+ class Subscription
80
+
81
+ def get_all
82
+
83
+ Client.request(Payjp::Plan.all)
84
+
85
+ end
86
+
87
+
88
+
89
+ def create
90
+
91
+ Client.request(Payjp::Subscription.create).map { |attrs| Subscription.new attrs }
92
+
93
+ end
94
+
95
+ end
96
+
97
+ end
98
+
99
+ ```
100
+
101
+
102
+
103
+ ・controller
104
+
105
+
106
+
107
+ ```ruby
108
+
109
+ class ChargesController < ApplicationController
110
+
111
+ def create
112
+
113
+ subscription = PayjpObject::Subscription.create(plan: params[:plan_id], customer: current_user.customer_id)
114
+
115
+
116
+
117
+ redirect_to root_path
118
+
119
+ end
120
+
121
+ ```

1

2019/04/18 03:51

投稿

nobu09
nobu09

スコア34

test CHANGED
File without changes
test CHANGED
@@ -24,4 +24,4 @@
24
24
 
25
25
 
26
26
 
27
- module化やconcernでの実装を考えたのですが、aクラスで実装しているようにapikey設定を一ヶ所にまとめる方法が思い付きませんでした。
27
+ module化やconcernでの実装を考えたのですが、クラスで実装しているようにapikey設定を一ヶ所にまとめる方法が思い付きませんでした。