effective_orders 6.13.3 → 6.14.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 +4 -4
- data/app/controllers/effective/providers/deluxe_delayed.rb +1 -0
- data/app/mailers/effective/orders_mailer.rb +21 -0
- data/app/models/effective/deluxe_api.rb +24 -2
- data/app/models/effective/order.rb +33 -1
- data/app/views/effective/orders_mailer/order_declined_to_admin.html.haml +2 -0
- data/app/views/effective/orders_mailer/order_declined_to_buyer.html.haml +2 -0
- data/config/effective_orders.rb +2 -1
- data/lib/effective_orders/version.rb +1 -1
- data/lib/effective_orders.rb +3 -1
- data/lib/generators/templates/effective_orders_mailer_preview.rb +8 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cdbb9b1f68ae5470c0d64b4e7d27ca32cdcd21c99ce4cdcf36cd06182852bf85
|
4
|
+
data.tar.gz: 91732e8679f53cc672cdcf888e79680882cf83fe92a955d95e8a299719eb18ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 974902ddc3095ec659b94e6af5ad8c45ae29ca52f1fa790cf6f787f22ecbc48d2bf1127c50ca0b9d396471700a928c30c734d8dd812b75a204d6ff1e4cc6f572
|
7
|
+
data.tar.gz: 1b02ad24cb46a6377c68a68dbe705e23a201860f4696ca1122237c5d228e01ee72951a05dd74e4ebda2cc92c41fc2c01e2e1bf7f62881fc51cb58f46abfa543c
|
@@ -23,6 +23,7 @@ module Effective
|
|
23
23
|
end
|
24
24
|
|
25
25
|
# Decode the base64 encoded JSON object into a Hash
|
26
|
+
# {"type"=>"Token", "status"=>"success", "data"=>{"token"=>"1983661243624242", "nameOnCard"=>"CardHolder", "expDate"=>"12/24", "maskedPan"=>"424242******4242", "cardType"=>"Visa"}}
|
26
27
|
payment_intent = api.decode_payment_intent_payload(payment_intent_payload)
|
27
28
|
card_info = api.card_info(payment_intent)
|
28
29
|
|
@@ -25,6 +25,27 @@ module Effective
|
|
25
25
|
mail(to: @order.emails.first, cc: @order.cc.presence, subject: subject, **headers)
|
26
26
|
end
|
27
27
|
|
28
|
+
def order_declined_to_admin(resource, opts = {})
|
29
|
+
raise('expected an Effective::Order') unless resource.kind_of?(Effective::Order)
|
30
|
+
|
31
|
+
@order = resource
|
32
|
+
subject = subject_for(__method__, "Declined Order: ##{@order.to_param}", resource, opts)
|
33
|
+
headers = headers_for(resource, opts)
|
34
|
+
|
35
|
+
mail(to: mailer_admin, subject: subject, **headers)
|
36
|
+
end
|
37
|
+
|
38
|
+
def order_declined_to_buyer(resource, opts = {})
|
39
|
+
raise('expected an Effective::Order') unless resource.kind_of?(Effective::Order)
|
40
|
+
|
41
|
+
@order = resource
|
42
|
+
subject = subject_for(__method__, "Declined Order: ##{@order.to_param}", resource, opts)
|
43
|
+
headers = headers_for(resource, opts)
|
44
|
+
|
45
|
+
# Just to the purchaser. Not everyone.
|
46
|
+
mail(to: @order.emails.first, cc: @order.cc.presence, subject: subject, **headers)
|
47
|
+
end
|
48
|
+
|
28
49
|
# This is sent when an admin creates a new order or /admin/orders/new
|
29
50
|
# Or when Pay by Cheque or Pay by Phone (deferred payments)
|
30
51
|
# Or uses the order action Send Payment Request
|
@@ -136,6 +136,7 @@ module Effective
|
|
136
136
|
raise('expected a delayed order') unless order.delayed?
|
137
137
|
raise('expected a deferred order') unless order.deferred?
|
138
138
|
raise('expected delayed payment intent') unless order.delayed_payment_intent.present?
|
139
|
+
raise('expected a delayed_ready_to_purchase? order') unless order.delayed_ready_to_purchase?
|
139
140
|
|
140
141
|
order.update_columns(delayed_payment_purchase_ran_at: now, delayed_payment_purchase_result: nil)
|
141
142
|
|
@@ -157,8 +158,8 @@ module Effective
|
|
157
158
|
|
158
159
|
puts "Successfully purchased order #{order.id}"
|
159
160
|
else
|
160
|
-
order.assign_attributes(delayed_payment_purchase_result: "failed with message: #{Array(payment['responseMessage']).to_sentence.presence || 'none'}
|
161
|
-
order.decline!(payment: payment, provider: provider, card: card)
|
161
|
+
order.assign_attributes(delayed_payment_purchase_result: "failed with message: #{Array(payment['responseMessage']).to_sentence.presence || 'none'}")
|
162
|
+
order.decline!(payment: payment, provider: provider, card: card, email: true)
|
162
163
|
|
163
164
|
puts "Failed to purchase order #{order.id} #{order.delayed_payment_purchase_result}"
|
164
165
|
end
|
@@ -178,6 +179,27 @@ module Effective
|
|
178
179
|
true
|
179
180
|
end
|
180
181
|
|
182
|
+
# This is only used for testing
|
183
|
+
def generate_payment_intent(card: nil, expiry: nil, cvv: nil, encode: false)
|
184
|
+
card ||= '4242 4242 4242 4242'
|
185
|
+
expiry ||= "12/#{Time.zone.now.year - 1998}"
|
186
|
+
cvv ||= '123'
|
187
|
+
|
188
|
+
card_info = { expiry: expiry, cvv: cvv }
|
189
|
+
params = { paymentMethod: { card: { card: card.gsub(" ", '') }.merge(card_info) } }
|
190
|
+
|
191
|
+
response = post('/paymentmethods/token', params: params)
|
192
|
+
|
193
|
+
# Like the delayed_purchase form gives us
|
194
|
+
retval = {
|
195
|
+
type: "Token",
|
196
|
+
status: "success",
|
197
|
+
data: { expDate: card_info[:expiry], cardType: 'Visa', token: response.fetch('token') }
|
198
|
+
}
|
199
|
+
|
200
|
+
encode ? Base64.encode64(retval.to_json) : retval
|
201
|
+
end
|
202
|
+
|
181
203
|
protected
|
182
204
|
|
183
205
|
def create_payment_params(order, payment_intent)
|
@@ -602,6 +602,16 @@ module Effective
|
|
602
602
|
EffectiveOrders.send_order_receipt_to_buyer
|
603
603
|
end
|
604
604
|
|
605
|
+
def send_order_declined_to_admin?
|
606
|
+
return false if free? && !EffectiveOrders.send_order_receipts_when_free
|
607
|
+
EffectiveOrders.send_order_declined_to_admin
|
608
|
+
end
|
609
|
+
|
610
|
+
def send_order_declined_to_buyer?
|
611
|
+
return false if free? && !EffectiveOrders.send_order_receipts_when_free
|
612
|
+
EffectiveOrders.send_order_declined_to_buyer
|
613
|
+
end
|
614
|
+
|
605
615
|
def send_payment_request_to_buyer?
|
606
616
|
return false if free? && !EffectiveOrders.send_order_receipts_when_free
|
607
617
|
return false if refund?
|
@@ -803,7 +813,8 @@ module Effective
|
|
803
813
|
true
|
804
814
|
end
|
805
815
|
|
806
|
-
|
816
|
+
# We only turn on the email when done by a delayed payment or from a rake script.
|
817
|
+
def decline!(payment: 'none', provider: 'none', card: 'none', validate: true, email: false)
|
807
818
|
return false if declined?
|
808
819
|
raise('order already purchased') if purchased?
|
809
820
|
|
@@ -838,9 +849,17 @@ module Effective
|
|
838
849
|
|
839
850
|
raise "Failed to decline order: #{error || errors.full_messages.to_sentence}" unless error.nil?
|
840
851
|
|
852
|
+
send_declined_notifications! if email
|
853
|
+
|
841
854
|
true
|
842
855
|
end
|
843
856
|
|
857
|
+
def declined_reason
|
858
|
+
return unless declined?
|
859
|
+
|
860
|
+
delayed_payment_purchase_result.presence || 'credit card declined'
|
861
|
+
end
|
862
|
+
|
844
863
|
def void!
|
845
864
|
raise('already voided') if voided?
|
846
865
|
voided!(skip_buyer_validations: true)
|
@@ -876,6 +895,19 @@ module Effective
|
|
876
895
|
send_refund_notification! if send_refund_notification_to_admin?
|
877
896
|
end
|
878
897
|
|
898
|
+
def send_declined_notifications!
|
899
|
+
send_order_declined_to_admin! if send_order_declined_to_admin?
|
900
|
+
send_order_declined_to_buyer! if send_order_declined_to_buyer?
|
901
|
+
end
|
902
|
+
|
903
|
+
def send_order_declined_to_admin!
|
904
|
+
EffectiveOrders.send_email(:order_declined_to_admin, self) if declined?
|
905
|
+
end
|
906
|
+
|
907
|
+
def send_order_declined_to_buyer!
|
908
|
+
EffectiveOrders.send_email(:order_declined_to_buyer, self) if declined?
|
909
|
+
end
|
910
|
+
|
879
911
|
def send_order_receipt_to_admin!
|
880
912
|
EffectiveOrders.send_email(:order_receipt_to_admin, self) if purchased?
|
881
913
|
end
|
data/config/effective_orders.rb
CHANGED
@@ -94,9 +94,10 @@ EffectiveOrders.setup do |config|
|
|
94
94
|
# Email settings
|
95
95
|
config.send_order_receipt_to_admin = true
|
96
96
|
config.send_order_receipt_to_buyer = true
|
97
|
+
config.send_order_declined_to_admin = false
|
98
|
+
config.send_order_declined_to_buyer = false
|
97
99
|
config.send_payment_request_to_buyer = true
|
98
100
|
config.send_pending_order_invoice_to_buyer = true
|
99
|
-
|
100
101
|
config.send_refund_notification_to_admin = true
|
101
102
|
|
102
103
|
config.send_order_receipts_when_mark_as_paid = true
|
data/lib/effective_orders.rb
CHANGED
@@ -32,7 +32,9 @@ module EffectiveOrders
|
|
32
32
|
:mailer, :parent_mailer, :deliver_method, :mailer_layout, :mailer_sender, :mailer_admin, :mailer_subject,
|
33
33
|
|
34
34
|
# Emails
|
35
|
-
:send_order_receipt_to_admin, :send_order_receipt_to_buyer,
|
35
|
+
:send_order_receipt_to_admin, :send_order_receipt_to_buyer,
|
36
|
+
:send_order_declined_to_admin, :send_order_declined_to_buyer,
|
37
|
+
:send_payment_request_to_buyer, :send_pending_order_invoice_to_buyer,
|
36
38
|
:send_order_receipts_when_mark_as_paid, :send_order_receipts_when_free,
|
37
39
|
:send_subscription_events,
|
38
40
|
:send_subscription_trialing, :send_subscription_trial_expired,
|
@@ -11,6 +11,14 @@ class EffectiveOrdersMailerPreview < ActionMailer::Preview
|
|
11
11
|
EffectiveOrders.mailer_klass.order_receipt_to_buyer(build_preview_order)
|
12
12
|
end
|
13
13
|
|
14
|
+
def order_declined_to_admin
|
15
|
+
Effective::OrdersMailer.order_declined_to_admin(build_preview_order)
|
16
|
+
end
|
17
|
+
|
18
|
+
def order_declined_to_buyer
|
19
|
+
Effective::OrdersMailer.order_declined_to_buyer(build_preview_order)
|
20
|
+
end
|
21
|
+
|
14
22
|
def payment_request_to_buyer
|
15
23
|
EffectiveOrders.mailer_klass.payment_request_to_buyer(build_preview_order)
|
16
24
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_orders
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -325,6 +325,8 @@ files:
|
|
325
325
|
- app/views/effective/orders/show.html.haml
|
326
326
|
- app/views/effective/orders/stripe/_element.html.haml
|
327
327
|
- app/views/effective/orders/stripe/_form.html.haml
|
328
|
+
- app/views/effective/orders_mailer/order_declined_to_admin.html.haml
|
329
|
+
- app/views/effective/orders_mailer/order_declined_to_buyer.html.haml
|
328
330
|
- app/views/effective/orders_mailer/order_error.html.haml
|
329
331
|
- app/views/effective/orders_mailer/order_receipt_to_admin.html.haml
|
330
332
|
- app/views/effective/orders_mailer/order_receipt_to_buyer.html.haml
|