payola 0.0.4 → 1.0.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5b3e4ad6b2234c61f66034e64ed2642636df5db
|
4
|
+
data.tar.gz: 5f2ccdbe97a48efcf360cf92dc47d52b5c372b0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94e1958ee706fb242a1329cd303950faa3944fe49511c70f62aed5e8e5040c843486316abb73d22769055e165ceab56d8036d26ec6c5dab72fd68b4563f61b77
|
7
|
+
data.tar.gz: a43622ec27a325b2b118c6d0dc52d7e9a6057e9b665ad798e7b1a5a399f032c051696016b14e2087edc27f5acc317726c848bedc65ec8aa8e2cdd2e18d7eb0b1
|
data/lib/payola/configuration.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
module Payola
|
2
2
|
class Configuration
|
3
|
-
attr_accessor :
|
3
|
+
attr_accessor :payment_gateway_adapter,
|
4
|
+
:payment_gateway_api_key
|
5
|
+
|
6
|
+
def payment_gateway_adapter=(other)
|
7
|
+
Payola::Registry[:payment_gateway_adapter] = other
|
8
|
+
end
|
4
9
|
end
|
5
10
|
|
6
11
|
def self.config
|
@@ -28,12 +28,13 @@ class StripePaymentGateway
|
|
28
28
|
|
29
29
|
def apply_subscription
|
30
30
|
update_subscription_plan
|
31
|
+
update_subscription_payment_token
|
31
32
|
|
32
33
|
{
|
33
34
|
status: subscription.status,
|
34
35
|
plan: subscription.plan[:id],
|
35
36
|
subscription_id: "#{subscription.customer}:#{subscription.id}",
|
36
|
-
last_four_of_credit_card:
|
37
|
+
last_four_of_credit_card: last_four_of_credit_card,
|
37
38
|
}
|
38
39
|
end
|
39
40
|
|
@@ -52,6 +53,16 @@ class StripePaymentGateway
|
|
52
53
|
raise Payola::Errors::PaymentGatewayRequestError.wrap(e)
|
53
54
|
end
|
54
55
|
|
56
|
+
def update_subscription_payment_token
|
57
|
+
subscription.save(card: payment_token)
|
58
|
+
rescue Stripe::InvalidRequestError => e
|
59
|
+
raise Payola::Errors::PaymentGatewayRequestError.wrap(e) unless e.message.match 'cannot use a Stripe token more than once'
|
60
|
+
end
|
61
|
+
|
62
|
+
def last_four_of_credit_card
|
63
|
+
customer_default_card.last4 unless plan.amount.zero?
|
64
|
+
end
|
65
|
+
|
55
66
|
def customer_default_card
|
56
67
|
customer.cards.retrieve(customer.default_card)
|
57
68
|
end
|
data/lib/payola/version.rb
CHANGED
@@ -8,8 +8,8 @@ module Payola
|
|
8
8
|
module PaymentGateways
|
9
9
|
describe StripePaymentGateway, :stripe, :vcr do
|
10
10
|
before(:each) do
|
11
|
-
Payola.config.payment_gateway_api_key = '
|
12
|
-
Stripe.api_key = '
|
11
|
+
Payola.config.payment_gateway_api_key = 'sk_test_AyJNzC2ZSmR8u13Ja33D8Gey'
|
12
|
+
Stripe.api_key = 'sk_test_AyJNzC2ZSmR8u13Ja33D8Gey'
|
13
13
|
end
|
14
14
|
|
15
15
|
let(:credit_card_token) do
|
@@ -129,6 +129,50 @@ describe StripePaymentGateway, :stripe, :vcr do
|
|
129
129
|
raise_error(Payola::Errors::PaymentGatewayRequestError).
|
130
130
|
with_message("RuntimeError: error creating customer")
|
131
131
|
end
|
132
|
+
|
133
|
+
it 'allows a free subscription to be created without a previous paid subscription' do
|
134
|
+
subscription = StripePaymentGateway.apply_subscription \
|
135
|
+
subscription_id: nil,
|
136
|
+
plan_id: 'my test plan id',
|
137
|
+
amount: Money.new(0, 'USD'),
|
138
|
+
interval: 'month',
|
139
|
+
interval_count: 1,
|
140
|
+
plan_name: 'my test plan name'
|
141
|
+
|
142
|
+
expect(subscription[:plan]).to eql 'my test plan id'
|
143
|
+
expect(subscription[:subscription_id]).to match /\Acus_[A-Za-z0-9]{14}\:sub_[A-Za-z0-9]{14}\z/
|
144
|
+
expect(subscription[:status]).to eql 'active'
|
145
|
+
expect(subscription[:last_four_of_credit_card]).to eql nil
|
146
|
+
end
|
147
|
+
|
148
|
+
it 'can update a subscription with a new payment token' do
|
149
|
+
customer = Stripe::Customer.create
|
150
|
+
plan = Stripe::Plan.create id: 'my other existing test plan id',
|
151
|
+
amount: 200,
|
152
|
+
currency: 'USD',
|
153
|
+
interval: 'week',
|
154
|
+
name: 'what you talkin bout'
|
155
|
+
existing_subscription = customer.subscriptions.create(
|
156
|
+
plan: plan.id,
|
157
|
+
card: credit_card_token)
|
158
|
+
|
159
|
+
new_credit_card_token = Payola::Factories::StripePaymentToken.create( card: {
|
160
|
+
number: '4012888888881881',
|
161
|
+
exp_month: 3,
|
162
|
+
exp_year: 2015,
|
163
|
+
cvc: '314' })
|
164
|
+
|
165
|
+
subscription = StripePaymentGateway.apply_subscription \
|
166
|
+
subscription_id: "#{customer.id}:#{existing_subscription.id}",
|
167
|
+
plan_id: 'my other existing plan id',
|
168
|
+
amount: Money.new(200, 'USD'),
|
169
|
+
interval: 'week',
|
170
|
+
interval_count: 1,
|
171
|
+
plan_name: 'what you talking bout',
|
172
|
+
payment_token: new_credit_card_token
|
173
|
+
|
174
|
+
expect(subscription[:last_four_of_credit_card]).to eql '1881'
|
175
|
+
end
|
132
176
|
end
|
133
177
|
end
|
134
178
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: payola
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jfelchner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: stripe
|
@@ -30,42 +30,42 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.11'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
40
|
+
version: '1.11'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 3.0.
|
47
|
+
version: 3.0.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 3.0.
|
54
|
+
version: 3.0.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspectacular
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.47.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
68
|
+
version: 0.47.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: money
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,9 +150,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
150
|
version: '0'
|
151
151
|
requirements: []
|
152
152
|
rubyforge_project: payola
|
153
|
-
rubygems_version: 2.
|
153
|
+
rubygems_version: 2.3.0
|
154
154
|
signing_key:
|
155
155
|
specification_version: 4
|
156
156
|
summary: Abstraction layer on top of Stripe/Braintree, etc so we can get Payola'ed
|
157
157
|
test_files:
|
158
158
|
- spec/lib/payola/payment_gateways/stripe_payment_gateway_spec.rb
|
159
|
+
has_rdoc:
|