pay 6.7.1 → 6.8.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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de3a99204ee0e081f59774da0369b8e820a8d1fb33d810871dbc62ec009012c1
|
4
|
+
data.tar.gz: 19bbcd3c80230b270b2fc60338d410d6ceb37e2dc9466d1674f8552ecbdf46e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f504f26b84e856d1fd241e61537f1203539b76f58f9af69a768316e97e710ff24b5a79ac2179a1c335d5691283dc9e097476e696b1551ec212046f8dd97f026
|
7
|
+
data.tar.gz: 87e4ae3cc89868ed3faa76e3a73b0aaba568c87d33e7c1c003619c4fc69887edcce7fab67f3c40cb57924423a4f9c0b2328cebf1491164ae975c79f586fa7cb9
|
@@ -1,7 +1,9 @@
|
|
1
1
|
class CreatePayTables < ActiveRecord::Migration[6.0]
|
2
2
|
def change
|
3
|
-
|
4
|
-
|
3
|
+
primary_key_type, foreign_key_type = primary_and_foreign_key_types
|
4
|
+
|
5
|
+
create_table :pay_customers, id: primary_key_type do |t|
|
6
|
+
t.belongs_to :owner, polymorphic: true, index: false, type: foreign_key_type
|
5
7
|
t.string :processor, null: false
|
6
8
|
t.string :processor_id
|
7
9
|
t.boolean :default
|
@@ -12,8 +14,8 @@ class CreatePayTables < ActiveRecord::Migration[6.0]
|
|
12
14
|
add_index :pay_customers, [:owner_type, :owner_id, :deleted_at, :default], name: :pay_customer_owner_index
|
13
15
|
add_index :pay_customers, [:processor, :processor_id], unique: true
|
14
16
|
|
15
|
-
create_table :pay_merchants do |t|
|
16
|
-
t.belongs_to :owner, polymorphic: true, index: false
|
17
|
+
create_table :pay_merchants, id: primary_key_type do |t|
|
18
|
+
t.belongs_to :owner, polymorphic: true, index: false, type: foreign_key_type
|
17
19
|
t.string :processor, null: false
|
18
20
|
t.string :processor_id
|
19
21
|
t.boolean :default
|
@@ -22,8 +24,8 @@ class CreatePayTables < ActiveRecord::Migration[6.0]
|
|
22
24
|
end
|
23
25
|
add_index :pay_merchants, [:owner_type, :owner_id, :processor]
|
24
26
|
|
25
|
-
create_table :pay_payment_methods do |t|
|
26
|
-
t.belongs_to :customer, foreign_key: {to_table: :pay_customers}, null: false, index: false
|
27
|
+
create_table :pay_payment_methods, id: primary_key_type do |t|
|
28
|
+
t.belongs_to :customer, foreign_key: {to_table: :pay_customers}, null: false, index: false, type: foreign_key_type
|
27
29
|
t.string :processor_id, null: false
|
28
30
|
t.boolean :default
|
29
31
|
t.string :type
|
@@ -32,8 +34,8 @@ class CreatePayTables < ActiveRecord::Migration[6.0]
|
|
32
34
|
end
|
33
35
|
add_index :pay_payment_methods, [:customer_id, :processor_id], unique: true
|
34
36
|
|
35
|
-
create_table :pay_subscriptions do |t|
|
36
|
-
t.belongs_to :customer, foreign_key: {to_table: :pay_customers}, null: false, index: false
|
37
|
+
create_table :pay_subscriptions, id: primary_key_type do |t|
|
38
|
+
t.belongs_to :customer, foreign_key: {to_table: :pay_customers}, null: false, index: false, type: foreign_key_type
|
37
39
|
t.string :name, null: false
|
38
40
|
t.string :processor_id, null: false
|
39
41
|
t.string :processor_plan, null: false
|
@@ -56,9 +58,9 @@ class CreatePayTables < ActiveRecord::Migration[6.0]
|
|
56
58
|
add_index :pay_subscriptions, [:metered]
|
57
59
|
add_index :pay_subscriptions, [:pause_starts_at]
|
58
60
|
|
59
|
-
create_table :pay_charges do |t|
|
60
|
-
t.belongs_to :customer, foreign_key: {to_table: :pay_customers}, null: false, index: false
|
61
|
-
t.belongs_to :subscription, foreign_key: {to_table: :pay_subscriptions}, null: true
|
61
|
+
create_table :pay_charges, id: primary_key_type do |t|
|
62
|
+
t.belongs_to :customer, foreign_key: {to_table: :pay_customers}, null: false, index: false, type: foreign_key_type
|
63
|
+
t.belongs_to :subscription, foreign_key: {to_table: :pay_subscriptions}, null: true, type: foreign_key_type
|
62
64
|
t.string :processor_id, null: false
|
63
65
|
t.integer :amount, null: false
|
64
66
|
t.string :currency
|
@@ -70,11 +72,21 @@ class CreatePayTables < ActiveRecord::Migration[6.0]
|
|
70
72
|
end
|
71
73
|
add_index :pay_charges, [:customer_id, :processor_id], unique: true
|
72
74
|
|
73
|
-
create_table :pay_webhooks do |t|
|
75
|
+
create_table :pay_webhooks, id: primary_key_type do |t|
|
74
76
|
t.string :processor
|
75
77
|
t.string :event_type
|
76
78
|
t.public_send Pay::Adapter.json_column_type, :event
|
77
79
|
t.timestamps
|
78
80
|
end
|
79
81
|
end
|
82
|
+
|
83
|
+
private
|
84
|
+
|
85
|
+
def primary_and_foreign_key_types
|
86
|
+
config = Rails.configuration.generators
|
87
|
+
setting = config.options[config.orm][:primary_key_type]
|
88
|
+
primary_key_type = setting || :primary_key
|
89
|
+
foreign_key_type = setting || :bigint
|
90
|
+
[primary_key_type, foreign_key_type]
|
91
|
+
end
|
80
92
|
end
|
@@ -5,11 +5,11 @@ module Pay
|
|
5
5
|
module Webhooks
|
6
6
|
class SubscriptionChargedUnsuccessfully
|
7
7
|
def call(event)
|
8
|
-
subscription = event.subscription
|
9
|
-
return if subscription.nil?
|
8
|
+
# subscription = event.subscription
|
9
|
+
# return if subscription.nil?
|
10
10
|
|
11
|
-
pay_subscription = Pay::Subscription.find_by_processor_and_id(:braintree, subscription.id)
|
12
|
-
return unless pay_subscription.present?
|
11
|
+
# pay_subscription = Pay::Subscription.find_by_processor_and_id(:braintree, subscription.id)
|
12
|
+
# return unless pay_subscription.present?
|
13
13
|
|
14
14
|
# pay_customer = pay_subscription.customer
|
15
15
|
# pay_charge = Pay::Braintree::Billable.new(pay_customer).save_transaction(subscription.transactions.first)
|
data/lib/pay/stripe/billable.rb
CHANGED
@@ -77,20 +77,17 @@ module Pay
|
|
77
77
|
)
|
78
78
|
end
|
79
79
|
|
80
|
+
# Charges an amount to the customer's default payment method
|
80
81
|
def charge(amount, options = {})
|
81
82
|
add_payment_method(payment_method_token, default: true) if payment_method_token?
|
82
83
|
|
83
84
|
payment_method = pay_customer.default_payment_method
|
84
85
|
args = {
|
85
|
-
amount: amount,
|
86
86
|
confirm: true,
|
87
|
-
currency: "usd",
|
88
|
-
customer: processor_id,
|
89
|
-
expand: ["latest_charge.refunds"],
|
90
87
|
payment_method: payment_method&.processor_id
|
91
88
|
}.merge(options)
|
92
89
|
|
93
|
-
payment_intent =
|
90
|
+
payment_intent = create_payment_intent(amount, args)
|
94
91
|
Pay::Payment.new(payment_intent).validate
|
95
92
|
|
96
93
|
charge = payment_intent.latest_charge
|
@@ -99,6 +96,24 @@ module Pay
|
|
99
96
|
raise Pay::Stripe::Error, e
|
100
97
|
end
|
101
98
|
|
99
|
+
# Creates and returns a Stripe::PaymentIntent
|
100
|
+
def create_payment_intent(amount, options = {})
|
101
|
+
args = {
|
102
|
+
amount: amount,
|
103
|
+
currency: "usd",
|
104
|
+
customer: processor_id,
|
105
|
+
expand: ["latest_charge.refunds"],
|
106
|
+
return_url: root_url
|
107
|
+
}.merge(options)
|
108
|
+
|
109
|
+
::Stripe::PaymentIntent.create(args, stripe_options)
|
110
|
+
end
|
111
|
+
|
112
|
+
# Used for creating Stripe Terminal charges
|
113
|
+
def terminal_charge(amount, options = {})
|
114
|
+
create_payment_intent(amount, options.merge(payment_method_types: ["card_present"], capture_method: "manual"))
|
115
|
+
end
|
116
|
+
|
102
117
|
def subscribe(name: Pay.default_product_name, plan: Pay.default_plan_name, **options)
|
103
118
|
quantity = options.delete(:quantity)
|
104
119
|
opts = {
|
@@ -209,12 +224,15 @@ module Pay
|
|
209
224
|
customer unless processor_id?
|
210
225
|
args = {
|
211
226
|
customer: processor_id,
|
212
|
-
mode: "payment"
|
213
|
-
# These placeholder URLs will be replaced in a following step.
|
214
|
-
success_url: merge_session_id_param(options.delete(:success_url) || root_url),
|
215
|
-
cancel_url: merge_session_id_param(options.delete(:cancel_url) || root_url)
|
227
|
+
mode: "payment"
|
216
228
|
}
|
217
229
|
|
230
|
+
# Embedded checkouts cannot use URLs
|
231
|
+
if options[:ui_mode] != "embedded"
|
232
|
+
args[:success_url] = merge_session_id_param(options.delete(:success_url) || root_url)
|
233
|
+
args[:cancel_url] = merge_session_id_param(options.delete(:cancel_url) || root_url)
|
234
|
+
end
|
235
|
+
|
218
236
|
# Line items are optional
|
219
237
|
if (line_items = options.delete(:line_items))
|
220
238
|
quantity = options.delete(:quantity) || 1
|
data/lib/pay/stripe.rb
CHANGED
@@ -30,6 +30,8 @@ module Pay
|
|
30
30
|
|
31
31
|
extend Env
|
32
32
|
|
33
|
+
REQUIRED_VERSION = "~> 9"
|
34
|
+
|
33
35
|
# A list of database model names that include Pay
|
34
36
|
# Used for safely looking up models with client_reference_id
|
35
37
|
mattr_accessor :model_names, default: Set.new
|
@@ -37,12 +39,12 @@ module Pay
|
|
37
39
|
def self.enabled?
|
38
40
|
return false unless Pay.enabled_processors.include?(:stripe) && defined?(::Stripe)
|
39
41
|
|
40
|
-
Pay::Engine.version_matches?(required:
|
42
|
+
Pay::Engine.version_matches?(required: REQUIRED_VERSION, current: ::Stripe::VERSION) || (raise "[Pay] stripe gem must be version #{REQUIRED_VERSION}")
|
41
43
|
end
|
42
44
|
|
43
45
|
def self.setup
|
44
46
|
::Stripe.api_key = private_key
|
45
|
-
::Stripe.api_version
|
47
|
+
::Stripe.api_version ||= "2023-08-16"
|
46
48
|
|
47
49
|
# Used by Stripe to identify Pay for support
|
48
50
|
::Stripe.set_app_info("PayRails", partner_id: "pp_partner_IqhY0UExnJYLxg", version: Pay::VERSION, url: "https://github.com/pay-rails/pay")
|
data/lib/pay/version.rb
CHANGED
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: 6.
|
4
|
+
version: 6.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Charnes
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2023-
|
13
|
+
date: 2023-08-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -168,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
168
|
- !ruby/object:Gem::Version
|
169
169
|
version: '0'
|
170
170
|
requirements: []
|
171
|
-
rubygems_version: 3.4.
|
171
|
+
rubygems_version: 3.4.19
|
172
172
|
signing_key:
|
173
173
|
specification_version: 4
|
174
174
|
summary: Payments engine for Ruby on Rails
|