teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

疑問点追加

2019/04/18 08:29

投稿

nobu09
nobu09

スコア35

title CHANGED
File without changes
body CHANGED
@@ -18,42 +18,45 @@
18
18
  発生するエラー:
19
19
  Payjp::AuthenticationError: No API key provided. Set your API key using "Payjp.api_key = <API-KEY>".
20
20
 
21
- ソースコードは以下になります。
21
+ 現状の問題点
22
- PayjpのAPIを使用していま
22
+ - コンソールで確認たところ、`PayjpObject::Client.api_key=nil`になっていました
23
+ - PayjpObject::Client.request、PayjpObject::Subscription.createにはそれぞれ何を記載すれば良いのでしょうか
24
+ - PayjpObject::Subscription.createに引数を与えるにはどうすれば良いのでしょうか
23
25
 
24
- ・controllers/concerns/payjp_object_client.rb
25
26
 
27
+ PayjpのAPIを使用したソースコードは以下になります。
28
+
29
+ ・config/initializers/payjp_object_client.rb
30
+
26
- ```ruby
31
+ ```
32
+ PayjpObject::Client.api_key = ENV["PAYJP_SECRET_KEY"];
33
+ ```
34
+
35
+ ・controllers/concerns/payjp_object/client.rb
36
+
37
+ ```
27
38
  module PayjpObject
28
39
  class Client
29
40
  class_attribute :api_key
30
-
31
41
  def self.request
32
- Payjp.api_key = PayjpObject::Client.api_key
42
+ Payjp::Subscription.create
33
- return []
34
43
  end
35
44
  end
36
45
  end
37
46
  ```
38
47
 
39
- ・controllers/concerns/PayjpObject/payjp_object.rb
48
+ ・controllers/concerns/payjp_object/subscription.rb
40
49
 
41
50
  ```ruby
42
51
  module PayjpObject
43
52
  class Subscription
44
- def get_all
53
+ def self.create(attrs)
45
- Client.request(Payjp::Plan.all)
54
+ Client.request(Payjp::Subscription.create).map { |attrs| Subscription.new attrs }
46
55
  end
47
56
 
48
- def create
57
+ def find_by(attrs)
49
- Client.request(Payjp::Subscription.create).map { |attrs| Subscription.new attrs }
58
+ Client.request(Payjp::Subscription.find_by).map { |attrs| Subscription.new attrs }
50
59
  end
51
60
  end
52
61
  end
53
- ```
54
-
55
- ・config/initializers/payjp_object.rb
56
-
57
- ```ruby
58
- PayjpObject::Client.api_key = ENV["PAYJP_SECRET_KEY"];
59
62
  ```

4

エラー修正

2019/04/18 08:29

投稿

nobu09
nobu09

スコア35

title CHANGED
File without changes
body CHANGED
@@ -16,12 +16,12 @@
16
16
 
17
17
  ### 追記
18
18
  発生するエラー:
19
- NoMethodError (undefined method `create' for PayjpObject::Subscription:Class)
19
+ Payjp::AuthenticationError: No API key provided. Set your API key using "Payjp.api_key = <API-KEY>".
20
20
 
21
21
  ソースコードは以下になります。
22
22
  PayjpのAPIを使用しています。
23
23
 
24
- modules/ayjpObject/client.rb
24
+ controllers/concerns/payjp_object_client.rb
25
25
 
26
26
  ```ruby
27
27
  module PayjpObject
@@ -36,7 +36,7 @@
36
36
  end
37
37
  ```
38
38
 
39
- modules/PayjpObject/Subscription.rb
39
+ controllers/concerns/PayjpObject/payjp_object.rb
40
40
 
41
41
  ```ruby
42
42
  module PayjpObject
@@ -52,14 +52,8 @@
52
52
  end
53
53
  ```
54
54
 
55
- controller
55
+ config/initializers/payjp_object.rb
56
56
 
57
57
  ```ruby
58
- class ChargesController < ApplicationController
58
+ PayjpObject::Client.api_key = ENV["PAYJP_SECRET_KEY"];
59
- include PayjpObject
60
- def create
61
- subscription = PayjpObject::Subscription.create(plan: params[:plan_id], customer: current_user.customer_id)
62
-
63
- redirect_to root_path
64
- end
65
59
  ```

3

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

2019/04/18 07:20

投稿

nobu09
nobu09

スコア35

title CHANGED
File without changes
body CHANGED
@@ -14,7 +14,10 @@
14
14
  module化やconcernでの実装を考えたのですが、クラスで実装しているようにapikey設定を一ヶ所にまとめる方法が思い付きませんでした。
15
15
 
16
16
 
17
- [**追記**]
17
+ ### 追記
18
+ 発生するエラー:
19
+ NoMethodError (undefined method `create' for PayjpObject::Subscription:Class)
20
+
18
21
  ソースコードは以下になります。
19
22
  PayjpのAPIを使用しています。
20
23
 
@@ -53,6 +56,7 @@
53
56
 
54
57
  ```ruby
55
58
  class ChargesController < ApplicationController
59
+ include PayjpObject
56
60
  def create
57
61
  subscription = PayjpObject::Subscription.create(plan: params[:plan_id], customer: current_user.customer_id)
58
62
 

2

ソースコード追加

2019/04/18 05:47

投稿

nobu09
nobu09

スコア35

title CHANGED
File without changes
body CHANGED
@@ -11,4 +11,51 @@
11
11
 
12
12
  ### 試したこと
13
13
 
14
- module化やconcernでの実装を考えたのですが、クラスで実装しているようにapikey設定を一ヶ所にまとめる方法が思い付きませんでした。
14
+ module化やconcernでの実装を考えたのですが、クラスで実装しているようにapikey設定を一ヶ所にまとめる方法が思い付きませんでした。
15
+
16
+
17
+ [**追記**]
18
+ ソースコードは以下になります。
19
+ PayjpのAPIを使用しています。
20
+
21
+ ・modules/ayjpObject/client.rb
22
+
23
+ ```ruby
24
+ module PayjpObject
25
+ class Client
26
+ class_attribute :api_key
27
+
28
+ def self.request
29
+ Payjp.api_key = PayjpObject::Client.api_key
30
+ return []
31
+ end
32
+ end
33
+ end
34
+ ```
35
+
36
+ ・modules/PayjpObject/Subscription.rb
37
+
38
+ ```ruby
39
+ module PayjpObject
40
+ class Subscription
41
+ def get_all
42
+ Client.request(Payjp::Plan.all)
43
+ end
44
+
45
+ def create
46
+ Client.request(Payjp::Subscription.create).map { |attrs| Subscription.new attrs }
47
+ end
48
+ end
49
+ end
50
+ ```
51
+
52
+ ・controller
53
+
54
+ ```ruby
55
+ class ChargesController < ApplicationController
56
+ def create
57
+ subscription = PayjpObject::Subscription.create(plan: params[:plan_id], customer: current_user.customer_id)
58
+
59
+ redirect_to root_path
60
+ end
61
+ ```

1

2019/04/18 03:51

投稿

nobu09
nobu09

スコア35

title CHANGED
File without changes
body CHANGED
@@ -11,4 +11,4 @@
11
11
 
12
12
  ### 試したこと
13
13
 
14
- module化やconcernでの実装を考えたのですが、aクラスで実装しているようにapikey設定を一ヶ所にまとめる方法が思い付きませんでした。
14
+ module化やconcernでの実装を考えたのですが、クラスで実装しているようにapikey設定を一ヶ所にまとめる方法が思い付きませんでした。