pay 2.7.1 → 3.0.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of pay might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +34 -715
- data/app/controllers/pay/webhooks/braintree_controller.rb +10 -3
- data/app/controllers/pay/webhooks/paddle_controller.rb +7 -8
- data/app/controllers/pay/webhooks/stripe_controller.rb +6 -3
- data/app/jobs/pay/{email_sync_job.rb → customer_sync_job.rb} +3 -4
- data/app/models/pay/application_record.rb +1 -5
- data/app/models/pay/charge.rb +54 -17
- data/app/models/pay/customer.rb +87 -0
- data/app/models/pay/merchant.rb +19 -0
- data/app/models/pay/payment_method.rb +41 -0
- data/app/models/pay/subscription.rb +42 -30
- data/app/models/pay/webhook.rb +36 -0
- data/app/views/layouts/pay/application.html.erb +2 -3
- data/app/views/pay/payments/show.html.erb +108 -81
- data/app/views/pay/user_mailer/receipt.html.erb +2 -2
- data/app/views/pay/user_mailer/refund.html.erb +2 -2
- data/config/locales/en.yml +1 -1
- data/db/migrate/1_create_pay_tables.rb +72 -0
- data/lib/generators/active_record/templates/billable_migration.rb +1 -0
- data/lib/pay/attributes.rb +74 -0
- data/lib/pay/billable/sync_customer.rb +30 -0
- data/lib/pay/braintree/billable.rb +133 -110
- data/lib/pay/braintree/payment_method.rb +42 -0
- data/lib/pay/braintree/subscription.rb +9 -12
- data/lib/pay/braintree/webhooks/subscription_canceled.rb +1 -1
- data/lib/pay/braintree/webhooks/subscription_charged_successfully.rb +4 -4
- data/lib/pay/braintree/webhooks/subscription_charged_unsuccessfully.rb +1 -1
- data/lib/pay/braintree/webhooks/subscription_expired.rb +1 -1
- data/lib/pay/braintree/webhooks/subscription_trial_ended.rb +2 -2
- data/lib/pay/braintree/webhooks/subscription_went_active.rb +1 -1
- data/lib/pay/braintree/webhooks/subscription_went_past_due.rb +1 -1
- data/lib/pay/braintree.rb +3 -2
- data/lib/pay/engine.rb +6 -1
- data/lib/pay/fake_processor/billable.rb +45 -21
- data/lib/pay/fake_processor/payment_method.rb +21 -0
- data/lib/pay/fake_processor/subscription.rb +11 -8
- data/lib/pay/fake_processor.rb +2 -1
- data/lib/pay/nano_id.rb +13 -0
- data/lib/pay/paddle/billable.rb +18 -48
- data/lib/pay/paddle/charge.rb +5 -5
- data/lib/pay/paddle/payment_method.rb +60 -0
- data/lib/pay/paddle/response.rb +0 -0
- data/lib/pay/paddle/subscription.rb +49 -8
- data/lib/pay/paddle/webhooks/subscription_cancelled.rb +6 -3
- data/lib/pay/paddle/webhooks/subscription_created.rb +1 -40
- data/lib/pay/paddle/webhooks/subscription_payment_refunded.rb +3 -3
- data/lib/pay/paddle/webhooks/subscription_payment_succeeded.rb +26 -28
- data/lib/pay/paddle/webhooks/subscription_updated.rb +2 -2
- data/lib/pay/paddle.rb +7 -3
- data/lib/pay/payment.rb +1 -1
- data/lib/pay/receipts.rb +35 -7
- data/lib/pay/stripe/billable.rb +75 -76
- data/lib/pay/stripe/charge.rb +44 -17
- data/lib/pay/stripe/merchant.rb +10 -10
- data/lib/pay/stripe/payment_method.rb +61 -0
- data/lib/pay/stripe/subscription.rb +55 -22
- data/lib/pay/stripe/webhooks/account_updated.rb +2 -3
- data/lib/pay/stripe/webhooks/charge_refunded.rb +1 -1
- data/lib/pay/stripe/webhooks/charge_succeeded.rb +2 -2
- data/lib/pay/stripe/webhooks/checkout_session_async_payment_succeeded.rb +3 -1
- data/lib/pay/stripe/webhooks/checkout_session_completed.rb +3 -1
- data/lib/pay/stripe/webhooks/customer_deleted.rb +7 -15
- data/lib/pay/stripe/webhooks/customer_updated.rb +10 -3
- data/lib/pay/stripe/webhooks/payment_action_required.rb +2 -2
- data/lib/pay/stripe/webhooks/payment_intent_succeeded.rb +6 -8
- data/lib/pay/stripe/webhooks/payment_method_attached.rb +15 -0
- data/lib/pay/stripe/webhooks/payment_method_detached.rb +12 -0
- data/lib/pay/stripe/webhooks/payment_method_updated.rb +10 -4
- data/lib/pay/stripe/webhooks/subscription_created.rb +1 -1
- data/lib/pay/stripe/webhooks/subscription_deleted.rb +2 -1
- data/lib/pay/stripe/webhooks/subscription_renewing.rb +12 -2
- data/lib/pay/stripe.rb +6 -3
- data/lib/pay/version.rb +1 -1
- data/lib/pay/webhooks/delegator.rb +4 -0
- data/lib/pay/webhooks/process_job.rb +9 -0
- data/lib/pay/webhooks.rb +1 -0
- data/lib/pay.rb +7 -78
- data/lib/tasks/pay.rake +20 -0
- metadata +23 -36
- data/app/models/pay.rb +0 -5
- data/db/migrate/20170205020145_create_pay_subscriptions.rb +0 -17
- data/db/migrate/20170727235816_create_pay_charges.rb +0 -18
- data/db/migrate/20190816015720_add_status_to_pay_subscriptions.rb +0 -14
- data/db/migrate/20200603134434_add_data_to_pay_models.rb +0 -6
- data/db/migrate/20210309004259_add_data_to_pay_billable.rb +0 -10
- data/db/migrate/20210406215234_add_currency_to_pay_charges.rb +0 -5
- data/db/migrate/20210406215506_add_application_fee_to_pay_models.rb +0 -7
- data/lib/pay/billable/sync_email.rb +0 -40
- data/lib/pay/billable.rb +0 -172
@@ -4,12 +4,19 @@ module Pay
|
|
4
4
|
class CustomerUpdated
|
5
5
|
def call(event)
|
6
6
|
object = event.data.object
|
7
|
-
|
7
|
+
pay_customer = Pay::Customer.find_by(processor: :stripe, processor_id: object.id)
|
8
8
|
|
9
9
|
# Couldn't find user, we can skip
|
10
|
-
return unless
|
10
|
+
return unless pay_customer.present?
|
11
11
|
|
12
|
-
|
12
|
+
# Sync default card
|
13
|
+
if (payment_method_id = pay_customer.customer.invoice_settings.default_payment_method)
|
14
|
+
Pay::Stripe::PaymentMethod.sync(payment_method_id, {stripe_account: event.account}.compact)
|
15
|
+
|
16
|
+
else
|
17
|
+
# No default payment method set
|
18
|
+
pay_customer.payment_methods.update_all(default: false)
|
19
|
+
end
|
13
20
|
end
|
14
21
|
end
|
15
22
|
end
|
@@ -8,9 +8,9 @@ module Pay
|
|
8
8
|
|
9
9
|
object = event.data.object
|
10
10
|
|
11
|
-
subscription = Pay.
|
11
|
+
subscription = Pay::Subscription.find_by_processor_and_id(:stripe, object.subscription)
|
12
12
|
return if subscription.nil?
|
13
|
-
billable = subscription.owner
|
13
|
+
billable = subscription.customer.owner
|
14
14
|
|
15
15
|
notify_user(billable, event.data.object.payment_intent, subscription)
|
16
16
|
end
|
@@ -2,17 +2,15 @@ module Pay
|
|
2
2
|
module Stripe
|
3
3
|
module Webhooks
|
4
4
|
class PaymentIntentSucceeded
|
5
|
+
# This webhook does NOT send notifications because stripe sends both
|
6
|
+
# `charge.succeeded` and `payment_intent.succeeded` events.
|
7
|
+
#
|
8
|
+
# We use `charge.succeeded` as the single place to send notifications
|
9
|
+
|
5
10
|
def call(event)
|
6
11
|
object = event.data.object
|
7
12
|
object.charges.data.each do |charge|
|
8
|
-
|
9
|
-
notify_user(pay_charge.owner, pay_charge) if pay_charge
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def notify_user(billable, charge)
|
14
|
-
if Pay.send_emails && charge.respond_to?(:receipt)
|
15
|
-
Pay::UserMailer.with(billable: billable, charge: charge).receipt.deliver_later
|
13
|
+
Pay::Stripe::Charge.sync(charge.id, stripe_account: event.try(:account))
|
16
14
|
end
|
17
15
|
end
|
18
16
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Pay
|
2
|
+
module Stripe
|
3
|
+
module Webhooks
|
4
|
+
class PaymentMethodAttached
|
5
|
+
def call(event)
|
6
|
+
object = event.data.object
|
7
|
+
pay_customer = Pay::Customer.find_by(processor: :stripe, processor_id: object.customer)
|
8
|
+
return unless pay_customer
|
9
|
+
|
10
|
+
pay_customer.save_payment_method(object, default: false)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -4,12 +4,18 @@ module Pay
|
|
4
4
|
class PaymentMethodUpdated
|
5
5
|
def call(event)
|
6
6
|
object = event.data.object
|
7
|
-
billable = Pay.find_billable(processor: :stripe, processor_id: object.customer)
|
8
7
|
|
9
|
-
|
10
|
-
|
8
|
+
if object.customer
|
9
|
+
pay_customer = Pay::Customer.find_by(processor: :stripe, processor_id: object.customer)
|
11
10
|
|
12
|
-
|
11
|
+
# Couldn't find user, we can skip
|
12
|
+
return unless pay_customer.present?
|
13
|
+
|
14
|
+
Pay::Stripe::PaymentMethod.sync(object.id, stripe_account: event.try(:account))
|
15
|
+
else
|
16
|
+
# If customer was removed, we should delete the payment method if it exists
|
17
|
+
Pay::PaymentMethod.find_by_processor_and_id(:stripe, object.id)&.destroy
|
18
|
+
end
|
13
19
|
end
|
14
20
|
end
|
15
21
|
end
|
@@ -3,7 +3,8 @@ module Pay
|
|
3
3
|
module Webhooks
|
4
4
|
class SubscriptionDeleted
|
5
5
|
def call(event)
|
6
|
-
|
6
|
+
# Canceled subscriptions are still accessible via the API, so we can sync their details
|
7
|
+
Pay::Stripe::Subscription.sync(event.data.object.id, stripe_account: event.try(:account))
|
7
8
|
end
|
8
9
|
end
|
9
10
|
end
|
@@ -2,13 +2,23 @@ module Pay
|
|
2
2
|
module Stripe
|
3
3
|
module Webhooks
|
4
4
|
class SubscriptionRenewing
|
5
|
+
# Handles `invoice.upcoming` webhook from Stripe
|
6
|
+
# Occurs X number of days before a subscription is scheduled to create an invoice that is automatically charged—where X is determined by your subscriptions settings. Note: The received Invoice object will not have an invoice ID.
|
7
|
+
|
5
8
|
def call(event)
|
6
9
|
# Event is of type "invoice" see:
|
7
10
|
# https://stripe.com/docs/api/invoices/object
|
8
|
-
subscription = Pay.
|
11
|
+
subscription = Pay::Subscription.find_by_processor_and_id(:stripe, event.data.object.subscription)
|
9
12
|
return unless subscription
|
10
13
|
|
11
|
-
|
14
|
+
# Stripe subscription items all have the same interval
|
15
|
+
price = event.data.object.lines.data.first.price
|
16
|
+
return unless price.type == "recurring"
|
17
|
+
|
18
|
+
interval = price.recurring.interval
|
19
|
+
return unless interval == "year"
|
20
|
+
|
21
|
+
notify_user(subscription.customer.owner, subscription, Time.zone.at(event.data.object.next_payment_attempt))
|
12
22
|
end
|
13
23
|
|
14
24
|
def notify_user(billable, subscription, date)
|
data/lib/pay/stripe.rb
CHANGED
@@ -2,9 +2,10 @@ module Pay
|
|
2
2
|
module Stripe
|
3
3
|
autoload :Billable, "pay/stripe/billable"
|
4
4
|
autoload :Charge, "pay/stripe/charge"
|
5
|
-
autoload :Subscription, "pay/stripe/subscription"
|
6
5
|
autoload :Error, "pay/stripe/error"
|
7
6
|
autoload :Merchant, "pay/stripe/merchant"
|
7
|
+
autoload :PaymentMethod, "pay/stripe/payment_method"
|
8
|
+
autoload :Subscription, "pay/stripe/subscription"
|
8
9
|
|
9
10
|
module Webhooks
|
10
11
|
autoload :AccountUpdated, "pay/stripe/webhooks/account_updated"
|
@@ -16,6 +17,8 @@ module Pay
|
|
16
17
|
autoload :CustomerUpdated, "pay/stripe/webhooks/customer_updated"
|
17
18
|
autoload :PaymentActionRequired, "pay/stripe/webhooks/payment_action_required"
|
18
19
|
autoload :PaymentIntentSucceeded, "pay/stripe/webhooks/payment_intent_succeeded"
|
20
|
+
autoload :PaymentMethodAttached, "pay/stripe/webhooks/payment_method_attached"
|
21
|
+
autoload :PaymentMethodDetached, "pay/stripe/webhooks/payment_method_detached"
|
19
22
|
autoload :PaymentMethodUpdated, "pay/stripe/webhooks/payment_method_updated"
|
20
23
|
autoload :SubscriptionCreated, "pay/stripe/webhooks/subscription_created"
|
21
24
|
autoload :SubscriptionDeleted, "pay/stripe/webhooks/subscription_deleted"
|
@@ -81,10 +84,10 @@ module Pay
|
|
81
84
|
events.subscribe "stripe.customer.deleted", Pay::Stripe::Webhooks::CustomerDeleted.new
|
82
85
|
|
83
86
|
# If a customer's payment source was deleted in Stripe, we should update as well
|
84
|
-
events.subscribe "stripe.payment_method.attached", Pay::Stripe::Webhooks::
|
87
|
+
events.subscribe "stripe.payment_method.attached", Pay::Stripe::Webhooks::PaymentMethodAttached.new
|
85
88
|
events.subscribe "stripe.payment_method.updated", Pay::Stripe::Webhooks::PaymentMethodUpdated.new
|
86
89
|
events.subscribe "stripe.payment_method.card_automatically_updated", Pay::Stripe::Webhooks::PaymentMethodUpdated.new
|
87
|
-
events.subscribe "stripe.payment_method.detached", Pay::Stripe::Webhooks::
|
90
|
+
events.subscribe "stripe.payment_method.detached", Pay::Stripe::Webhooks::PaymentMethodDetached.new
|
88
91
|
|
89
92
|
# If an account is updated in stripe, we should update it as well
|
90
93
|
events.subscribe "stripe.account.updated", Pay::Stripe::Webhooks::AccountUpdated.new
|
data/lib/pay/version.rb
CHANGED
@@ -35,6 +35,10 @@ module Pay
|
|
35
35
|
backend.instrument name_with_namespace(type), event
|
36
36
|
end
|
37
37
|
|
38
|
+
def listening?(type)
|
39
|
+
backend.notifier.listening? name_with_namespace(type)
|
40
|
+
end
|
41
|
+
|
38
42
|
# Strips down to event data only
|
39
43
|
class NotificationAdapter
|
40
44
|
def initialize(subscriber)
|
data/lib/pay/webhooks.rb
CHANGED
data/lib/pay.rb
CHANGED
@@ -4,9 +4,9 @@ require "pay/errors"
|
|
4
4
|
require "pay/adapter"
|
5
5
|
|
6
6
|
module Pay
|
7
|
-
autoload :
|
7
|
+
autoload :Attributes, "pay/attributes"
|
8
8
|
autoload :Env, "pay/env"
|
9
|
-
autoload :
|
9
|
+
autoload :NanoId, "pay/nano_id"
|
10
10
|
autoload :Payment, "pay/payment"
|
11
11
|
autoload :Receipts, "pay/receipts"
|
12
12
|
|
@@ -18,27 +18,15 @@ module Pay
|
|
18
18
|
|
19
19
|
autoload :Webhooks, "pay/webhooks"
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
mattr_accessor :braintree_gateway
|
21
|
+
module Billable
|
22
|
+
autoload :SyncCustomer, "pay/billable/sync_customer"
|
23
|
+
end
|
25
24
|
|
26
|
-
|
27
|
-
@@billable_table = @@billable_class.tableize
|
25
|
+
mattr_accessor :braintree_gateway
|
28
26
|
|
29
27
|
mattr_accessor :model_parent_class
|
30
28
|
@@model_parent_class = "ApplicationRecord"
|
31
29
|
|
32
|
-
mattr_accessor :chargeable_class
|
33
|
-
mattr_accessor :chargeable_table
|
34
|
-
@@chargeable_class = "Pay::Charge"
|
35
|
-
@@chargeable_table = "pay_charges"
|
36
|
-
|
37
|
-
mattr_accessor :subscription_class
|
38
|
-
mattr_accessor :subscription_table
|
39
|
-
@@subscription_class = "Pay::Subscription"
|
40
|
-
@@subscription_table = "pay_subscriptions"
|
41
|
-
|
42
30
|
# Business details for receipts
|
43
31
|
mattr_accessor :application_name
|
44
32
|
mattr_accessor :business_address
|
@@ -54,6 +42,7 @@ module Pay
|
|
54
42
|
|
55
43
|
mattr_accessor :default_product_name
|
56
44
|
@@default_product_name = "default"
|
45
|
+
|
57
46
|
mattr_accessor :default_plan_name
|
58
47
|
@@default_plan_name = "default"
|
59
48
|
|
@@ -64,66 +53,6 @@ module Pay
|
|
64
53
|
yield self
|
65
54
|
end
|
66
55
|
|
67
|
-
def self.billable_models
|
68
|
-
Pay::Billable.includers
|
69
|
-
end
|
70
|
-
|
71
|
-
def self.merchant_models
|
72
|
-
Pay::Merchant.includers
|
73
|
-
end
|
74
|
-
|
75
|
-
def self.find_merchant(account_key, account_value)
|
76
|
-
merchant_models.each do |model|
|
77
|
-
case Pay::Adapter.current_adapter
|
78
|
-
when "postgresql"
|
79
|
-
return model.find_by("pay_data @> ?", {account_key.to_sym => account_value}.to_json)
|
80
|
-
when "mysql2"
|
81
|
-
return model.find_by("JSON_CONTAINS(pay_data, ?)", {account_key.to_sym => account_value}.to_json)
|
82
|
-
when "sqlite3"
|
83
|
-
return model.find_by("json_extract(pay_data, ?) =?", "$.#{account_key}", account_value)
|
84
|
-
else
|
85
|
-
model.find_by(pay_data: {account_key.to_sym => account_value})
|
86
|
-
end
|
87
|
-
end
|
88
|
-
nil
|
89
|
-
end
|
90
|
-
|
91
|
-
def self.find_billable(processor:, processor_id:)
|
92
|
-
billable_models.each do |model|
|
93
|
-
if (record = model.find_by(processor: processor, processor_id: processor_id))
|
94
|
-
return record
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
nil
|
99
|
-
end
|
100
|
-
|
101
|
-
def self.user_model
|
102
|
-
ActiveSupport::Deprecation.warn("Pay.user_model is deprecated and will be removed in v3. Instead, use `Pay.billable_models` now to support more than one billable model.")
|
103
|
-
|
104
|
-
if Rails.application.config.cache_classes
|
105
|
-
@@user_model ||= billable_class.constantize
|
106
|
-
else
|
107
|
-
billable_class.constantize
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
def self.charge_model
|
112
|
-
if Rails.application.config.cache_classes
|
113
|
-
@@charge_model ||= chargeable_class.constantize
|
114
|
-
else
|
115
|
-
chargeable_class.constantize
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
def self.subscription_model
|
120
|
-
if Rails.application.config.cache_classes
|
121
|
-
@@subscription_model ||= subscription_class.constantize
|
122
|
-
else
|
123
|
-
subscription_class.constantize
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
56
|
def self.receipts_supported?
|
128
57
|
charge_model.respond_to?(:receipt) &&
|
129
58
|
application_name.present? &&
|
data/lib/tasks/pay.rake
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
namespace :pay do
|
2
|
+
namespace :payment_methods do
|
3
|
+
desc "Sync default payment methods for Pay::Customers"
|
4
|
+
task sync_default: :environment do
|
5
|
+
Pay::Customer.find_each do |pay_customer|
|
6
|
+
puts "Syncing Pay::Customer ##{pay_customer.id}: #{pay_customer.processor.titleize} #{pay_customer.processor_id}"
|
7
|
+
case pay_customer.processor
|
8
|
+
when "braintree"
|
9
|
+
payment_method = pay_customer.customer.payment_methods.find(&:default?)
|
10
|
+
Pay::Braintree::PaymentMethod.sync(payment_method.token, object: payment_method) if payment_method
|
11
|
+
when "stripe"
|
12
|
+
payment_method_id = pay_customer.customer.invoice_settings.default_payment_method
|
13
|
+
Pay::Stripe::PaymentMethod.sync(payment_method_id) if payment_method_id
|
14
|
+
when "paddle"
|
15
|
+
Pay::Paddle::PaymentMethod.sync(pay_customer)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Charnes
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-
|
12
|
+
date: 2021-09-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -17,34 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 6.0.0
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: minitest-rails
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - ">="
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '6'
|
35
|
-
- - "<"
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '7.0'
|
38
|
-
type: :development
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
requirements:
|
42
|
-
- - ">="
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version: '6'
|
45
|
-
- - "<"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '7.0'
|
27
|
+
version: 6.0.0
|
48
28
|
- !ruby/object:Gem::Dependency
|
49
29
|
name: mocha
|
50
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,13 +102,16 @@ files:
|
|
122
102
|
- app/controllers/pay/webhooks/stripe_controller.rb
|
123
103
|
- app/helpers/pay/application_helper.rb
|
124
104
|
- app/jobs/pay/application_job.rb
|
125
|
-
- app/jobs/pay/
|
105
|
+
- app/jobs/pay/customer_sync_job.rb
|
126
106
|
- app/mailers/pay/application_mailer.rb
|
127
107
|
- app/mailers/pay/user_mailer.rb
|
128
|
-
- app/models/pay.rb
|
129
108
|
- app/models/pay/application_record.rb
|
130
109
|
- app/models/pay/charge.rb
|
110
|
+
- app/models/pay/customer.rb
|
111
|
+
- app/models/pay/merchant.rb
|
112
|
+
- app/models/pay/payment_method.rb
|
131
113
|
- app/models/pay/subscription.rb
|
114
|
+
- app/models/pay/webhook.rb
|
132
115
|
- app/views/layouts/pay/application.html.erb
|
133
116
|
- app/views/pay/payments/show.html.erb
|
134
117
|
- app/views/pay/stripe/_checkout_button.html.erb
|
@@ -138,13 +121,7 @@ files:
|
|
138
121
|
- app/views/pay/user_mailer/subscription_renewing.html.erb
|
139
122
|
- config/locales/en.yml
|
140
123
|
- config/routes.rb
|
141
|
-
- db/migrate/
|
142
|
-
- db/migrate/20170727235816_create_pay_charges.rb
|
143
|
-
- db/migrate/20190816015720_add_status_to_pay_subscriptions.rb
|
144
|
-
- db/migrate/20200603134434_add_data_to_pay_models.rb
|
145
|
-
- db/migrate/20210309004259_add_data_to_pay_billable.rb
|
146
|
-
- db/migrate/20210406215234_add_currency_to_pay_charges.rb
|
147
|
-
- db/migrate/20210406215506_add_application_fee_to_pay_models.rb
|
124
|
+
- db/migrate/1_create_pay_tables.rb
|
148
125
|
- lib/generators/active_record/billable_generator.rb
|
149
126
|
- lib/generators/active_record/merchant_generator.rb
|
150
127
|
- lib/generators/active_record/templates/billable_migration.rb
|
@@ -156,13 +133,14 @@ files:
|
|
156
133
|
- lib/generators/pay/views_generator.rb
|
157
134
|
- lib/pay.rb
|
158
135
|
- lib/pay/adapter.rb
|
159
|
-
- lib/pay/
|
160
|
-
- lib/pay/billable/
|
136
|
+
- lib/pay/attributes.rb
|
137
|
+
- lib/pay/billable/sync_customer.rb
|
161
138
|
- lib/pay/braintree.rb
|
162
139
|
- lib/pay/braintree/authorization_error.rb
|
163
140
|
- lib/pay/braintree/billable.rb
|
164
141
|
- lib/pay/braintree/charge.rb
|
165
142
|
- lib/pay/braintree/error.rb
|
143
|
+
- lib/pay/braintree/payment_method.rb
|
166
144
|
- lib/pay/braintree/subscription.rb
|
167
145
|
- lib/pay/braintree/webhooks/subscription_canceled.rb
|
168
146
|
- lib/pay/braintree/webhooks/subscription_charged_successfully.rb
|
@@ -178,12 +156,16 @@ files:
|
|
178
156
|
- lib/pay/fake_processor/billable.rb
|
179
157
|
- lib/pay/fake_processor/charge.rb
|
180
158
|
- lib/pay/fake_processor/error.rb
|
159
|
+
- lib/pay/fake_processor/payment_method.rb
|
181
160
|
- lib/pay/fake_processor/subscription.rb
|
182
161
|
- lib/pay/merchant.rb
|
162
|
+
- lib/pay/nano_id.rb
|
183
163
|
- lib/pay/paddle.rb
|
184
164
|
- lib/pay/paddle/billable.rb
|
185
165
|
- lib/pay/paddle/charge.rb
|
186
166
|
- lib/pay/paddle/error.rb
|
167
|
+
- lib/pay/paddle/payment_method.rb
|
168
|
+
- lib/pay/paddle/response.rb
|
187
169
|
- lib/pay/paddle/subscription.rb
|
188
170
|
- lib/pay/paddle/webhooks/signature_verifier.rb
|
189
171
|
- lib/pay/paddle/webhooks/subscription_cancelled.rb
|
@@ -198,6 +180,7 @@ files:
|
|
198
180
|
- lib/pay/stripe/charge.rb
|
199
181
|
- lib/pay/stripe/error.rb
|
200
182
|
- lib/pay/stripe/merchant.rb
|
183
|
+
- lib/pay/stripe/payment_method.rb
|
201
184
|
- lib/pay/stripe/subscription.rb
|
202
185
|
- lib/pay/stripe/webhooks/account_updated.rb
|
203
186
|
- lib/pay/stripe/webhooks/charge_refunded.rb
|
@@ -208,6 +191,8 @@ files:
|
|
208
191
|
- lib/pay/stripe/webhooks/customer_updated.rb
|
209
192
|
- lib/pay/stripe/webhooks/payment_action_required.rb
|
210
193
|
- lib/pay/stripe/webhooks/payment_intent_succeeded.rb
|
194
|
+
- lib/pay/stripe/webhooks/payment_method_attached.rb
|
195
|
+
- lib/pay/stripe/webhooks/payment_method_detached.rb
|
211
196
|
- lib/pay/stripe/webhooks/payment_method_updated.rb
|
212
197
|
- lib/pay/stripe/webhooks/subscription_created.rb
|
213
198
|
- lib/pay/stripe/webhooks/subscription_deleted.rb
|
@@ -216,6 +201,8 @@ files:
|
|
216
201
|
- lib/pay/version.rb
|
217
202
|
- lib/pay/webhooks.rb
|
218
203
|
- lib/pay/webhooks/delegator.rb
|
204
|
+
- lib/pay/webhooks/process_job.rb
|
205
|
+
- lib/tasks/pay.rake
|
219
206
|
homepage: https://github.com/pay-rails/pay
|
220
207
|
licenses:
|
221
208
|
- MIT
|
@@ -235,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
235
222
|
- !ruby/object:Gem::Version
|
236
223
|
version: '0'
|
237
224
|
requirements: []
|
238
|
-
rubygems_version: 3.2.
|
225
|
+
rubygems_version: 3.2.22
|
239
226
|
signing_key:
|
240
227
|
specification_version: 4
|
241
228
|
summary: Payments engine for Ruby on Rails
|