stripe 1.18.0 → 1.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/.travis.yml +11 -1
- data/History.txt +98 -0
- data/README.rdoc +19 -10
- data/VERSION +1 -1
- data/lib/stripe/account.rb +46 -4
- data/lib/stripe/api_operations/create.rb +3 -10
- data/lib/stripe/api_operations/delete.rb +4 -4
- data/lib/stripe/api_operations/list.rb +17 -9
- data/lib/stripe/api_operations/request.rb +41 -0
- data/lib/stripe/api_operations/update.rb +41 -40
- data/lib/stripe/api_resource.rb +7 -4
- data/lib/stripe/application_fee.rb +3 -4
- data/lib/stripe/application_fee_refund.rb +1 -1
- data/lib/stripe/balance_transaction.rb +1 -1
- data/lib/stripe/bank_account.rb +19 -0
- data/lib/stripe/bitcoin_receiver.rb +12 -2
- data/lib/stripe/bitcoin_transaction.rb +5 -0
- data/lib/stripe/card.rb +6 -4
- data/lib/stripe/charge.rb +14 -22
- data/lib/stripe/coupon.rb +2 -2
- data/lib/stripe/customer.rb +24 -26
- data/lib/stripe/dispute.rb +16 -0
- data/lib/stripe/errors/card_error.rb +3 -2
- data/lib/stripe/errors/invalid_request_error.rb +3 -2
- data/lib/stripe/errors/rate_limit_error.rb +4 -0
- data/lib/stripe/errors/stripe_error.rb +8 -2
- data/lib/stripe/event.rb +1 -1
- data/lib/stripe/file_upload.rb +12 -22
- data/lib/stripe/invoice.rb +8 -8
- data/lib/stripe/invoice_item.rb +2 -2
- data/lib/stripe/list_object.rb +77 -13
- data/lib/stripe/order.rb +19 -0
- data/lib/stripe/plan.rb +2 -2
- data/lib/stripe/product.rb +16 -0
- data/lib/stripe/recipient.rb +2 -2
- data/lib/stripe/refund.rb +2 -9
- data/lib/stripe/reversal.rb +14 -0
- data/lib/stripe/singleton_api_resource.rb +2 -2
- data/lib/stripe/sku.rb +8 -0
- data/lib/stripe/stripe_object.rb +232 -46
- data/lib/stripe/subscription.rb +3 -3
- data/lib/stripe/token.rb +1 -1
- data/lib/stripe/transfer.rb +3 -3
- data/lib/stripe/util.rb +64 -21
- data/lib/stripe/version.rb +1 -1
- data/lib/stripe.rb +102 -67
- data/stripe.gemspec +0 -2
- data/test/stripe/account_test.rb +135 -6
- data/test/stripe/api_resource_test.rb +326 -42
- data/test/stripe/application_fee_refund_test.rb +6 -6
- data/test/stripe/application_fee_test.rb +3 -3
- data/test/stripe/balance_test.rb +11 -0
- data/test/stripe/bitcoin_receiver_test.rb +30 -7
- data/test/stripe/bitcoin_transaction_test.rb +29 -0
- data/test/stripe/charge_refund_test.rb +55 -0
- data/test/stripe/charge_test.rb +32 -13
- data/test/stripe/coupon_test.rb +3 -3
- data/test/stripe/customer_card_test.rb +20 -14
- data/test/stripe/customer_test.rb +15 -15
- data/test/stripe/dispute_test.rb +45 -0
- data/test/stripe/file_upload_test.rb +17 -6
- data/test/stripe/invoice_test.rb +18 -4
- data/test/stripe/list_object_test.rb +126 -2
- data/test/stripe/metadata_test.rb +28 -13
- data/test/stripe/order_test.rb +52 -0
- data/test/stripe/product_test.rb +41 -0
- data/test/stripe/recipient_card_test.rb +9 -9
- data/test/stripe/refund_test.rb +23 -15
- data/test/stripe/reversal_test.rb +47 -0
- data/test/stripe/sku_test.rb +24 -0
- data/test/stripe/stripe_object_test.rb +67 -6
- data/test/stripe/subscription_test.rb +13 -13
- data/test/stripe/transfer_test.rb +4 -4
- data/test/stripe/util_test.rb +45 -29
- data/test/stripe_test.rb +16 -0
- data/test/test_data.rb +273 -66
- metadata +47 -76
- data/lib/stripe/certificate_blacklist.rb +0 -55
- data/test/stripe/certificate_blacklist_test.rb +0 -18
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stripe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.30.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ross Boucher
|
@@ -10,140 +9,90 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2015-
|
12
|
+
date: 2015-10-09 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: rest-client
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
|
-
- - ~>
|
18
|
+
- - "~>"
|
21
19
|
- !ruby/object:Gem::Version
|
22
20
|
version: '1.4'
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
|
-
- - ~>
|
25
|
+
- - "~>"
|
29
26
|
- !ruby/object:Gem::Version
|
30
27
|
version: '1.4'
|
31
|
-
- !ruby/object:Gem::Dependency
|
32
|
-
name: mime-types
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
|
-
requirements:
|
36
|
-
- - ! '>='
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: '1.25'
|
39
|
-
- - <
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '3.0'
|
42
|
-
type: :runtime
|
43
|
-
prerelease: false
|
44
|
-
version_requirements: !ruby/object:Gem::Requirement
|
45
|
-
none: false
|
46
|
-
requirements:
|
47
|
-
- - ! '>='
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '1.25'
|
50
|
-
- - <
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '3.0'
|
53
28
|
- !ruby/object:Gem::Dependency
|
54
29
|
name: json
|
55
30
|
requirement: !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
31
|
requirements:
|
58
|
-
- - ~>
|
32
|
+
- - "~>"
|
59
33
|
- !ruby/object:Gem::Version
|
60
34
|
version: 1.8.1
|
61
35
|
type: :runtime
|
62
36
|
prerelease: false
|
63
37
|
version_requirements: !ruby/object:Gem::Requirement
|
64
|
-
none: false
|
65
38
|
requirements:
|
66
|
-
- - ~>
|
39
|
+
- - "~>"
|
67
40
|
- !ruby/object:Gem::Version
|
68
41
|
version: 1.8.1
|
69
42
|
- !ruby/object:Gem::Dependency
|
70
43
|
name: mocha
|
71
44
|
requirement: !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
45
|
requirements:
|
74
|
-
- - ~>
|
46
|
+
- - "~>"
|
75
47
|
- !ruby/object:Gem::Version
|
76
48
|
version: 0.13.2
|
77
49
|
type: :development
|
78
50
|
prerelease: false
|
79
51
|
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
none: false
|
81
52
|
requirements:
|
82
|
-
- - ~>
|
53
|
+
- - "~>"
|
83
54
|
- !ruby/object:Gem::Version
|
84
55
|
version: 0.13.2
|
85
56
|
- !ruby/object:Gem::Dependency
|
86
57
|
name: shoulda
|
87
58
|
requirement: !ruby/object:Gem::Requirement
|
88
|
-
none: false
|
89
59
|
requirements:
|
90
|
-
- - ~>
|
60
|
+
- - "~>"
|
91
61
|
- !ruby/object:Gem::Version
|
92
62
|
version: 3.4.0
|
93
63
|
type: :development
|
94
64
|
prerelease: false
|
95
65
|
version_requirements: !ruby/object:Gem::Requirement
|
96
|
-
none: false
|
97
66
|
requirements:
|
98
|
-
- - ~>
|
67
|
+
- - "~>"
|
99
68
|
- !ruby/object:Gem::Version
|
100
69
|
version: 3.4.0
|
101
70
|
- !ruby/object:Gem::Dependency
|
102
71
|
name: test-unit
|
103
72
|
requirement: !ruby/object:Gem::Requirement
|
104
|
-
none: false
|
105
73
|
requirements:
|
106
|
-
- -
|
74
|
+
- - ">="
|
107
75
|
- !ruby/object:Gem::Version
|
108
76
|
version: '0'
|
109
77
|
type: :development
|
110
78
|
prerelease: false
|
111
79
|
version_requirements: !ruby/object:Gem::Requirement
|
112
|
-
none: false
|
113
80
|
requirements:
|
114
|
-
- -
|
81
|
+
- - ">="
|
115
82
|
- !ruby/object:Gem::Version
|
116
83
|
version: '0'
|
117
84
|
- !ruby/object:Gem::Dependency
|
118
85
|
name: rake
|
119
86
|
requirement: !ruby/object:Gem::Requirement
|
120
|
-
none: false
|
121
|
-
requirements:
|
122
|
-
- - ! '>='
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
type: :development
|
126
|
-
prerelease: false
|
127
|
-
version_requirements: !ruby/object:Gem::Requirement
|
128
|
-
none: false
|
129
|
-
requirements:
|
130
|
-
- - ! '>='
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version: '0'
|
133
|
-
- !ruby/object:Gem::Dependency
|
134
|
-
name: pry
|
135
|
-
requirement: !ruby/object:Gem::Requirement
|
136
|
-
none: false
|
137
87
|
requirements:
|
138
|
-
- -
|
88
|
+
- - ">="
|
139
89
|
- !ruby/object:Gem::Version
|
140
90
|
version: '0'
|
141
91
|
type: :development
|
142
92
|
prerelease: false
|
143
93
|
version_requirements: !ruby/object:Gem::Requirement
|
144
|
-
none: false
|
145
94
|
requirements:
|
146
|
-
- -
|
95
|
+
- - ">="
|
147
96
|
- !ruby/object:Gem::Version
|
148
97
|
version: '0'
|
149
98
|
description: Stripe is the easiest way to accept payments online. See https://stripe.com
|
@@ -156,8 +105,8 @@ executables:
|
|
156
105
|
extensions: []
|
157
106
|
extra_rdoc_files: []
|
158
107
|
files:
|
159
|
-
- .gitignore
|
160
|
-
- .travis.yml
|
108
|
+
- ".gitignore"
|
109
|
+
- ".travis.yml"
|
161
110
|
- CONTRIBUTORS
|
162
111
|
- Gemfile
|
163
112
|
- History.txt
|
@@ -175,34 +124,41 @@ files:
|
|
175
124
|
- lib/stripe/api_operations/create.rb
|
176
125
|
- lib/stripe/api_operations/delete.rb
|
177
126
|
- lib/stripe/api_operations/list.rb
|
127
|
+
- lib/stripe/api_operations/request.rb
|
178
128
|
- lib/stripe/api_operations/update.rb
|
179
129
|
- lib/stripe/api_resource.rb
|
180
130
|
- lib/stripe/application_fee.rb
|
181
131
|
- lib/stripe/application_fee_refund.rb
|
182
132
|
- lib/stripe/balance.rb
|
183
133
|
- lib/stripe/balance_transaction.rb
|
134
|
+
- lib/stripe/bank_account.rb
|
184
135
|
- lib/stripe/bitcoin_receiver.rb
|
185
136
|
- lib/stripe/bitcoin_transaction.rb
|
186
137
|
- lib/stripe/card.rb
|
187
|
-
- lib/stripe/certificate_blacklist.rb
|
188
138
|
- lib/stripe/charge.rb
|
189
139
|
- lib/stripe/coupon.rb
|
190
140
|
- lib/stripe/customer.rb
|
141
|
+
- lib/stripe/dispute.rb
|
191
142
|
- lib/stripe/errors/api_connection_error.rb
|
192
143
|
- lib/stripe/errors/api_error.rb
|
193
144
|
- lib/stripe/errors/authentication_error.rb
|
194
145
|
- lib/stripe/errors/card_error.rb
|
195
146
|
- lib/stripe/errors/invalid_request_error.rb
|
147
|
+
- lib/stripe/errors/rate_limit_error.rb
|
196
148
|
- lib/stripe/errors/stripe_error.rb
|
197
149
|
- lib/stripe/event.rb
|
198
150
|
- lib/stripe/file_upload.rb
|
199
151
|
- lib/stripe/invoice.rb
|
200
152
|
- lib/stripe/invoice_item.rb
|
201
153
|
- lib/stripe/list_object.rb
|
154
|
+
- lib/stripe/order.rb
|
202
155
|
- lib/stripe/plan.rb
|
156
|
+
- lib/stripe/product.rb
|
203
157
|
- lib/stripe/recipient.rb
|
204
158
|
- lib/stripe/refund.rb
|
159
|
+
- lib/stripe/reversal.rb
|
205
160
|
- lib/stripe/singleton_api_resource.rb
|
161
|
+
- lib/stripe/sku.rb
|
206
162
|
- lib/stripe/stripe_object.rb
|
207
163
|
- lib/stripe/subscription.rb
|
208
164
|
- lib/stripe/token.rb
|
@@ -214,70 +170,85 @@ files:
|
|
214
170
|
- test/stripe/api_resource_test.rb
|
215
171
|
- test/stripe/application_fee_refund_test.rb
|
216
172
|
- test/stripe/application_fee_test.rb
|
173
|
+
- test/stripe/balance_test.rb
|
217
174
|
- test/stripe/bitcoin_receiver_test.rb
|
218
|
-
- test/stripe/
|
175
|
+
- test/stripe/bitcoin_transaction_test.rb
|
176
|
+
- test/stripe/charge_refund_test.rb
|
219
177
|
- test/stripe/charge_test.rb
|
220
178
|
- test/stripe/coupon_test.rb
|
221
179
|
- test/stripe/customer_card_test.rb
|
222
180
|
- test/stripe/customer_test.rb
|
181
|
+
- test/stripe/dispute_test.rb
|
223
182
|
- test/stripe/file_upload_test.rb
|
224
183
|
- test/stripe/invoice_test.rb
|
225
184
|
- test/stripe/list_object_test.rb
|
226
185
|
- test/stripe/metadata_test.rb
|
186
|
+
- test/stripe/order_test.rb
|
187
|
+
- test/stripe/product_test.rb
|
227
188
|
- test/stripe/recipient_card_test.rb
|
228
189
|
- test/stripe/refund_test.rb
|
190
|
+
- test/stripe/reversal_test.rb
|
191
|
+
- test/stripe/sku_test.rb
|
229
192
|
- test/stripe/stripe_object_test.rb
|
230
193
|
- test/stripe/subscription_test.rb
|
231
194
|
- test/stripe/transfer_test.rb
|
232
195
|
- test/stripe/util_test.rb
|
196
|
+
- test/stripe_test.rb
|
233
197
|
- test/test_data.rb
|
234
198
|
- test/test_helper.rb
|
235
199
|
homepage: https://stripe.com/api
|
236
200
|
licenses:
|
237
201
|
- MIT
|
202
|
+
metadata: {}
|
238
203
|
post_install_message:
|
239
204
|
rdoc_options: []
|
240
205
|
require_paths:
|
241
206
|
- lib
|
242
207
|
required_ruby_version: !ruby/object:Gem::Requirement
|
243
|
-
none: false
|
244
208
|
requirements:
|
245
|
-
- -
|
209
|
+
- - ">="
|
246
210
|
- !ruby/object:Gem::Version
|
247
211
|
version: '0'
|
248
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
249
|
-
none: false
|
250
213
|
requirements:
|
251
|
-
- -
|
214
|
+
- - ">="
|
252
215
|
- !ruby/object:Gem::Version
|
253
216
|
version: '0'
|
254
217
|
requirements: []
|
255
218
|
rubyforge_project:
|
256
|
-
rubygems_version:
|
219
|
+
rubygems_version: 2.2.2
|
257
220
|
signing_key:
|
258
|
-
specification_version:
|
221
|
+
specification_version: 4
|
259
222
|
summary: Ruby bindings for the Stripe API
|
260
223
|
test_files:
|
261
224
|
- test/stripe/account_test.rb
|
262
225
|
- test/stripe/api_resource_test.rb
|
263
226
|
- test/stripe/application_fee_refund_test.rb
|
264
227
|
- test/stripe/application_fee_test.rb
|
228
|
+
- test/stripe/balance_test.rb
|
265
229
|
- test/stripe/bitcoin_receiver_test.rb
|
266
|
-
- test/stripe/
|
230
|
+
- test/stripe/bitcoin_transaction_test.rb
|
231
|
+
- test/stripe/charge_refund_test.rb
|
267
232
|
- test/stripe/charge_test.rb
|
268
233
|
- test/stripe/coupon_test.rb
|
269
234
|
- test/stripe/customer_card_test.rb
|
270
235
|
- test/stripe/customer_test.rb
|
236
|
+
- test/stripe/dispute_test.rb
|
271
237
|
- test/stripe/file_upload_test.rb
|
272
238
|
- test/stripe/invoice_test.rb
|
273
239
|
- test/stripe/list_object_test.rb
|
274
240
|
- test/stripe/metadata_test.rb
|
241
|
+
- test/stripe/order_test.rb
|
242
|
+
- test/stripe/product_test.rb
|
275
243
|
- test/stripe/recipient_card_test.rb
|
276
244
|
- test/stripe/refund_test.rb
|
245
|
+
- test/stripe/reversal_test.rb
|
246
|
+
- test/stripe/sku_test.rb
|
277
247
|
- test/stripe/stripe_object_test.rb
|
278
248
|
- test/stripe/subscription_test.rb
|
279
249
|
- test/stripe/transfer_test.rb
|
280
250
|
- test/stripe/util_test.rb
|
251
|
+
- test/stripe_test.rb
|
281
252
|
- test/test_data.rb
|
282
253
|
- test/test_helper.rb
|
283
254
|
has_rdoc:
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'uri'
|
2
|
-
require 'digest/sha1'
|
3
|
-
|
4
|
-
module Stripe
|
5
|
-
module CertificateBlacklist
|
6
|
-
|
7
|
-
BLACKLIST = {
|
8
|
-
"api.stripe.com" => [
|
9
|
-
'05c0b3643694470a888c6e7feb5c9e24e823dc53',
|
10
|
-
],
|
11
|
-
"revoked.stripe.com" => [
|
12
|
-
'5b7dc7fbc98d78bf76d4d4fa6f597a0c901fad5c',
|
13
|
-
]
|
14
|
-
}
|
15
|
-
|
16
|
-
# Preflight the SSL certificate presented by the backend. This isn't 100%
|
17
|
-
# bulletproof, in that we're not actually validating the transport used to
|
18
|
-
# communicate with Stripe, merely that the first attempt to does not use a
|
19
|
-
# revoked certificate.
|
20
|
-
|
21
|
-
# Unfortunately the interface to OpenSSL doesn't make it easy to check the
|
22
|
-
# certificate before sending potentially sensitive data on the wire. This
|
23
|
-
# approach raises the bar for an attacker significantly.
|
24
|
-
|
25
|
-
def self.check_ssl_cert(uri, ca_file)
|
26
|
-
uri = URI.parse(uri)
|
27
|
-
|
28
|
-
sock = TCPSocket.new(uri.host, uri.port)
|
29
|
-
ctx = OpenSSL::SSL::SSLContext.new
|
30
|
-
ctx.set_params(:verify_mode => OpenSSL::SSL::VERIFY_PEER,
|
31
|
-
:ca_file => ca_file)
|
32
|
-
|
33
|
-
socket = OpenSSL::SSL::SSLSocket.new(sock, ctx)
|
34
|
-
socket.connect
|
35
|
-
|
36
|
-
certificate = socket.peer_cert.to_der
|
37
|
-
fingerprint = Digest::SHA1.hexdigest(certificate)
|
38
|
-
|
39
|
-
if blacklisted_certs = BLACKLIST[uri.host]
|
40
|
-
if blacklisted_certs.include?(fingerprint)
|
41
|
-
raise APIConnectionError.new(
|
42
|
-
"Invalid server certificate. You tried to connect to a server that" +
|
43
|
-
"has a revoked SSL certificate, which means we cannot securely send" +
|
44
|
-
"data to that server. Please email support@stripe.com if you need" +
|
45
|
-
"help connecting to the correct API server."
|
46
|
-
)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
socket.close
|
51
|
-
|
52
|
-
return true
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require File.expand_path('../../test_helper', __FILE__)
|
2
|
-
|
3
|
-
module Stripe
|
4
|
-
|
5
|
-
class CertificateBlacklistTest < Test::Unit::TestCase
|
6
|
-
should "not trust revoked certificates" do
|
7
|
-
assert_raises(Stripe::APIConnectionError) {
|
8
|
-
Stripe::CertificateBlacklist.check_ssl_cert("https://revoked.stripe.com:444",
|
9
|
-
Stripe::DEFAULT_CA_BUNDLE_PATH)
|
10
|
-
}
|
11
|
-
end
|
12
|
-
|
13
|
-
should "trust api.stripe.com" do
|
14
|
-
assert_true Stripe::CertificateBlacklist.check_ssl_cert("https://api.stripe.com",
|
15
|
-
Stripe::DEFAULT_CA_BUNDLE_PATH)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|