solidus_paypal_commerce_platform 0.3.2 → 0.5.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/.circleci/config.yml +25 -2
- data/.rubocop.yml +6 -5
- data/CHANGELOG.md +180 -122
- data/Gemfile +16 -3
- data/README.md +27 -2
- data/app/assets/javascripts/spree/frontend/solidus_paypal_commerce_platform/button_actions.js +3 -1
- data/app/assets/javascripts/spree/frontend/solidus_paypal_commerce_platform/buttons.js +14 -0
- data/app/controllers/solidus_paypal_commerce_platform/orders_controller.rb +1 -1
- data/app/controllers/solidus_paypal_commerce_platform/payments_controller.rb +4 -2
- data/app/helpers/solidus_paypal_commerce_platform/button_options_helper.rb +4 -0
- data/app/models/solidus_paypal_commerce_platform/gateway.rb +20 -3
- data/app/models/solidus_paypal_commerce_platform/payment_method.rb +21 -1
- data/app/models/solidus_paypal_commerce_platform/payment_source.rb +12 -1
- data/app/models/solidus_paypal_commerce_platform/paypal_order.rb +6 -21
- data/app/models/solidus_paypal_commerce_platform/wizard.rb +1 -1
- data/bin/rails-engine +1 -1
- data/config/locales/en.yml +34 -1
- data/db/migrate/20211220133406_add_paypal_funding_source_to_paypal_commerce_platform_sources.rb +5 -0
- data/lib/paypal/access_token.rb +22 -0
- data/lib/paypal/lib.rb +19 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_authorize_request.rb +44 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_capture_request.rb +42 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_create_request.rb +36 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_get_request.rb +26 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_patch_request.rb +77 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_validate_request.rb +34 -0
- data/lib/paypal/paypal_checkout_sdk/payments/authorizations_capture_request.rb +38 -0
- data/lib/paypal/paypal_checkout_sdk/payments/authorizations_get_request.rb +26 -0
- data/lib/paypal/paypal_checkout_sdk/payments/authorizations_reauthorize_request.rb +45 -0
- data/lib/paypal/paypal_checkout_sdk/payments/authorizations_void_request.rb +27 -0
- data/lib/paypal/paypal_checkout_sdk/payments/captures_get_request.rb +26 -0
- data/lib/paypal/paypal_checkout_sdk/payments/captures_refund_request.rb +40 -0
- data/lib/paypal/paypal_checkout_sdk/payments/refunds_get_request.rb +26 -0
- data/lib/paypal/paypal_environment.rb +39 -0
- data/lib/paypal/paypal_http_client.rb +56 -0
- data/lib/paypal/token_requests.rb +42 -0
- data/lib/solidus_paypal_commerce_platform/access_token_authorization_request.rb +1 -1
- data/lib/solidus_paypal_commerce_platform/client.rb +4 -4
- data/lib/solidus_paypal_commerce_platform/configuration.rb +4 -4
- data/lib/solidus_paypal_commerce_platform/engine.rb +11 -3
- data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_authorize_request.rb +48 -0
- data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_capture_request.rb +46 -0
- data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_patch_request.rb +80 -0
- data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_validate_request.rb +36 -0
- data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/payments/authorizations_reauthorize_request.rb +50 -0
- data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/payments/captures_refund_request.rb +43 -0
- data/lib/solidus_paypal_commerce_platform/testing_support/factories.rb +2 -1
- data/lib/solidus_paypal_commerce_platform/version.rb +1 -1
- data/lib/solidus_paypal_commerce_platform.rb +1 -0
- data/lib/views/backend/spree/admin/payments/source_views/_paypal_commerce_platform.html.erb +3 -0
- data/lib/views/frontend/solidus_paypal_commerce_platform/payments/_payment.html.erb +4 -0
- data/lib/views/frontend/spree/checkout/payment/_paypal_commerce_platform.html.erb +17 -3
- data/solidus_paypal_commerce_platform.gemspec +9 -8
- metadata +52 -78
- data/spec/features/backend/new_payment_method_spec.rb +0 -40
- data/spec/features/frontend/cart_spec.rb +0 -46
- data/spec/features/frontend/checkout_spec.rb +0 -89
- data/spec/features/frontend/product_spec.rb +0 -91
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.COMPLETED.v2.json +0 -121
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.PROCESSED.v2.json +0 -121
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v1.json +0 -50
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v2.json +0 -72
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v1.json +0 -50
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v2.json +0 -68
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v1.json +0 -51
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v2.json +0 -63
- data/spec/jobs/solidus_paypal_commerce_platform/webhook_job_spec.rb +0 -44
- data/spec/lib/solidus_paypal_commerce_platform/client_spec.rb +0 -21
- data/spec/lib/solidus_paypal_commerce_platform/configuration_spec.rb +0 -91
- data/spec/models/solidus_paypal_commerce_platform/payment_method_spec.rb +0 -129
- data/spec/models/solidus_paypal_commerce_platform/payment_source_spec.rb +0 -62
- data/spec/models/solidus_paypal_commerce_platform/paypal_address_spec.rb +0 -67
- data/spec/models/solidus_paypal_commerce_platform/paypal_order_spec.rb +0 -33
- data/spec/models/solidus_paypal_commerce_platform/state_guesser_spec.rb +0 -38
- data/spec/models/solidus_paypal_commerce_platform/wizard_spec.rb +0 -9
- data/spec/requests/solidus_paypal_commerce_platform/orders_controller_spec.rb +0 -36
- data/spec/requests/solidus_paypal_commerce_platform/shipping_rates_controller_spec.rb +0 -44
- data/spec/requests/solidus_paypal_commerce_platform/wizard_controller_spec.rb +0 -44
- data/spec/spec_helper.rb +0 -32
- data/spec/support/capybara.rb +0 -11
- data/spec/support/paypal_sdk_script_tag_helper.rb +0 -13
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# frozen_string_literal :true
|
|
4
|
+
|
|
5
|
+
# This module was automatically generated from paypal_checkout_sdk 1.0.1
|
|
6
|
+
require 'cgi'
|
|
7
|
+
|
|
8
|
+
module SolidusPaypalCommercePlatform
|
|
9
|
+
module PayPalCheckoutSdk
|
|
10
|
+
module Orders
|
|
11
|
+
#
|
|
12
|
+
# Updates an order that has the `CREATED` or `APPROVED` status. You cannot update
|
|
13
|
+
# an order with `COMPLETED` status. You can patch these attributes and objects:
|
|
14
|
+
# <table>
|
|
15
|
+
# <thead>
|
|
16
|
+
# <tr>
|
|
17
|
+
# <th align="left">Attribute or object</th>
|
|
18
|
+
# <th align="left">Operations</th>
|
|
19
|
+
# </tr>
|
|
20
|
+
# </thead>
|
|
21
|
+
# <tbody>
|
|
22
|
+
# <tr>
|
|
23
|
+
# <td><code>intent</code></td>
|
|
24
|
+
# <td align="left">Replace</td>
|
|
25
|
+
# </tr>
|
|
26
|
+
# <tr>
|
|
27
|
+
# <td><code>purchase_units</code></td>
|
|
28
|
+
# <td align="left">Replace, add</td>
|
|
29
|
+
# </tr>
|
|
30
|
+
# <tr>
|
|
31
|
+
# <td><code>purchase_units[].custom_id</code></td>
|
|
32
|
+
# <td align="left">Replace, add, remove</td>
|
|
33
|
+
# </tr>
|
|
34
|
+
# <tr>
|
|
35
|
+
# <td><code>purchase_units[].description</code></td>
|
|
36
|
+
# <td align="left">Replace, add, remove</td>
|
|
37
|
+
# </tr>
|
|
38
|
+
# <tr>
|
|
39
|
+
# <td><code>purchase_units[].payee.email</code></td>
|
|
40
|
+
# <td align="left">Replace, add</td>
|
|
41
|
+
# </tr>
|
|
42
|
+
# <tr>
|
|
43
|
+
# <td><code>purchase_units[].shipping</code></td>
|
|
44
|
+
# <td align="left">Replace, add, remove</td>
|
|
45
|
+
# </tr>
|
|
46
|
+
# <tr>
|
|
47
|
+
# <td><code>purchase_units[].soft_descriptor</code></td>
|
|
48
|
+
# <td align="left">Replace, add, remove</td>
|
|
49
|
+
# </tr>
|
|
50
|
+
# <tr>
|
|
51
|
+
# <td><code>purchase_units[].amount</code></td>
|
|
52
|
+
# <td align="left">Replace</td>
|
|
53
|
+
# </tr>
|
|
54
|
+
# <tr>
|
|
55
|
+
# <td><code>purchase_units[].invoice_id</code></td>
|
|
56
|
+
# <td align="left">Replace, add, remove</td>
|
|
57
|
+
# </tr>
|
|
58
|
+
# </tbody>
|
|
59
|
+
# </table>
|
|
60
|
+
#
|
|
61
|
+
class OrdersPatchRequest
|
|
62
|
+
attr_accessor :path, :body, :headers, :verb
|
|
63
|
+
|
|
64
|
+
def initialize(order_id)
|
|
65
|
+
@headers = {}
|
|
66
|
+
@body = nil
|
|
67
|
+
@verb = "PATCH"
|
|
68
|
+
@path = "/v2/checkout/orders/{order_id}?"
|
|
69
|
+
|
|
70
|
+
@path = @path.gsub("{order_id}", CGI.escape(order_id.to_s))
|
|
71
|
+
@headers["Content-Type"] = "application/json"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def request_body(patch_request)
|
|
75
|
+
@body = patch_request
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_validate_request.rb
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# frozen_string_literal :true
|
|
4
|
+
|
|
5
|
+
# This module was automatically generated from paypal_checkout_sdk 1.0.1
|
|
6
|
+
require 'cgi'
|
|
7
|
+
module SolidusPaypalCommercePlatform
|
|
8
|
+
module PayPalCheckoutSdk
|
|
9
|
+
module Orders
|
|
10
|
+
#
|
|
11
|
+
# Validates a payment method and checks it for contingencies.
|
|
12
|
+
#
|
|
13
|
+
class OrdersValidateRequest
|
|
14
|
+
attr_accessor :path, :body, :headers, :verb
|
|
15
|
+
|
|
16
|
+
def initialize(order_id)
|
|
17
|
+
@headers = {}
|
|
18
|
+
@body = nil
|
|
19
|
+
@verb = "POST"
|
|
20
|
+
@path = "/v2/checkout/orders/{order_id}/validate-payment-method?"
|
|
21
|
+
|
|
22
|
+
@path = @path.gsub("{order_id}", CGI.escape(order_id.to_s))
|
|
23
|
+
@headers["Content-Type"] = "application/json"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def pay_pal_client_metadata_id(pay_pal_client_metadata_id)
|
|
27
|
+
@headers["PayPal-Client-Metadata-Id"] = pay_pal_client_metadata_id
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def request_body(order_action_request)
|
|
31
|
+
@body = order_action_request
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# frozen_string_literal :true
|
|
4
|
+
|
|
5
|
+
# This module was automatically generated from paypal_checkout_sdk 1.0.1
|
|
6
|
+
require 'cgi'
|
|
7
|
+
|
|
8
|
+
module SolidusPaypalCommercePlatform
|
|
9
|
+
module PayPalCheckoutSdk
|
|
10
|
+
module Payments
|
|
11
|
+
#
|
|
12
|
+
# Reauthorizes an authorized PayPal account payment, by ID. To ensure
|
|
13
|
+
# that funds are still available, reauthorize a payment after its
|
|
14
|
+
# initial three-day honor period expires. You can reauthorize a payment
|
|
15
|
+
# only once from days four to 29.<br/><br/>If 30 days have transpired since
|
|
16
|
+
# the date of the original authorization, you must create an authorized
|
|
17
|
+
# payment instead of reauthorizing the original authorized payment.<br/><br/>
|
|
18
|
+
# A reauthorized payment itself has a new honor period of three days.
|
|
19
|
+
# <br/><br/>You can reauthorize an authorized payment once for up to 115%
|
|
20
|
+
# of the original authorized amount, not to exceed an increase of
|
|
21
|
+
# $75 USD.<br/><br/>Supports only the `amount` request parameter.
|
|
22
|
+
#
|
|
23
|
+
class AuthorizationsReauthorizeRequest
|
|
24
|
+
attr_accessor :path, :body, :headers, :verb
|
|
25
|
+
|
|
26
|
+
def initialize(authorization_id)
|
|
27
|
+
@headers = {}
|
|
28
|
+
@body = nil
|
|
29
|
+
@verb = "POST"
|
|
30
|
+
@path = "/v2/payments/authorizations/{authorization_id}/reauthorize?"
|
|
31
|
+
|
|
32
|
+
@path = @path.gsub("{authorization_id}", CGI.escape(authorization_id.to_s))
|
|
33
|
+
@headers["Content-Type"] = "application/json"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def pay_pal_request_id(pay_pal_request_id)
|
|
37
|
+
@headers["PayPal-Request-Id"] = pay_pal_request_id
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def prefer(prefer)
|
|
41
|
+
@headers["Prefer"] = prefer
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def request_body(reauthorize_request)
|
|
45
|
+
@body = reauthorize_request
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/payments/captures_refund_request.rb
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# frozen_string_literal :true
|
|
4
|
+
|
|
5
|
+
# This module was automatically generated from paypal_checkout_sdk 1.0.1
|
|
6
|
+
require 'cgi'
|
|
7
|
+
|
|
8
|
+
module SolidusPaypalCommercePlatform
|
|
9
|
+
module PayPalCheckoutSdk
|
|
10
|
+
module Payments
|
|
11
|
+
#
|
|
12
|
+
# Refunds a captured payment, by ID. For a full refund, include an
|
|
13
|
+
# empty payload in the JSON request body. For a partial refund,
|
|
14
|
+
# include an <code>amount</code> object in the JSON request body.
|
|
15
|
+
#
|
|
16
|
+
class CapturesRefundRequest
|
|
17
|
+
attr_accessor :path, :body, :headers, :verb
|
|
18
|
+
|
|
19
|
+
def initialize(capture_id)
|
|
20
|
+
@headers = {}
|
|
21
|
+
@body = nil
|
|
22
|
+
@verb = "POST"
|
|
23
|
+
@path = "/v2/payments/captures/{capture_id}/refund?"
|
|
24
|
+
|
|
25
|
+
@path = @path.gsub("{capture_id}", CGI.escape(capture_id.to_s))
|
|
26
|
+
@headers["Content-Type"] = "application/json"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def pay_pal_request_id(pay_pal_request_id)
|
|
30
|
+
@headers["PayPal-Request-Id"] = pay_pal_request_id
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def prefer(prefer)
|
|
34
|
+
@headers["Prefer"] = prefer
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def request_body(refund_request)
|
|
38
|
+
@body = refund_request
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -7,6 +7,7 @@ require 'solidus_paypal_commerce_platform/client'
|
|
|
7
7
|
require 'solidus_paypal_commerce_platform/configuration'
|
|
8
8
|
require 'solidus_paypal_commerce_platform/version'
|
|
9
9
|
require 'solidus_paypal_commerce_platform/engine'
|
|
10
|
+
require 'paypal/lib'
|
|
10
11
|
|
|
11
12
|
module SolidusPaypalCommercePlatform
|
|
12
13
|
class << self
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
<% if payment.source.respond_to?(:paypal_funding_source) %>
|
|
2
|
+
<br />
|
|
3
|
+
<%= t('paypal_funding', funding: payment.source.display_paypal_funding_source) %>
|
|
4
|
+
<% end %>
|
|
1
5
|
<% if payment.source.respond_to?(:paypal_email) %>
|
|
2
6
|
<br />
|
|
3
7
|
<%= t('payment_email', email: payment.source.paypal_email) %>
|
|
@@ -6,13 +6,27 @@
|
|
|
6
6
|
|
|
7
7
|
<input type="hidden" name="payment_source[<%= payment_method.id %>][paypal_order_id]" id="payments_source_paypal_order_id">
|
|
8
8
|
<input type="hidden" name="payment_source[<%= payment_method.id %>][paypal_email]" id="payments_source_paypal_email">
|
|
9
|
+
<input type="hidden" name="payment_source[<%= payment_method.id %>][paypal_funding_source]" id="payments_source_paypal_funding_source">
|
|
9
10
|
|
|
10
11
|
<script>
|
|
11
12
|
Spree.current_order_id = "<%= @order.number %>"
|
|
12
13
|
Spree.current_order_token = "<%= @order.guest_token %>"
|
|
13
|
-
$( document ).ready(function() {
|
|
14
|
-
SolidusPaypalCommercePlatform.renderButton("<%= payment_method.id %>",<%= raw payment_method.button_style.to_json %>)
|
|
15
|
-
})
|
|
16
14
|
</script>
|
|
17
15
|
|
|
16
|
+
<% unless payment_method.render_only_venmo_standalone? %>
|
|
17
|
+
<script>
|
|
18
|
+
$( document ).ready(function() {
|
|
19
|
+
SolidusPaypalCommercePlatform.renderButton("<%= payment_method.id %>",<%= raw payment_method.button_style.to_json %>)
|
|
20
|
+
})
|
|
21
|
+
</script>
|
|
22
|
+
<% end %>
|
|
23
|
+
|
|
24
|
+
<% if payment_method.venmo_standalone_enabled? %>
|
|
25
|
+
<script>
|
|
26
|
+
$( document ).ready(function() {
|
|
27
|
+
SolidusPaypalCommercePlatform.renderVenmoStandalone("<%= payment_method.id %>",<%= raw payment_method.button_style.to_json %>)
|
|
28
|
+
})
|
|
29
|
+
</script>
|
|
30
|
+
<% end %>
|
|
31
|
+
|
|
18
32
|
<div id="paypal_commerce_platform_overlay"></div>
|
|
@@ -9,31 +9,32 @@ Gem::Specification.new do |spec|
|
|
|
9
9
|
spec.email = 'contact@solidus.io'
|
|
10
10
|
|
|
11
11
|
spec.summary = 'Integrate Solidus with Paypal Commerce Platform'
|
|
12
|
-
spec.homepage = 'https://github.com/solidusio
|
|
12
|
+
spec.homepage = 'https://github.com/solidusio/solidus_paypal_commerce_platform'
|
|
13
13
|
spec.license = 'BSD-3-Clause'
|
|
14
14
|
|
|
15
15
|
spec.metadata['homepage_uri'] = spec.homepage
|
|
16
|
-
spec.metadata['source_code_uri'] = 'https://github.com/solidusio
|
|
17
|
-
spec.metadata['changelog_uri'] = 'https://github.com/solidusio
|
|
16
|
+
spec.metadata['source_code_uri'] = 'https://github.com/solidusio/solidus_paypal_commerce_platform'
|
|
17
|
+
spec.metadata['changelog_uri'] = 'https://github.com/solidusio/solidus_paypal_commerce_platform/releases'
|
|
18
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
|
18
19
|
|
|
19
|
-
spec.required_ruby_version = Gem::Requirement.new('>= 2.
|
|
20
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.7')
|
|
20
21
|
|
|
21
22
|
# Specify which files should be added to the gem when it is released.
|
|
22
23
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
23
24
|
files = Dir.chdir(__dir__) { `git ls-files -z`.split("\x0") }
|
|
24
25
|
|
|
25
26
|
spec.files = files.grep_v(%r{^(test|spec|features)/})
|
|
26
|
-
spec.test_files = files.grep(%r{^(test|spec|features)/})
|
|
27
27
|
spec.bindir = "exe"
|
|
28
28
|
spec.executables = files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
29
29
|
spec.require_paths = ["lib"]
|
|
30
30
|
|
|
31
31
|
spec.add_dependency 'deface', '~> 1.5'
|
|
32
|
-
spec.add_dependency '
|
|
33
|
-
spec.add_dependency '
|
|
32
|
+
spec.add_dependency 'solidus_api'
|
|
33
|
+
spec.add_dependency 'solidus_core', '~> 3.0'
|
|
34
|
+
spec.add_dependency 'solidus_support', '>= 0.8.0'
|
|
34
35
|
spec.add_dependency 'solidus_webhooks', '~> 0.2'
|
|
35
36
|
|
|
36
|
-
spec.add_dependency '
|
|
37
|
+
spec.add_dependency 'paypalhttp'
|
|
37
38
|
|
|
38
39
|
spec.add_development_dependency 'cuprite'
|
|
39
40
|
spec.add_development_dependency 'solidus_dev_support', '~> 2.5'
|
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.
|
|
4
|
+
version: 0.5.0
|
|
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: 2022-10-07 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: deface
|
|
@@ -26,25 +26,33 @@ dependencies:
|
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
27
|
version: '1.5'
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
|
-
name:
|
|
29
|
+
name: solidus_api
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
31
31
|
requirements:
|
|
32
32
|
- - ">="
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version:
|
|
35
|
-
- - "<"
|
|
36
|
-
- !ruby/object:Gem::Version
|
|
37
|
-
version: '4'
|
|
34
|
+
version: '0'
|
|
38
35
|
type: :runtime
|
|
39
36
|
prerelease: false
|
|
40
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
41
38
|
requirements:
|
|
42
39
|
- - ">="
|
|
43
40
|
- !ruby/object:Gem::Version
|
|
44
|
-
version:
|
|
45
|
-
|
|
41
|
+
version: '0'
|
|
42
|
+
- !ruby/object:Gem::Dependency
|
|
43
|
+
name: solidus_core
|
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
|
45
|
+
requirements:
|
|
46
|
+
- - "~>"
|
|
46
47
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
48
|
+
version: '3.0'
|
|
49
|
+
type: :runtime
|
|
50
|
+
prerelease: false
|
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
52
|
+
requirements:
|
|
53
|
+
- - "~>"
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
version: '3.0'
|
|
48
56
|
- !ruby/object:Gem::Dependency
|
|
49
57
|
name: solidus_support
|
|
50
58
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -52,9 +60,6 @@ dependencies:
|
|
|
52
60
|
- - ">="
|
|
53
61
|
- !ruby/object:Gem::Version
|
|
54
62
|
version: 0.8.0
|
|
55
|
-
- - "<"
|
|
56
|
-
- !ruby/object:Gem::Version
|
|
57
|
-
version: '1'
|
|
58
63
|
type: :runtime
|
|
59
64
|
prerelease: false
|
|
60
65
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -62,9 +67,6 @@ dependencies:
|
|
|
62
67
|
- - ">="
|
|
63
68
|
- !ruby/object:Gem::Version
|
|
64
69
|
version: 0.8.0
|
|
65
|
-
- - "<"
|
|
66
|
-
- !ruby/object:Gem::Version
|
|
67
|
-
version: '1'
|
|
68
70
|
- !ruby/object:Gem::Dependency
|
|
69
71
|
name: solidus_webhooks
|
|
70
72
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -80,7 +82,7 @@ dependencies:
|
|
|
80
82
|
- !ruby/object:Gem::Version
|
|
81
83
|
version: '0.2'
|
|
82
84
|
- !ruby/object:Gem::Dependency
|
|
83
|
-
name:
|
|
85
|
+
name: paypalhttp
|
|
84
86
|
requirement: !ruby/object:Gem::Requirement
|
|
85
87
|
requirements:
|
|
86
88
|
- - ">="
|
|
@@ -186,14 +188,39 @@ files:
|
|
|
186
188
|
- config/locales/en.yml
|
|
187
189
|
- config/routes.rb
|
|
188
190
|
- db/migrate/20200521190038_add_paypal_commerce_platform_sources.rb
|
|
191
|
+
- db/migrate/20211220133406_add_paypal_funding_source_to_paypal_commerce_platform_sources.rb
|
|
189
192
|
- lib/generators/solidus_paypal_commerce_platform/install/install_generator.rb
|
|
190
193
|
- lib/generators/solidus_paypal_commerce_platform/install/templates/initializer.rb
|
|
194
|
+
- lib/paypal/access_token.rb
|
|
195
|
+
- lib/paypal/lib.rb
|
|
196
|
+
- lib/paypal/paypal_checkout_sdk/orders/orders_authorize_request.rb
|
|
197
|
+
- lib/paypal/paypal_checkout_sdk/orders/orders_capture_request.rb
|
|
198
|
+
- lib/paypal/paypal_checkout_sdk/orders/orders_create_request.rb
|
|
199
|
+
- lib/paypal/paypal_checkout_sdk/orders/orders_get_request.rb
|
|
200
|
+
- lib/paypal/paypal_checkout_sdk/orders/orders_patch_request.rb
|
|
201
|
+
- lib/paypal/paypal_checkout_sdk/orders/orders_validate_request.rb
|
|
202
|
+
- lib/paypal/paypal_checkout_sdk/payments/authorizations_capture_request.rb
|
|
203
|
+
- lib/paypal/paypal_checkout_sdk/payments/authorizations_get_request.rb
|
|
204
|
+
- lib/paypal/paypal_checkout_sdk/payments/authorizations_reauthorize_request.rb
|
|
205
|
+
- lib/paypal/paypal_checkout_sdk/payments/authorizations_void_request.rb
|
|
206
|
+
- lib/paypal/paypal_checkout_sdk/payments/captures_get_request.rb
|
|
207
|
+
- lib/paypal/paypal_checkout_sdk/payments/captures_refund_request.rb
|
|
208
|
+
- lib/paypal/paypal_checkout_sdk/payments/refunds_get_request.rb
|
|
209
|
+
- lib/paypal/paypal_environment.rb
|
|
210
|
+
- lib/paypal/paypal_http_client.rb
|
|
211
|
+
- lib/paypal/token_requests.rb
|
|
191
212
|
- lib/solidus_paypal_commerce_platform.rb
|
|
192
213
|
- lib/solidus_paypal_commerce_platform/access_token_authorization_request.rb
|
|
193
214
|
- lib/solidus_paypal_commerce_platform/client.rb
|
|
194
215
|
- lib/solidus_paypal_commerce_platform/configuration.rb
|
|
195
216
|
- lib/solidus_paypal_commerce_platform/engine.rb
|
|
196
217
|
- lib/solidus_paypal_commerce_platform/fetch_merchant_credentials_request.rb
|
|
218
|
+
- lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_authorize_request.rb
|
|
219
|
+
- lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_capture_request.rb
|
|
220
|
+
- lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_patch_request.rb
|
|
221
|
+
- lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_validate_request.rb
|
|
222
|
+
- lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/payments/authorizations_reauthorize_request.rb
|
|
223
|
+
- lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/payments/captures_refund_request.rb
|
|
197
224
|
- lib/solidus_paypal_commerce_platform/testing_support/factories.rb
|
|
198
225
|
- lib/solidus_paypal_commerce_platform/version.rb
|
|
199
226
|
- lib/views/api/spree/api/payments/source_views/_paypal_commerce_platform.json.jbuilder
|
|
@@ -208,40 +235,14 @@ files:
|
|
|
208
235
|
- lib/views/frontend/spree/orders/payment/_paypal_commerce_platform.html.erb
|
|
209
236
|
- lib/views/frontend/spree/products/payment/_paypal_commerce_platform.html.erb
|
|
210
237
|
- solidus_paypal_commerce_platform.gemspec
|
|
211
|
-
|
|
212
|
-
- spec/features/frontend/cart_spec.rb
|
|
213
|
-
- spec/features/frontend/checkout_spec.rb
|
|
214
|
-
- spec/features/frontend/product_spec.rb
|
|
215
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.COMPLETED.v2.json
|
|
216
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.PROCESSED.v2.json
|
|
217
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v1.json
|
|
218
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v2.json
|
|
219
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v1.json
|
|
220
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v2.json
|
|
221
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v1.json
|
|
222
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v2.json
|
|
223
|
-
- spec/jobs/solidus_paypal_commerce_platform/webhook_job_spec.rb
|
|
224
|
-
- spec/lib/solidus_paypal_commerce_platform/client_spec.rb
|
|
225
|
-
- spec/lib/solidus_paypal_commerce_platform/configuration_spec.rb
|
|
226
|
-
- spec/models/solidus_paypal_commerce_platform/payment_method_spec.rb
|
|
227
|
-
- spec/models/solidus_paypal_commerce_platform/payment_source_spec.rb
|
|
228
|
-
- spec/models/solidus_paypal_commerce_platform/paypal_address_spec.rb
|
|
229
|
-
- spec/models/solidus_paypal_commerce_platform/paypal_order_spec.rb
|
|
230
|
-
- spec/models/solidus_paypal_commerce_platform/state_guesser_spec.rb
|
|
231
|
-
- spec/models/solidus_paypal_commerce_platform/wizard_spec.rb
|
|
232
|
-
- spec/requests/solidus_paypal_commerce_platform/orders_controller_spec.rb
|
|
233
|
-
- spec/requests/solidus_paypal_commerce_platform/shipping_rates_controller_spec.rb
|
|
234
|
-
- spec/requests/solidus_paypal_commerce_platform/wizard_controller_spec.rb
|
|
235
|
-
- spec/spec_helper.rb
|
|
236
|
-
- spec/support/capybara.rb
|
|
237
|
-
- spec/support/paypal_sdk_script_tag_helper.rb
|
|
238
|
-
homepage: https://github.com/solidusio-contrib/solidus_paypal_commerce_platform
|
|
238
|
+
homepage: https://github.com/solidusio/solidus_paypal_commerce_platform
|
|
239
239
|
licenses:
|
|
240
240
|
- BSD-3-Clause
|
|
241
241
|
metadata:
|
|
242
|
-
homepage_uri: https://github.com/solidusio
|
|
243
|
-
source_code_uri: https://github.com/solidusio
|
|
244
|
-
changelog_uri: https://github.com/solidusio
|
|
242
|
+
homepage_uri: https://github.com/solidusio/solidus_paypal_commerce_platform
|
|
243
|
+
source_code_uri: https://github.com/solidusio/solidus_paypal_commerce_platform
|
|
244
|
+
changelog_uri: https://github.com/solidusio/solidus_paypal_commerce_platform/releases
|
|
245
|
+
rubygems_mfa_required: 'true'
|
|
245
246
|
post_install_message:
|
|
246
247
|
rdoc_options: []
|
|
247
248
|
require_paths:
|
|
@@ -250,42 +251,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
250
251
|
requirements:
|
|
251
252
|
- - ">="
|
|
252
253
|
- !ruby/object:Gem::Version
|
|
253
|
-
version: '2.
|
|
254
|
+
version: '2.7'
|
|
254
255
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
255
256
|
requirements:
|
|
256
257
|
- - ">="
|
|
257
258
|
- !ruby/object:Gem::Version
|
|
258
259
|
version: '0'
|
|
259
260
|
requirements: []
|
|
260
|
-
rubygems_version: 3.
|
|
261
|
+
rubygems_version: 3.3.21
|
|
261
262
|
signing_key:
|
|
262
263
|
specification_version: 4
|
|
263
264
|
summary: Integrate Solidus with Paypal Commerce Platform
|
|
264
|
-
test_files:
|
|
265
|
-
- spec/features/backend/new_payment_method_spec.rb
|
|
266
|
-
- spec/features/frontend/cart_spec.rb
|
|
267
|
-
- spec/features/frontend/checkout_spec.rb
|
|
268
|
-
- spec/features/frontend/product_spec.rb
|
|
269
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.COMPLETED.v2.json
|
|
270
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.PROCESSED.v2.json
|
|
271
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v1.json
|
|
272
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v2.json
|
|
273
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v1.json
|
|
274
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v2.json
|
|
275
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v1.json
|
|
276
|
-
- spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v2.json
|
|
277
|
-
- spec/jobs/solidus_paypal_commerce_platform/webhook_job_spec.rb
|
|
278
|
-
- spec/lib/solidus_paypal_commerce_platform/client_spec.rb
|
|
279
|
-
- spec/lib/solidus_paypal_commerce_platform/configuration_spec.rb
|
|
280
|
-
- spec/models/solidus_paypal_commerce_platform/payment_method_spec.rb
|
|
281
|
-
- spec/models/solidus_paypal_commerce_platform/payment_source_spec.rb
|
|
282
|
-
- spec/models/solidus_paypal_commerce_platform/paypal_address_spec.rb
|
|
283
|
-
- spec/models/solidus_paypal_commerce_platform/paypal_order_spec.rb
|
|
284
|
-
- spec/models/solidus_paypal_commerce_platform/state_guesser_spec.rb
|
|
285
|
-
- spec/models/solidus_paypal_commerce_platform/wizard_spec.rb
|
|
286
|
-
- spec/requests/solidus_paypal_commerce_platform/orders_controller_spec.rb
|
|
287
|
-
- spec/requests/solidus_paypal_commerce_platform/shipping_rates_controller_spec.rb
|
|
288
|
-
- spec/requests/solidus_paypal_commerce_platform/wizard_controller_spec.rb
|
|
289
|
-
- spec/spec_helper.rb
|
|
290
|
-
- spec/support/capybara.rb
|
|
291
|
-
- spec/support/paypal_sdk_script_tag_helper.rb
|
|
265
|
+
test_files: []
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
RSpec.describe "creating a new payment" do
|
|
4
|
-
stub_authorization!
|
|
5
|
-
|
|
6
|
-
it "displays PayPal Commerce Platform as an option" do
|
|
7
|
-
visit "/admin/payment_methods/new"
|
|
8
|
-
expect(page).to have_select('payment_method_type', options: [
|
|
9
|
-
"PayPal Commerce Platform",
|
|
10
|
-
"Bogus Credit Card Payments",
|
|
11
|
-
"Check Payments",
|
|
12
|
-
"Simple Bogus Credit Card Payments",
|
|
13
|
-
"Store Credit Payments",
|
|
14
|
-
])
|
|
15
|
-
select "PayPal Commerce Platform", from: 'payment_method_type'
|
|
16
|
-
fill_in "Name", with: "PayPal!"
|
|
17
|
-
click_on "Create"
|
|
18
|
-
expect(page).to have_text("Payment Method has been successfully created!")
|
|
19
|
-
|
|
20
|
-
fill_in "Client", with: "cli-123"
|
|
21
|
-
fill_in "Client secret", with: "cli-sec-123"
|
|
22
|
-
click_on "Update"
|
|
23
|
-
expect(page).to have_text("Payment Method has been successfully updated!")
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it "displays the onboarding button", :js do
|
|
27
|
-
visit "/admin/payment_methods"
|
|
28
|
-
|
|
29
|
-
# main_window = current_window
|
|
30
|
-
|
|
31
|
-
within ".setup-wizard" do
|
|
32
|
-
paypal_button = page.find("button")
|
|
33
|
-
expect(paypal_button.text).to eq("Setup PayPal Commerce Platform")
|
|
34
|
-
# TODO: make this more complete
|
|
35
|
-
# paypal_window = window_opened_by do
|
|
36
|
-
# paypal_button.click
|
|
37
|
-
# end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
RSpec.describe "Cart page" do
|
|
4
|
-
describe "paypal payment method" do
|
|
5
|
-
let(:order) { Spree::TestingSupport::OrderWalkthrough.up_to(:address) }
|
|
6
|
-
let(:paypal_payment_method) { create(:paypal_payment_method) }
|
|
7
|
-
|
|
8
|
-
before do
|
|
9
|
-
user = create(:user)
|
|
10
|
-
order.user = user
|
|
11
|
-
|
|
12
|
-
paypal_payment_method
|
|
13
|
-
allow_any_instance_of(Spree::OrdersController).to receive_messages(
|
|
14
|
-
current_order: order,
|
|
15
|
-
try_spree_current_user: user
|
|
16
|
-
)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
context "when generating a script tag" do
|
|
20
|
-
it "generates a url with the correct credentials attached" do
|
|
21
|
-
visit '/cart'
|
|
22
|
-
expect(js_sdk_script_query).to include("client-id=#{paypal_payment_method.preferences[:client_id]}")
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "generates a partner_id attribute with the correct partner code attached" do
|
|
26
|
-
visit '/cart'
|
|
27
|
-
expect(js_sdk_script_partner_id).to eq("Solidus_PCP_SP")
|
|
28
|
-
end
|
|
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
|
-
|
|
36
|
-
context "when auto-capture is set to true" do
|
|
37
|
-
it "generates a url with intent capture" do
|
|
38
|
-
paypal_payment_method.update(auto_capture: true)
|
|
39
|
-
visit '/cart'
|
|
40
|
-
expect(js_sdk_script_query).to include("client-id=#{paypal_payment_method.preferences[:client_id]}")
|
|
41
|
-
expect(js_sdk_script_query).to include("intent=capture")
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|