solidus_paypal_commerce_platform 0.2.0 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -0
- data/CHANGELOG.md +88 -3
- data/LICENSE +1 -1
- data/README.md +4 -0
- data/app/controllers/solidus_paypal_commerce_platform/orders_controller.rb +2 -1
- data/app/decorators/models/solidus_paypal_commerce_platform/spree/address_decorator.rb +17 -0
- data/app/jobs/solidus_paypal_commerce_platform/webhook_job.rb +3 -3
- data/app/models/solidus_paypal_commerce_platform/payment_method.rb +4 -1
- data/app/models/solidus_paypal_commerce_platform/paypal_address.rb +19 -20
- data/app/models/solidus_paypal_commerce_platform/paypal_order.rb +29 -8
- data/app/models/solidus_paypal_commerce_platform/pricing_options.rb +1 -1
- data/app/models/solidus_paypal_commerce_platform/state_guesser.rb +1 -1
- data/bin/sandbox +1 -1
- data/lib/solidus_paypal_commerce_platform/configuration.rb +3 -3
- data/lib/solidus_paypal_commerce_platform/engine.rb +2 -1
- data/lib/solidus_paypal_commerce_platform/version.rb +1 -1
- data/lib/views/frontend/solidus_paypal_commerce_platform/shared/_javascript_sdk_tag.html.erb +3 -1
- data/solidus_paypal_commerce_platform.gemspec +5 -5
- data/spec/features/frontend/cart_spec.rb +6 -0
- data/spec/features/frontend/checkout_spec.rb +6 -0
- data/spec/features/frontend/product_spec.rb +6 -0
- data/spec/lib/solidus_paypal_commerce_platform/client_spec.rb +1 -1
- data/spec/lib/solidus_paypal_commerce_platform/configuration_spec.rb +4 -4
- data/spec/models/solidus_paypal_commerce_platform/payment_method_spec.rb +8 -0
- data/spec/models/solidus_paypal_commerce_platform/paypal_address_spec.rb +17 -5
- data/spec/models/solidus_paypal_commerce_platform/paypal_order_spec.rb +33 -0
- data/spec/requests/solidus_paypal_commerce_platform/orders_controller_spec.rb +2 -2
- data/spec/requests/solidus_paypal_commerce_platform/shipping_rates_controller_spec.rb +3 -3
- data/spec/requests/solidus_paypal_commerce_platform/wizard_controller_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +23 -15
- data/app/decorators/solidus_paypal_commerce_platform/remove_required_phone_from_address.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0a234ec6a201a2b7e7a4f9e3c65359c70acaea23995134f7de9513a96530fc4
|
4
|
+
data.tar.gz: b94786018f9da41a5e5915db8c87b87c2eaa767580e8739c11ae472fb248d782
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 825f4bcff61bbb9ff666391607dc657383d67b2635454375bc12df1a8bef1c02e2cff334b0474ce53dd9d7e04c4d8885dcc9a85ccb729d31a641ab5b9ccaa84c
|
7
|
+
data.tar.gz: 7589bcb66e13a57e5154227ef9212b209177f1a3f76338c67c852ca837c9df60670e8ce1730153b7121db364034f191170f59d95a863b563663ba47fcfde6b35
|
data/.rubocop.yml
CHANGED
@@ -43,6 +43,10 @@ RSpec/VerifiedDoubles:
|
|
43
43
|
# Sometimes you really need an "anything" double
|
44
44
|
IgnoreSymbolicNames: true
|
45
45
|
|
46
|
+
Rspec/Naming/VariableNumber:
|
47
|
+
# PayPal uses snake_case, we use normal_case ¯\_(ツ)_/¯
|
48
|
+
Enabled: false
|
49
|
+
|
46
50
|
Style/FrozenStringLiteralComment:
|
47
51
|
Exclude:
|
48
52
|
- spec/**/*
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,62 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## [
|
3
|
+
## [v0.3.0](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/tree/v0.3.0) (2021-03-16)
|
4
4
|
|
5
|
-
[Full Changelog](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/compare/v0.
|
5
|
+
[Full Changelog](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/compare/v0.2.2...v0.3.0)
|
6
|
+
|
7
|
+
**Closed issues:**
|
8
|
+
|
9
|
+
- Prepare Solidus Paypal Commerce Platform for Solidus 3.0 [\#115](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/115)
|
10
|
+
|
11
|
+
**Merged pull requests:**
|
12
|
+
|
13
|
+
- Use new factories loading method [\#118](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/118) ([kennyadsl](https://github.com/kennyadsl))
|
14
|
+
- Update extension for Solidus 3.0 [\#117](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/117) ([seand7565](https://github.com/seand7565))
|
15
|
+
|
16
|
+
## [v0.2.2](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/tree/v0.2.2) (2020-11-20)
|
17
|
+
|
18
|
+
[Full Changelog](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/compare/v0.2.1...v0.2.2)
|
19
|
+
|
20
|
+
**Implemented enhancements:**
|
21
|
+
|
22
|
+
- Make the PayPal messaging component a bit more modular [\#112](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/112)
|
23
|
+
- Implement and QA Paypal credit solutions [\#99](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/99)
|
24
|
+
|
25
|
+
**Closed issues:**
|
26
|
+
|
27
|
+
- Simulated Address Info in Live Order [\#104](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/104)
|
28
|
+
|
29
|
+
**Merged pull requests:**
|
30
|
+
|
31
|
+
- Relax SolidusWebhooks dependency [\#114](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/114) ([kennyadsl](https://github.com/kennyadsl))
|
32
|
+
- Add information about paypal credit messaging to readme [\#113](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/113) ([seand7565](https://github.com/seand7565))
|
33
|
+
|
34
|
+
## [v0.2.1](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/tree/v0.2.1) (2020-11-09)
|
35
|
+
|
36
|
+
[Full Changelog](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/compare/v0.2.0...v0.2.1)
|
37
|
+
|
38
|
+
**Closed issues:**
|
39
|
+
|
40
|
+
- There was a problem connecting with paypal. [\#107](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/107)
|
41
|
+
- Bad Request \(400\) when opening PayPal Payment Popup \(eg clicking Pay with PayPal during checkout\) [\#103](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/103)
|
42
|
+
|
43
|
+
**Merged pull requests:**
|
44
|
+
|
45
|
+
- Move and rename address decorator [\#111](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/111) ([seand7565](https://github.com/seand7565))
|
46
|
+
- Constrain solidus\_support to 0.5.1 or greater [\#110](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/110) ([seand7565](https://github.com/seand7565))
|
47
|
+
- Add currency to PayPal SDK URL [\#108](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/108) ([seand7565](https://github.com/seand7565))
|
48
|
+
- Update specs to comply with new rubocop regulations [\#106](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/106) ([seand7565](https://github.com/seand7565))
|
49
|
+
- Add address only to initial PayPal request [\#105](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/105) ([seand7565](https://github.com/seand7565))
|
50
|
+
|
51
|
+
## [v0.2.0](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/tree/v0.2.0) (2020-10-13)
|
52
|
+
|
53
|
+
[Full Changelog](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/compare/v0.1.0...v0.2.0)
|
54
|
+
|
55
|
+
**Closed issues:**
|
56
|
+
|
57
|
+
- README lists two different types of PayPal credentials [\#97](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/97)
|
58
|
+
- `paypal\_email\_confirmed` is not an actual preference [\#96](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/96)
|
59
|
+
- Make this extension the default option for Solidus [\#88](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/88)
|
6
60
|
|
7
61
|
**Merged pull requests:**
|
8
62
|
|
@@ -21,7 +75,6 @@
|
|
21
75
|
**Merged pull requests:**
|
22
76
|
|
23
77
|
- Temporarily switch from apparition to cuprite [\#92](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/92) ([elia](https://github.com/elia))
|
24
|
-
- Update links after moving the repo to solidusio-contrib [\#91](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/91) ([elia](https://github.com/elia))
|
25
78
|
- Add a configurable state\_guesser class to guess states [\#90](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/90) ([seand7565](https://github.com/seand7565))
|
26
79
|
- Add better error handling to button\_actions.js [\#89](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/89) ([seand7565](https://github.com/seand7565))
|
27
80
|
|
@@ -31,6 +84,8 @@
|
|
31
84
|
|
32
85
|
**Implemented enhancements:**
|
33
86
|
|
87
|
+
- Frontend users should be able to check out using PayPal [\#6](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/6)
|
88
|
+
- Admin users should be able to style the PayPal buttons on the payment\_method show page [\#5](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/5)
|
34
89
|
- Webhooks [\#83](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/83) ([elia](https://github.com/elia))
|
35
90
|
- Display paypal email to customer on confirmation [\#54](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/54) ([seand7565](https://github.com/seand7565))
|
36
91
|
- Use an env accessor to control live/sandbox urls and classes [\#31](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/31) ([elia](https://github.com/elia))
|
@@ -38,12 +93,42 @@
|
|
38
93
|
|
39
94
|
**Fixed bugs:**
|
40
95
|
|
96
|
+
- Users can check out with invalid payment [\#19](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/19)
|
41
97
|
- Have different nonce for every click of the wizard button [\#87](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/87) ([elia](https://github.com/elia))
|
42
98
|
- Correctly communicate errors when updating shipping rates [\#86](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/86) ([elia](https://github.com/elia))
|
43
99
|
- Add deface to deps [\#57](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/57) ([elia](https://github.com/elia))
|
44
100
|
|
101
|
+
**Closed issues:**
|
102
|
+
|
103
|
+
- Add something to the README about backend payments [\#75](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/75)
|
104
|
+
- Explore enabling the payment method by default [\#71](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/71)
|
105
|
+
- Explore subscribing to webhooks [\#70](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/70)
|
106
|
+
- We're using the wrong ID for paypal\_order\_id [\#69](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/69)
|
107
|
+
- Handle instrument declined errors [\#68](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/68)
|
108
|
+
- Extend lightbox during customer payment [\#63](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/63)
|
109
|
+
- Add this extension to demo store for integration team walkthrough [\#49](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/49)
|
110
|
+
- Store PayPal Debug ID [\#48](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/48)
|
111
|
+
- PayPal email address needs to be included on the confirm step [\#47](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/47)
|
112
|
+
- Digital goods should be set as not requiring shipment [\#46](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/46)
|
113
|
+
- Allow checkout on product/cart page to complete the order [\#44](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/44)
|
114
|
+
- PayPal uses different states than Solidus for some countries [\#38](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/38)
|
115
|
+
- Validate amount charged with PayPal [\#37](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/37)
|
116
|
+
- Allow order simulator to be a configurable class [\#36](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/36)
|
117
|
+
- Admin users have the option to edit payment amount [\#29](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/29)
|
118
|
+
- Add PayPal button to product page [\#27](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/27)
|
119
|
+
- Add PayPal button to cart page [\#26](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/26)
|
120
|
+
- Add `commit=false` to javascript SDK URL [\#18](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/18)
|
121
|
+
- Explore using Rails secrets to encode and decrypt PayPal client id and secret [\#17](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/17)
|
122
|
+
- Backend users should be able to checkout & admin payments [\#15](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/15)
|
123
|
+
- Change static sandbox URL and objects to dynamic [\#14](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/14)
|
124
|
+
- PayPal response address change [\#13](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/13)
|
125
|
+
- Ensure the email is verified before activating the payment method [\#9](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/9)
|
126
|
+
- Add a URL generator for the PayPal JS SDK [\#8](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/8)
|
127
|
+
- Allow users to onboard with PayPal [\#1](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/issues/1)
|
128
|
+
|
45
129
|
**Merged pull requests:**
|
46
130
|
|
131
|
+
- Update links after moving the repo to solidusio-contrib [\#91](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/91) ([elia](https://github.com/elia))
|
47
132
|
- Use live partner ids [\#85](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/85) ([elia](https://github.com/elia))
|
48
133
|
- Update README to account for checkouts without a confirmation step [\#84](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/84) ([seand7565](https://github.com/seand7565))
|
49
134
|
- Replace order simulator with something simpler [\#82](https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/pull/82) ([seand7565](https://github.com/seand7565))
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -71,6 +71,10 @@ When you return to your app, your payment method should be set up and ready to g
|
|
71
71
|
A confirmed email is required to get paid by PayPal. You'll need to check `Paypal Email Confirmed` on your new
|
72
72
|
payment method before being able to select `Available To Users`.
|
73
73
|
|
74
|
+
### Messaging Component
|
75
|
+
|
76
|
+
PayPal offers a messaging component that displays credit messaging to the user. You can find more information [here.](https://www.paypal.com/us/webapps/mpp/on-site-messaging) This messaging is enabled by default on all pages that use the paypal payment buttons, but can be disabled via preferences. PayPal recommends that this messaging be displayed near product or order totals, so please keep that in mind during implementation.
|
77
|
+
|
74
78
|
## Wizards
|
75
79
|
|
76
80
|
This gem adds support for payment method wizards to be set up. Payment wizards can be used to automatically set up
|
@@ -11,7 +11,8 @@ module SolidusPaypalCommercePlatform
|
|
11
11
|
|
12
12
|
@order = ::Spree::Order.create!(
|
13
13
|
user: try_spree_current_user,
|
14
|
-
store: current_store
|
14
|
+
store: current_store,
|
15
|
+
currency: current_pricing_options.currency
|
15
16
|
)
|
16
17
|
|
17
18
|
if @order.contents.update_cart order_params
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SolidusPaypalCommercePlatform
|
4
|
+
module Spree
|
5
|
+
module AddressDecorator
|
6
|
+
# PayPal doesn't use the phone number, so in cases where the user checks out via
|
7
|
+
# PayPal, this field will be unpopulated. If you want to require phone numbers,
|
8
|
+
# you'll need to turn off cart & product page displays on the payment method edit
|
9
|
+
# page.
|
10
|
+
def require_phone?
|
11
|
+
super && false
|
12
|
+
end
|
13
|
+
|
14
|
+
::Spree::Address.prepend self
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -6,15 +6,15 @@ module SolidusPaypalCommercePlatform
|
|
6
6
|
case payload["resource_type"]
|
7
7
|
when "checkout-order"
|
8
8
|
payment_source = PaymentSource.find_by!(paypal_order_id: payload.dig("resource", "id"))
|
9
|
-
payment = Spree::Payment.where(source: payment_source).last!
|
9
|
+
payment = ::Spree::Payment.where(source: payment_source).last!
|
10
10
|
payment.log_entries.create!(details: payload.to_yaml)
|
11
11
|
when "capture"
|
12
12
|
payment_source = PaymentSource.find_by!(capture_id: payload.dig("resource", "id"))
|
13
|
-
payment = Spree::Payment.where(source: payment_source).last!
|
13
|
+
payment = ::Spree::Payment.where(source: payment_source).last!
|
14
14
|
payment.log_entries.create!(details: payload.to_yaml)
|
15
15
|
when "refund"
|
16
16
|
payment_source = PaymentSource.find_by!(refund_id: payload.dig("resource", "id"))
|
17
|
-
payment = Spree::Payment.where(source: payment_source).last!
|
17
|
+
payment = ::Spree::Payment.where(source: payment_source).last!
|
18
18
|
payment.log_entries.create!(details: payload.to_yaml)
|
19
19
|
end
|
20
20
|
end
|
@@ -58,7 +58,7 @@ module SolidusPaypalCommercePlatform
|
|
58
58
|
}
|
59
59
|
end
|
60
60
|
|
61
|
-
def javascript_sdk_url(order: nil)
|
61
|
+
def javascript_sdk_url(order: nil, currency: nil)
|
62
62
|
# Both instance and class respond to checkout_steps.
|
63
63
|
step_names = order ? order.checkout_steps : ::Spree::Order.checkout_steps.keys
|
64
64
|
|
@@ -69,8 +69,11 @@ module SolidusPaypalCommercePlatform
|
|
69
69
|
intent: auto_capture ? "capture" : "authorize",
|
70
70
|
commit: commit_immediately ? "false" : "true",
|
71
71
|
components: options[:display_credit_messaging] ? "buttons,messages" : "buttons",
|
72
|
+
currency: currency
|
72
73
|
}
|
73
74
|
|
75
|
+
parameters[:shipping_preference] = 'NO_SHIPPING' if step_names.exclude? 'delivery'
|
76
|
+
|
74
77
|
"https://www.paypal.com/sdk/js?#{parameters.to_query}"
|
75
78
|
end
|
76
79
|
end
|
@@ -19,7 +19,7 @@ module SolidusPaypalCommercePlatform
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def update(paypal_address)
|
22
|
-
formatted_address =
|
22
|
+
formatted_address = address_attributes(paypal_address[:updated_address], paypal_address[:recipient])
|
23
23
|
new_address = @order.ship_address.dup || ::Spree::Address.new
|
24
24
|
new_address.assign_attributes(formatted_address)
|
25
25
|
|
@@ -51,36 +51,35 @@ module SolidusPaypalCommercePlatform
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def format_simulated_address(paypal_address)
|
54
|
-
|
55
|
-
|
54
|
+
# Adds fake information for a few fields, so validations can run
|
55
|
+
paypal_address[:address_line_1] = "123 Fake St."
|
56
|
+
|
56
57
|
::Spree::Address.new(
|
57
|
-
|
58
|
-
state: find_state(paypal_address[:state], country),
|
59
|
-
state_name: paypal_address[:state],
|
60
|
-
zipcode: paypal_address[:postal_code],
|
61
|
-
country: country,
|
62
|
-
address1: "123 Fake St.",
|
63
|
-
phone: "123456789",
|
64
|
-
firstname: "Fake"
|
58
|
+
address_attributes(paypal_address, { name: { given_name: "Fake" } })
|
65
59
|
)
|
66
60
|
end
|
67
61
|
|
68
|
-
def
|
69
|
-
address = paypal_address[:updated_address]
|
70
|
-
recipient = paypal_address[:recipient]
|
62
|
+
def address_attributes(address, recipient)
|
71
63
|
country = ::Spree::Country.find_by(iso: address[:country_code])
|
72
64
|
|
73
|
-
{
|
65
|
+
attributes = {
|
74
66
|
address1: address[:address_line_1],
|
75
67
|
address2: address[:address_line_2],
|
76
|
-
state: find_state(address[:admin_area_1], country),
|
77
|
-
state_name: address[:admin_area_1],
|
78
|
-
city: address[:admin_area_2],
|
68
|
+
state: find_state(address[:admin_area_1] || address[:state], country),
|
69
|
+
state_name: address[:admin_area_1] || address[:state],
|
70
|
+
city: address[:admin_area_2] || address[:city],
|
79
71
|
country: country,
|
80
72
|
zipcode: address[:postal_code],
|
81
|
-
firstname: recipient[:name][:given_name],
|
82
|
-
lastname: recipient[:name][:surname]
|
83
73
|
}
|
74
|
+
|
75
|
+
if SolidusSupport.combined_first_and_last_name_in_address?
|
76
|
+
attributes[:name] = "#{recipient[:name][:given_name]} #{recipient[:name][:surname]}"
|
77
|
+
else
|
78
|
+
attributes[:firstname] = recipient[:name][:given_name]
|
79
|
+
attributes[:lastname] = recipient[:name][:surname]
|
80
|
+
end
|
81
|
+
|
82
|
+
attributes
|
84
83
|
end
|
85
84
|
end
|
86
85
|
end
|
@@ -18,7 +18,7 @@ module SolidusPaypalCommercePlatform
|
|
18
18
|
{
|
19
19
|
op: 'replace',
|
20
20
|
path: '/purchase_units/@reference_id==\'default\'',
|
21
|
-
value: purchase_units[0]
|
21
|
+
value: purchase_units(include_shipping_address: false)[0]
|
22
22
|
}
|
23
23
|
end
|
24
24
|
|
@@ -44,18 +44,27 @@ module SolidusPaypalCommercePlatform
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def name(address)
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
47
|
+
if greater_than_2_10?
|
48
|
+
name = ::Spree::Address::Name.new @order.ship_address.name
|
49
|
+
|
50
|
+
{
|
51
|
+
given_name: name.first_name,
|
52
|
+
surname: name.last_name
|
53
|
+
}
|
54
|
+
else
|
55
|
+
{
|
56
|
+
given_name: address.firstname,
|
57
|
+
surname: address.lastname
|
58
|
+
}
|
59
|
+
end
|
51
60
|
end
|
52
61
|
|
53
|
-
def purchase_units
|
62
|
+
def purchase_units(include_shipping_address: true)
|
54
63
|
[
|
55
64
|
{
|
56
65
|
amount: amount,
|
57
66
|
items: line_items,
|
58
|
-
shipping: (shipping_info if @order.ship_address)
|
67
|
+
shipping: (shipping_info if @order.ship_address && include_shipping_address)
|
59
68
|
}
|
60
69
|
]
|
61
70
|
end
|
@@ -63,13 +72,21 @@ module SolidusPaypalCommercePlatform
|
|
63
72
|
def shipping_info
|
64
73
|
{
|
65
74
|
name: {
|
66
|
-
full_name:
|
75
|
+
full_name: full_name,
|
67
76
|
},
|
68
77
|
email_address: @order.email,
|
69
78
|
address: get_address(@order.ship_address)
|
70
79
|
}
|
71
80
|
end
|
72
81
|
|
82
|
+
def full_name
|
83
|
+
if greater_than_2_10?
|
84
|
+
@order.ship_address.name
|
85
|
+
else
|
86
|
+
@order.ship_address.full_name
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
73
90
|
def line_items
|
74
91
|
@order.line_items.map{ |line_item|
|
75
92
|
{
|
@@ -103,5 +120,9 @@ module SolidusPaypalCommercePlatform
|
|
103
120
|
value: amount
|
104
121
|
}
|
105
122
|
end
|
123
|
+
|
124
|
+
def greater_than_2_10?
|
125
|
+
::Spree.solidus_gem_version >= Gem::Version.new('2.11')
|
126
|
+
end
|
106
127
|
end
|
107
128
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module SolidusPaypalCommercePlatform
|
4
|
-
class PricingOptions < Spree::Variant::PricingOptions
|
4
|
+
class PricingOptions < ::Spree::Variant::PricingOptions
|
5
5
|
def cache_key
|
6
6
|
SolidusPaypalCommercePlatform::PaymentMethod.active.map(&:cache_key_with_version).sort + [super]
|
7
7
|
end
|
data/bin/sandbox
CHANGED
@@ -67,7 +67,7 @@ unbundled bundle install --gemfile Gemfile
|
|
67
67
|
|
68
68
|
unbundled bundle exec rake db:drop db:create
|
69
69
|
|
70
|
-
unbundled bundle exec rails generate
|
70
|
+
unbundled bundle exec rails generate solidus:install \
|
71
71
|
--auto-accept \
|
72
72
|
--user_class=Spree::User \
|
73
73
|
--enforce_available_locales=true \
|
@@ -39,7 +39,7 @@ module SolidusPaypalCommercePlatform
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def default_env
|
42
|
-
return ENV['PAYPAL_ENV'] if ENV['PAYPAL_ENV']
|
42
|
+
return ENV['PAYPAL_ENV'] if ENV['PAYPAL_ENV'] # rubocop:disable Rails/EnvironmentVariableAccess
|
43
43
|
|
44
44
|
case Rails.env
|
45
45
|
when 'production'
|
@@ -60,11 +60,11 @@ module SolidusPaypalCommercePlatform
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def partner_id
|
63
|
-
@partner_id ||= ENV['PAYPAL_PARTNER_ID'] || DEFAULT_PARTNER_ID[env.to_sym]
|
63
|
+
@partner_id ||= ENV['PAYPAL_PARTNER_ID'] || DEFAULT_PARTNER_ID[env.to_sym] # rubocop:disable Rails/EnvironmentVariableAccess
|
64
64
|
end
|
65
65
|
|
66
66
|
def partner_client_id
|
67
|
-
@partner_client_id ||= ENV['PAYPAL_PARTNER_CLIENT_ID'] || DEFAULT_PARTNER_CLIENT_ID[env.to_sym]
|
67
|
+
@partner_client_id ||= ENV['PAYPAL_PARTNER_CLIENT_ID'] || DEFAULT_PARTNER_CLIENT_ID[env.to_sym] # rubocop:disable Rails/EnvironmentVariableAccess
|
68
68
|
end
|
69
69
|
|
70
70
|
def partner_code
|
@@ -1,9 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'deface'
|
4
|
-
require '
|
4
|
+
require 'solidus_core'
|
5
5
|
require 'solidus_paypal_commerce_platform'
|
6
6
|
require 'solidus_webhooks'
|
7
|
+
require 'solidus_support'
|
7
8
|
|
8
9
|
module SolidusPaypalCommercePlatform
|
9
10
|
class Engine < Rails::Engine
|
data/lib/views/frontend/solidus_paypal_commerce_platform/shared/_javascript_sdk_tag.html.erb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
<% currency = @order ? @order.currency : current_pricing_options.currency %>
|
2
|
+
|
1
3
|
<script
|
2
|
-
src="<%= payment_method.javascript_sdk_url(order: @order) %>"
|
4
|
+
src="<%= payment_method.javascript_sdk_url(order: @order, currency: currency) %>"
|
3
5
|
data-partner-attribution-id="<%= SolidusPaypalCommercePlatform.config.partner_code %>">
|
4
6
|
</script>
|
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.metadata['source_code_uri'] = 'https://github.com/solidusio-contrib/solidus_paypal_commerce_platform'
|
17
17
|
spec.metadata['changelog_uri'] = 'https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/releases'
|
18
18
|
|
19
|
-
spec.required_ruby_version = Gem::Requirement.new('
|
19
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.5')
|
20
20
|
|
21
21
|
# Specify which files should be added to the gem when it is released.
|
22
22
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -29,12 +29,12 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.require_paths = ["lib"]
|
30
30
|
|
31
31
|
spec.add_dependency 'deface', '~> 1.5'
|
32
|
-
spec.add_dependency 'solidus_core', ['>= 2.0.0', '<
|
33
|
-
spec.add_dependency 'solidus_support',
|
34
|
-
spec.add_dependency 'solidus_webhooks', '~> 0.2
|
32
|
+
spec.add_dependency 'solidus_core', ['>= 2.0.0', '< 4']
|
33
|
+
spec.add_dependency 'solidus_support', [">= 0.8.0", "< 1"]
|
34
|
+
spec.add_dependency 'solidus_webhooks', '~> 0.2'
|
35
35
|
|
36
36
|
spec.add_dependency 'paypal-checkout-sdk'
|
37
37
|
|
38
38
|
spec.add_development_dependency 'cuprite'
|
39
|
-
spec.add_development_dependency 'solidus_dev_support', '~> 2.
|
39
|
+
spec.add_development_dependency 'solidus_dev_support', '~> 2.5'
|
40
40
|
end
|
@@ -27,6 +27,12 @@ RSpec.describe "Cart page" do
|
|
27
27
|
expect(js_sdk_script_partner_id).to eq("Solidus_PCP_SP")
|
28
28
|
end
|
29
29
|
|
30
|
+
it "generates a URL with the correct currency" do
|
31
|
+
allow(order).to receive(:currency).and_return "EUR"
|
32
|
+
visit '/cart'
|
33
|
+
expect(js_sdk_script_query).to include("currency=EUR")
|
34
|
+
end
|
35
|
+
|
30
36
|
context "when auto-capture is set to true" do
|
31
37
|
it "generates a url with intent capture" do
|
32
38
|
paypal_payment_method.update(auto_capture: true)
|
@@ -28,6 +28,12 @@ RSpec.describe "Checkout" do
|
|
28
28
|
expect(js_sdk_script_partner_id).to eq("Solidus_PCP_SP")
|
29
29
|
end
|
30
30
|
|
31
|
+
it "generates a URL with the correct currency" do
|
32
|
+
allow(order).to receive(:currency).and_return "EUR"
|
33
|
+
visit '/checkout/payment'
|
34
|
+
expect(js_sdk_script_query).to include("currency=EUR")
|
35
|
+
end
|
36
|
+
|
31
37
|
context "when auto-capture is set to true" do
|
32
38
|
it "generates a url with intent capture" do
|
33
39
|
paypal_payment_method.update(auto_capture: true)
|
@@ -23,6 +23,12 @@ RSpec.describe "Product page", js: true do
|
|
23
23
|
expect(js_sdk_script_partner_id).to eq("Solidus_PCP_SP")
|
24
24
|
end
|
25
25
|
|
26
|
+
it "generates a URL with the correct currency" do
|
27
|
+
allow_any_instance_of(SolidusPaypalCommercePlatform::PricingOptions).to receive(:currency).and_return "EUR"
|
28
|
+
visit "/products/#{product.slug}"
|
29
|
+
expect(js_sdk_script_query).to include("currency=EUR")
|
30
|
+
end
|
31
|
+
|
26
32
|
context "when auto-capture is set to true" do
|
27
33
|
it "generates a url with intent capture" do
|
28
34
|
paypal_payment_method.update(auto_capture: true)
|
@@ -10,7 +10,7 @@ RSpec.describe SolidusPaypalCommercePlatform::Client do
|
|
10
10
|
let(:status_code) { 201 }
|
11
11
|
|
12
12
|
it 'forwards to the upstream client adding i18n response messages' do
|
13
|
-
|
13
|
+
allow_any_instance_of(PayPal::PayPalHttpClient)
|
14
14
|
.to receive(:execute).with(paypal_request).and_return(paypal_response)
|
15
15
|
|
16
16
|
response = subject.execute_with_response(paypal_request)
|
@@ -12,16 +12,16 @@ RSpec.describe SolidusPaypalCommercePlatform::Configuration do
|
|
12
12
|
it "falls back to Rails.env if ENV['PAYPAL_ENV'] is not set" do
|
13
13
|
expect(ENV).to receive(:[]).with("PAYPAL_ENV").and_return(nil).at_least(:once)
|
14
14
|
|
15
|
-
|
15
|
+
allow(Rails).to receive(:env).and_return("development".inquiry)
|
16
16
|
expect(subject.default_env).to eq("sandbox")
|
17
17
|
|
18
|
-
|
18
|
+
allow(Rails).to receive(:env).and_return("test".inquiry)
|
19
19
|
expect(subject.default_env).to eq("sandbox")
|
20
20
|
|
21
|
-
|
21
|
+
allow(Rails).to receive(:env).and_return("production".inquiry)
|
22
22
|
expect(subject.default_env).to eq("live")
|
23
23
|
|
24
|
-
|
24
|
+
allow(Rails).to receive(:env).and_return("staging".inquiry)
|
25
25
|
expect{ subject.default_env }.to raise_error(described_class::InvalidEnvironment)
|
26
26
|
end
|
27
27
|
end
|
@@ -93,6 +93,14 @@ RSpec.describe SolidusPaypalCommercePlatform::PaymentMethod, type: :model do
|
|
93
93
|
end
|
94
94
|
end
|
95
95
|
|
96
|
+
context 'when checkout_steps does not include "delivery"' do
|
97
|
+
let(:order) { instance_double(Spree::Order, checkout_steps: { "foo" => "bar" }) }
|
98
|
+
|
99
|
+
it 'disables autocommit' do
|
100
|
+
expect(url.query.split("&")).to include("shipping_preference=NO_SHIPPING")
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
96
104
|
context 'when messaging is turned on' do
|
97
105
|
let(:order) { instance_double(Spree::Order, checkout_steps: { "foo" => "bar" }) }
|
98
106
|
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
RSpec.describe SolidusPaypalCommercePlatform::PaypalAddress, type: :model do
|
4
4
|
let(:order) { create(:order) }
|
5
5
|
let(:original_address) { create(:address) }
|
6
|
-
let(:address) { create(:address) }
|
6
|
+
let(:address) { create(:address, name_attributes) }
|
7
7
|
let(:params) {
|
8
8
|
{
|
9
9
|
updated_address: {
|
@@ -16,8 +16,8 @@ RSpec.describe SolidusPaypalCommercePlatform::PaypalAddress, type: :model do
|
|
16
16
|
},
|
17
17
|
recipient: {
|
18
18
|
name: {
|
19
|
-
given_name:
|
20
|
-
surname:
|
19
|
+
given_name: "Alexander",
|
20
|
+
surname: "Hamilton"
|
21
21
|
}
|
22
22
|
}
|
23
23
|
}
|
@@ -37,8 +37,12 @@ RSpec.describe SolidusPaypalCommercePlatform::PaypalAddress, type: :model do
|
|
37
37
|
expect(subject.address2).to eq address.address2
|
38
38
|
expect(subject.zipcode).to eq address.zipcode
|
39
39
|
expect(subject.country).to eq address.country
|
40
|
-
|
41
|
-
|
40
|
+
if SolidusSupport.combined_first_and_last_name_in_address?
|
41
|
+
expect(subject.name).to eq address.name
|
42
|
+
else
|
43
|
+
expect(subject.firstname).to eq address.firstname
|
44
|
+
expect(subject.lastname).to eq address.lastname
|
45
|
+
end
|
42
46
|
expect(subject.phone).to eq original_address.phone
|
43
47
|
end
|
44
48
|
|
@@ -52,4 +56,12 @@ RSpec.describe SolidusPaypalCommercePlatform::PaypalAddress, type: :model do
|
|
52
56
|
end
|
53
57
|
end
|
54
58
|
end
|
59
|
+
|
60
|
+
def name_attributes
|
61
|
+
if SolidusSupport.combined_first_and_last_name_in_address?
|
62
|
+
{ name: "Alexander Hamilton" }
|
63
|
+
else
|
64
|
+
{ firstname: "Alexander", lastname: "Hamilton" }
|
65
|
+
end
|
66
|
+
end
|
55
67
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe SolidusPaypalCommercePlatform::PaypalOrder, type: :model do
|
6
|
+
describe '#to_json' do
|
7
|
+
subject(:to_json) { described_class.new(order).to_json('intent') }
|
8
|
+
|
9
|
+
let(:order) { create(:order_ready_to_complete) }
|
10
|
+
|
11
|
+
it { expect { to_json }.not_to raise_error }
|
12
|
+
|
13
|
+
if Spree.solidus_gem_version >= Gem::Version.new('2.11')
|
14
|
+
it 'returns the name of the user' do
|
15
|
+
expect(to_json).to match hash_including(
|
16
|
+
purchase_units: array_including(
|
17
|
+
hash_including(shipping: hash_including(name: { full_name: 'John Von Doe' }))
|
18
|
+
),
|
19
|
+
payer: hash_including(name: { given_name: 'John', surname: 'Von Doe' })
|
20
|
+
)
|
21
|
+
end
|
22
|
+
else
|
23
|
+
it 'returns the name and surname of the user' do
|
24
|
+
expect(to_json).to match hash_including(
|
25
|
+
purchase_units: array_including(
|
26
|
+
hash_including(shipping: hash_including(name: { full_name: 'John' }))
|
27
|
+
),
|
28
|
+
payer: hash_including(name: { given_name: 'John', surname: nil })
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -15,7 +15,7 @@ RSpec.describe SolidusPaypalCommercePlatform::OrdersController, type: :request d
|
|
15
15
|
|
16
16
|
get solidus_paypal_commerce_platform.verify_total_path, params: params
|
17
17
|
|
18
|
-
expect(response).to have_http_status(
|
18
|
+
expect(response).to have_http_status(:ok)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
@@ -29,7 +29,7 @@ RSpec.describe SolidusPaypalCommercePlatform::OrdersController, type: :request d
|
|
29
29
|
|
30
30
|
get solidus_paypal_commerce_platform.verify_total_path, params: params
|
31
31
|
|
32
|
-
expect(response).to have_http_status(
|
32
|
+
expect(response).to have_http_status(:bad_request)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -23,9 +23,9 @@ RSpec.describe SolidusPaypalCommercePlatform::ShippingRatesController, type: :re
|
|
23
23
|
}
|
24
24
|
end
|
25
25
|
|
26
|
-
it "returns a paypal_order
|
27
|
-
expect(response.body).
|
28
|
-
expect(response.body).not_to include order.ship_address.state.abbr
|
26
|
+
it "returns a paypal_order without the simulated address" do
|
27
|
+
expect(response.body).not_to include "admin_area_1\":\"#{new_address.state.abbr}\""
|
28
|
+
expect(response.body).not_to include "admin_area_1\":\"#{order.ship_address.state.abbr}\""
|
29
29
|
end
|
30
30
|
|
31
31
|
it "does not modify original address" do
|
@@ -38,7 +38,7 @@ RSpec.describe SolidusPaypalCommercePlatform::WizardController, type: :request d
|
|
38
38
|
|
39
39
|
expect(payment_method.preferred_client_id).to eq("CLIENT-ID")
|
40
40
|
expect(payment_method.preferred_client_secret).to eq("CLIENT-SECRET")
|
41
|
-
expect(response).to have_http_status(
|
41
|
+
expect(response).to have_http_status(:created)
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -20,7 +20,7 @@ require 'spree/testing_support/order_walkthrough'
|
|
20
20
|
Dir["#{__dir__}/support/**/*.rb"].sort.each { |f| require f }
|
21
21
|
|
22
22
|
# Requires factories defined in lib/solidus_paypal_commerce_platform/testing_support/factories.rb
|
23
|
-
|
23
|
+
SolidusDevSupport::TestingSupport::Factories.load_for(SolidusPaypalCommercePlatform::Engine)
|
24
24
|
|
25
25
|
RSpec.configure do |config|
|
26
26
|
config.infer_spec_type_from_file_location!
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solidus_paypal_commerce_platform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Denny
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-05-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: deface
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
version: 2.0.0
|
35
35
|
- - "<"
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: '
|
37
|
+
version: '4'
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -44,35 +44,41 @@ dependencies:
|
|
44
44
|
version: 2.0.0
|
45
45
|
- - "<"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '4'
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: solidus_support
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 0.8.0
|
55
|
+
- - "<"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '1'
|
55
58
|
type: :runtime
|
56
59
|
prerelease: false
|
57
60
|
version_requirements: !ruby/object:Gem::Requirement
|
58
61
|
requirements:
|
59
|
-
- - "
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 0.8.0
|
65
|
+
- - "<"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
67
|
+
version: '1'
|
62
68
|
- !ruby/object:Gem::Dependency
|
63
69
|
name: solidus_webhooks
|
64
70
|
requirement: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
72
|
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.2
|
74
|
+
version: '0.2'
|
69
75
|
type: :runtime
|
70
76
|
prerelease: false
|
71
77
|
version_requirements: !ruby/object:Gem::Requirement
|
72
78
|
requirements:
|
73
79
|
- - "~>"
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.2
|
81
|
+
version: '0.2'
|
76
82
|
- !ruby/object:Gem::Dependency
|
77
83
|
name: paypal-checkout-sdk
|
78
84
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,14 +113,14 @@ dependencies:
|
|
107
113
|
requirements:
|
108
114
|
- - "~>"
|
109
115
|
- !ruby/object:Gem::Version
|
110
|
-
version: '2.
|
116
|
+
version: '2.5'
|
111
117
|
type: :development
|
112
118
|
prerelease: false
|
113
119
|
version_requirements: !ruby/object:Gem::Requirement
|
114
120
|
requirements:
|
115
121
|
- - "~>"
|
116
122
|
- !ruby/object:Gem::Version
|
117
|
-
version: '2.
|
123
|
+
version: '2.5'
|
118
124
|
description:
|
119
125
|
email: contact@solidus.io
|
120
126
|
executables: []
|
@@ -147,7 +153,7 @@ files:
|
|
147
153
|
- app/controllers/solidus_paypal_commerce_platform/paypal_orders_controller.rb
|
148
154
|
- app/controllers/solidus_paypal_commerce_platform/shipping_rates_controller.rb
|
149
155
|
- app/controllers/solidus_paypal_commerce_platform/wizard_controller.rb
|
150
|
-
- app/decorators/solidus_paypal_commerce_platform/
|
156
|
+
- app/decorators/models/solidus_paypal_commerce_platform/spree/address_decorator.rb
|
151
157
|
- app/helpers/solidus_paypal_commerce_platform/button_options_helper.rb
|
152
158
|
- app/jobs/solidus_paypal_commerce_platform/application_job.rb
|
153
159
|
- app/jobs/solidus_paypal_commerce_platform/webhook_job.rb
|
@@ -220,6 +226,7 @@ files:
|
|
220
226
|
- spec/models/solidus_paypal_commerce_platform/payment_method_spec.rb
|
221
227
|
- spec/models/solidus_paypal_commerce_platform/payment_source_spec.rb
|
222
228
|
- spec/models/solidus_paypal_commerce_platform/paypal_address_spec.rb
|
229
|
+
- spec/models/solidus_paypal_commerce_platform/paypal_order_spec.rb
|
223
230
|
- spec/models/solidus_paypal_commerce_platform/state_guesser_spec.rb
|
224
231
|
- spec/models/solidus_paypal_commerce_platform/wizard_spec.rb
|
225
232
|
- spec/requests/solidus_paypal_commerce_platform/orders_controller_spec.rb
|
@@ -241,7 +248,7 @@ require_paths:
|
|
241
248
|
- lib
|
242
249
|
required_ruby_version: !ruby/object:Gem::Requirement
|
243
250
|
requirements:
|
244
|
-
- - "
|
251
|
+
- - ">="
|
245
252
|
- !ruby/object:Gem::Version
|
246
253
|
version: '2.5'
|
247
254
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
@@ -250,7 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
250
257
|
- !ruby/object:Gem::Version
|
251
258
|
version: '0'
|
252
259
|
requirements: []
|
253
|
-
rubygems_version: 3.1.
|
260
|
+
rubygems_version: 3.1.4
|
254
261
|
signing_key:
|
255
262
|
specification_version: 4
|
256
263
|
summary: Integrate Solidus with Paypal Commerce Platform
|
@@ -273,6 +280,7 @@ test_files:
|
|
273
280
|
- spec/models/solidus_paypal_commerce_platform/payment_method_spec.rb
|
274
281
|
- spec/models/solidus_paypal_commerce_platform/payment_source_spec.rb
|
275
282
|
- spec/models/solidus_paypal_commerce_platform/paypal_address_spec.rb
|
283
|
+
- spec/models/solidus_paypal_commerce_platform/paypal_order_spec.rb
|
276
284
|
- spec/models/solidus_paypal_commerce_platform/state_guesser_spec.rb
|
277
285
|
- spec/models/solidus_paypal_commerce_platform/wizard_spec.rb
|
278
286
|
- spec/requests/solidus_paypal_commerce_platform/orders_controller_spec.rb
|
@@ -1,13 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RemoveRequiredPhoneFromAddress
|
4
|
-
# PayPal doesn't use the phone number, so in cases where the user checks out via
|
5
|
-
# PayPal, this field will be unpopulated. If you want to require phone numbers,
|
6
|
-
# you'll need to turn off cart & product page displays on the payment method edit
|
7
|
-
# page.
|
8
|
-
def require_phone?
|
9
|
-
super && false
|
10
|
-
end
|
11
|
-
|
12
|
-
::Spree::Address.prepend self
|
13
|
-
end
|