solidus_paypal_commerce_platform 0.0.1 → 0.3.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/.github/stale.yml +4 -4
- data/.github_changelog_generator +2 -0
- data/.rubocop.yml +18 -5
- data/CHANGELOG.md +181 -0
- data/README.md +49 -28
- data/app/assets/javascripts/spree/frontend/solidus_paypal_commerce_platform/button_actions.js +14 -4
- data/app/assets/javascripts/spree/frontend/solidus_paypal_commerce_platform/buttons.js +6 -3
- data/app/controllers/solidus_paypal_commerce_platform/orders_controller.rb +8 -5
- data/app/controllers/solidus_paypal_commerce_platform/paypal_orders_controller.rb +3 -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/gateway.rb +1 -2
- data/app/models/solidus_paypal_commerce_platform/payment_method.rb +4 -1
- data/app/models/solidus_paypal_commerce_platform/paypal_address.rb +27 -23
- data/app/models/solidus_paypal_commerce_platform/paypal_order.rb +3 -3
- data/app/models/solidus_paypal_commerce_platform/pricing_options.rb +1 -1
- data/app/models/solidus_paypal_commerce_platform/state_guesser.rb +28 -0
- data/bin/rails-sandbox +1 -3
- data/bin/sandbox +2 -2
- data/lib/generators/solidus_paypal_commerce_platform/install/install_generator.rb +14 -5
- data/lib/generators/solidus_paypal_commerce_platform/install/templates/initializer.rb +6 -0
- data/lib/solidus_paypal_commerce_platform.rb +7 -5
- data/lib/solidus_paypal_commerce_platform/client.rb +5 -4
- data/lib/solidus_paypal_commerce_platform/configuration.rb +14 -4
- data/lib/solidus_paypal_commerce_platform/{factories.rb → testing_support/factories.rb} +0 -0
- data/lib/solidus_paypal_commerce_platform/version.rb +1 -1
- data/lib/views/frontend/solidus_paypal_commerce_platform/shared/_javascript_sdk_tag.html.erb +6 -0
- data/lib/views/frontend/spree/checkout/payment/_paypal_commerce_platform.html.erb +6 -1
- data/lib/views/frontend/spree/orders/payment/_paypal_commerce_platform.html.erb +3 -2
- data/lib/views/frontend/spree/products/payment/_paypal_commerce_platform.html.erb +3 -2
- data/solidus_paypal_commerce_platform.gemspec +7 -6
- data/spec/features/frontend/cart_spec.rb +21 -13
- data/spec/features/frontend/checkout_spec.rb +21 -13
- data/spec/features/frontend/product_spec.rb +27 -15
- data/spec/lib/solidus_paypal_commerce_platform/client_spec.rb +1 -1
- data/spec/lib/solidus_paypal_commerce_platform/configuration_spec.rb +28 -4
- data/spec/models/solidus_paypal_commerce_platform/payment_method_spec.rb +19 -0
- data/spec/models/solidus_paypal_commerce_platform/paypal_address_spec.rb +17 -5
- data/spec/models/solidus_paypal_commerce_platform/state_guesser_spec.rb +38 -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 +10 -8
- data/spec/support/capybara.rb +11 -0
- data/spec/support/paypal_sdk_script_tag_helper.rb +13 -0
- metadata +46 -15
- data/app/decorators/solidus_paypal_commerce_platform/remove_required_phone_from_address.rb +0 -13
@@ -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
|
@@ -64,10 +65,12 @@ module SolidusPaypalCommercePlatform
|
|
64
65
|
],
|
65
66
|
recipient: [
|
66
67
|
:email_address,
|
67
|
-
|
68
|
-
:
|
69
|
-
|
70
|
-
|
68
|
+
{
|
69
|
+
name: [
|
70
|
+
:given_name,
|
71
|
+
:surname,
|
72
|
+
]
|
73
|
+
}
|
71
74
|
]
|
72
75
|
)
|
73
76
|
end
|
@@ -7,7 +7,9 @@ module SolidusPaypalCommercePlatform
|
|
7
7
|
|
8
8
|
def show
|
9
9
|
authorize! :show, @order, order_token
|
10
|
-
|
10
|
+
order_request = @payment_method.gateway.create_order(@order, @payment_method.auto_capture)
|
11
|
+
|
12
|
+
render json: order_request, status: order_request.status_code
|
11
13
|
end
|
12
14
|
|
13
15
|
private
|
@@ -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
|
@@ -77,8 +77,7 @@ module SolidusPaypalCommercePlatform
|
|
77
77
|
request = OrdersCreateRequest.new
|
78
78
|
paypal_order = SolidusPaypalCommercePlatform::PaypalOrder.new(order)
|
79
79
|
request.request_body paypal_order.to_json(intent)
|
80
|
-
|
81
|
-
@client.execute(request).result
|
80
|
+
@client.execute(request)
|
82
81
|
end
|
83
82
|
|
84
83
|
def get_order(order_id)
|
@@ -11,6 +11,7 @@ module SolidusPaypalCommercePlatform
|
|
11
11
|
preference :paypal_button_layout, :paypal_select, default: "vertical"
|
12
12
|
preference :display_on_cart, :boolean, default: true
|
13
13
|
preference :display_on_product_page, :boolean, default: true
|
14
|
+
preference :display_credit_messaging, :boolean, default: true
|
14
15
|
|
15
16
|
def partial_name
|
16
17
|
"paypal_commerce_platform"
|
@@ -57,7 +58,7 @@ module SolidusPaypalCommercePlatform
|
|
57
58
|
}
|
58
59
|
end
|
59
60
|
|
60
|
-
def javascript_sdk_url(order: nil)
|
61
|
+
def javascript_sdk_url(order: nil, currency: nil)
|
61
62
|
# Both instance and class respond to checkout_steps.
|
62
63
|
step_names = order ? order.checkout_steps : ::Spree::Order.checkout_steps.keys
|
63
64
|
|
@@ -67,6 +68,8 @@ module SolidusPaypalCommercePlatform
|
|
67
68
|
'client-id': client_id,
|
68
69
|
intent: auto_capture ? "capture" : "authorize",
|
69
70
|
commit: commit_immediately ? "false" : "true",
|
71
|
+
components: options[:display_credit_messaging] ? "buttons,messages" : "buttons",
|
72
|
+
currency: currency
|
70
73
|
}
|
71
74
|
|
72
75
|
"https://www.paypal.com/sdk/js?#{parameters.to_query}"
|
@@ -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
|
|
@@ -42,40 +42,44 @@ module SolidusPaypalCommercePlatform
|
|
42
42
|
@order.update(email: recipient[:email_address])
|
43
43
|
end
|
44
44
|
|
45
|
+
def find_state(state_name, country)
|
46
|
+
if state = country.states.find_by(abbr: state_name) || country.states.find_by(name: state_name)
|
47
|
+
state
|
48
|
+
else
|
49
|
+
SolidusPaypalCommercePlatform.config.state_guesser_class.new(state_name, country).guess
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
45
53
|
def format_simulated_address(paypal_address)
|
46
|
-
|
47
|
-
|
54
|
+
# Adds fake information for a few fields, so validations can run
|
55
|
+
paypal_address[:address_line_1] = "123 Fake St."
|
56
|
+
|
48
57
|
::Spree::Address.new(
|
49
|
-
|
50
|
-
state: country.states.find_by(abbr: paypal_address[:state]),
|
51
|
-
state_name: paypal_address[:state],
|
52
|
-
zipcode: paypal_address[:postal_code],
|
53
|
-
country: country,
|
54
|
-
address1: "123 Fake St.",
|
55
|
-
phone: "123456789",
|
56
|
-
firstname: "Fake"
|
58
|
+
address_attributes(paypal_address, { name: { given_name: "Fake" } })
|
57
59
|
)
|
58
60
|
end
|
59
61
|
|
60
|
-
def
|
61
|
-
address = paypal_address[:updated_address]
|
62
|
-
recipient = paypal_address[:recipient]
|
62
|
+
def address_attributes(address, recipient)
|
63
63
|
country = ::Spree::Country.find_by(iso: address[:country_code])
|
64
|
-
state = country.states.where(abbr: address[:admin_area_1]).or(
|
65
|
-
country.states.where(name: address[:admin_area_1])
|
66
|
-
).first
|
67
64
|
|
68
|
-
{
|
65
|
+
attributes = {
|
69
66
|
address1: address[:address_line_1],
|
70
67
|
address2: address[:address_line_2],
|
71
|
-
state: state,
|
72
|
-
state_name: address[:admin_area_1],
|
73
|
-
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],
|
74
71
|
country: country,
|
75
72
|
zipcode: address[:postal_code],
|
76
|
-
firstname: recipient[:name][:given_name],
|
77
|
-
lastname: recipient[:name][:surname]
|
78
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
|
79
83
|
end
|
80
84
|
end
|
81
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
|
|
@@ -50,12 +50,12 @@ module SolidusPaypalCommercePlatform
|
|
50
50
|
}
|
51
51
|
end
|
52
52
|
|
53
|
-
def purchase_units
|
53
|
+
def purchase_units(include_shipping_address: true)
|
54
54
|
[
|
55
55
|
{
|
56
56
|
amount: amount,
|
57
57
|
items: line_items,
|
58
|
-
shipping: (shipping_info if @order.ship_address)
|
58
|
+
shipping: (shipping_info if @order.ship_address && include_shipping_address)
|
59
59
|
}
|
60
60
|
]
|
61
61
|
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
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SolidusPaypalCommercePlatform
|
4
|
+
class StateGuesser
|
5
|
+
def initialize(state_name, country)
|
6
|
+
@state_name = state_name
|
7
|
+
@country = country
|
8
|
+
end
|
9
|
+
|
10
|
+
def guess
|
11
|
+
carmen_state = state_list.find{ |s| s.name == @state_name || s.code == @state_name }
|
12
|
+
return if carmen_state.blank?
|
13
|
+
|
14
|
+
guessed_state = spree_state(carmen_state.name)
|
15
|
+
guessed_state || spree_state(carmen_state.parent.name)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def state_list
|
21
|
+
Carmen::Country.coded(@country.iso).subregions.map{ |s| [s, s.subregions] }.flatten
|
22
|
+
end
|
23
|
+
|
24
|
+
def spree_state(name)
|
25
|
+
::Spree::State.find_by(name: name)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/bin/rails-sandbox
CHANGED
@@ -1,13 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
# frozen_string_literal: true
|
4
|
-
|
5
3
|
app_root = 'sandbox'
|
6
4
|
|
7
5
|
unless File.exist? "#{app_root}/bin/rails"
|
8
6
|
warn 'Creating the sandbox app...'
|
9
7
|
Dir.chdir "#{__dir__}/.." do
|
10
|
-
system "#{__dir__}/sandbox" or begin
|
8
|
+
system "#{__dir__}/sandbox" or begin
|
11
9
|
warn 'Automatic creation of the sandbox app failed'
|
12
10
|
exit 1
|
13
11
|
end
|
data/bin/sandbox
CHANGED
@@ -72,11 +72,11 @@ unbundled bundle exec rails generate spree:install \
|
|
72
72
|
--user_class=Spree::User \
|
73
73
|
--enforce_available_locales=true \
|
74
74
|
--with-authentication=false \
|
75
|
+
--payment-method=none \
|
75
76
|
$@
|
76
77
|
|
77
78
|
unbundled bundle exec rails generate solidus:auth:install
|
78
|
-
unbundled bundle exec rails generate
|
79
|
-
unbundled bundle exec rails db:migrate
|
79
|
+
unbundled bundle exec rails generate ${extension_name}:install
|
80
80
|
|
81
81
|
echo
|
82
82
|
echo "🚀 Sandbox app successfully created for $extension_name!"
|
@@ -4,15 +4,22 @@ module SolidusPaypalCommercePlatform
|
|
4
4
|
module Generators
|
5
5
|
class InstallGenerator < Rails::Generators::Base
|
6
6
|
class_option :auto_run_migrations, type: :boolean, default: false
|
7
|
+
class_option :skip_migrations, type: :boolean, default: false
|
8
|
+
|
9
|
+
source_root File.expand_path('templates', __dir__)
|
10
|
+
|
11
|
+
def copy_initializer
|
12
|
+
template 'initializer.rb', 'config/initializers/solidus_paypal_commerce_platform.rb'
|
13
|
+
end
|
7
14
|
|
8
15
|
def add_javascripts
|
9
|
-
append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/solidus_paypal_commerce_platform\n" # rubocop:disable
|
10
|
-
append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/solidus_paypal_commerce_platform\n" # rubocop:disable
|
16
|
+
append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/solidus_paypal_commerce_platform\n" # rubocop:disable Layout/LineLength
|
17
|
+
append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/solidus_paypal_commerce_platform\n" # rubocop:disable Layout/LineLength
|
11
18
|
end
|
12
19
|
|
13
20
|
def add_stylesheets
|
14
|
-
inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/solidus_paypal_commerce_platform\n", before: %r{\*/}, verbose: true # rubocop:disable
|
15
|
-
inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/solidus_paypal_commerce_platform\n", before: %r{\*/}, verbose: true # rubocop:disable
|
21
|
+
inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/solidus_paypal_commerce_platform\n", before: %r{\*/}, verbose: true # rubocop:disable Layout/LineLength
|
22
|
+
inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/solidus_paypal_commerce_platform\n", before: %r{\*/}, verbose: true # rubocop:disable Layout/LineLength
|
16
23
|
end
|
17
24
|
|
18
25
|
def add_migrations
|
@@ -26,7 +33,9 @@ module SolidusPaypalCommercePlatform
|
|
26
33
|
end
|
27
34
|
|
28
35
|
def run_migrations
|
29
|
-
|
36
|
+
return if options[:skip_migrations]
|
37
|
+
|
38
|
+
run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]')) # rubocop:disable Layout/LineLength
|
30
39
|
if run_migrations
|
31
40
|
run 'bin/rails db:migrate'
|
32
41
|
else
|
@@ -3,19 +3,21 @@
|
|
3
3
|
require 'solidus_core'
|
4
4
|
require 'solidus_support'
|
5
5
|
|
6
|
-
require 'solidus_paypal_commerce_platform/version'
|
7
|
-
require 'solidus_paypal_commerce_platform/configuration'
|
8
6
|
require 'solidus_paypal_commerce_platform/client'
|
7
|
+
require 'solidus_paypal_commerce_platform/configuration'
|
8
|
+
require 'solidus_paypal_commerce_platform/version'
|
9
9
|
require 'solidus_paypal_commerce_platform/engine'
|
10
10
|
|
11
11
|
module SolidusPaypalCommercePlatform
|
12
12
|
class << self
|
13
|
-
def
|
14
|
-
@
|
13
|
+
def configuration
|
14
|
+
@configuration ||= Configuration.new
|
15
15
|
end
|
16
16
|
|
17
|
+
alias config configuration
|
18
|
+
|
17
19
|
def configure
|
18
|
-
yield
|
20
|
+
yield configuration
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
@@ -10,12 +10,12 @@ module SolidusPaypalCommercePlatform
|
|
10
10
|
SUCCESS_STATUS_CODES = [201, 204].freeze
|
11
11
|
|
12
12
|
PARTNER_ATTRIBUTION_INJECTOR = ->(request) {
|
13
|
-
request.headers["PayPal-Partner-Attribution-Id"] =
|
13
|
+
request.headers["PayPal-Partner-Attribution-Id"] = SolidusPaypalCommercePlatform.config.partner_code
|
14
14
|
}.freeze
|
15
15
|
|
16
16
|
attr_reader :environment
|
17
17
|
|
18
|
-
def initialize(
|
18
|
+
def initialize(client_id:, client_secret: "", test_mode: nil)
|
19
19
|
test_mode = SolidusPaypalCommercePlatform.config.env.sandbox? if test_mode.nil?
|
20
20
|
env_class = test_mode ? PayPal::SandboxEnvironment : PayPal::LiveEnvironment
|
21
21
|
|
@@ -27,8 +27,9 @@ module SolidusPaypalCommercePlatform
|
|
27
27
|
|
28
28
|
def execute(request)
|
29
29
|
@paypal_client.execute(request)
|
30
|
-
rescue PayPalHttp::HttpError
|
31
|
-
|
30
|
+
rescue PayPalHttp::HttpError => e
|
31
|
+
Rails.logger.error e.result
|
32
|
+
OpenStruct.new(status_code: 422, error: e.result)
|
32
33
|
end
|
33
34
|
|
34
35
|
def execute_with_response(request, success_message: nil, failure_message: nil)
|
@@ -4,6 +4,8 @@ require 'paypal-checkout-sdk'
|
|
4
4
|
|
5
5
|
module SolidusPaypalCommercePlatform
|
6
6
|
class Configuration
|
7
|
+
attr_writer :state_guesser_class, :partner_id, :partner_client_id
|
8
|
+
|
7
9
|
InvalidEnvironment = Class.new(StandardError)
|
8
10
|
|
9
11
|
DEFAULT_PARTNER_ID = {
|
@@ -16,6 +18,12 @@ module SolidusPaypalCommercePlatform
|
|
16
18
|
live: "ASOxaUMkeX5bv7PbXnWUDnqb3SVYkzRSosApmLGFih-eAhB_OS_Wo6juijE5t8NCmWDgpN2ugHMmQFWA",
|
17
19
|
}.freeze
|
18
20
|
|
21
|
+
def state_guesser_class
|
22
|
+
self.state_guesser_class = "SolidusPaypalCommercePlatform::StateGuesser" unless @state_guesser_class
|
23
|
+
|
24
|
+
@state_guesser_class.constantize
|
25
|
+
end
|
26
|
+
|
19
27
|
def env=(value)
|
20
28
|
unless %w[live sandbox].include? value
|
21
29
|
raise InvalidEnvironment, "#{value} is not a valid environment"
|
@@ -35,9 +43,9 @@ module SolidusPaypalCommercePlatform
|
|
35
43
|
|
36
44
|
case Rails.env
|
37
45
|
when 'production'
|
38
|
-
|
46
|
+
'live'
|
39
47
|
when 'test', 'development'
|
40
|
-
|
48
|
+
'sandbox'
|
41
49
|
else
|
42
50
|
raise InvalidEnvironment, "Unable to guess the PayPal env, please set #{self}.env= explicitly."
|
43
51
|
end
|
@@ -51,8 +59,6 @@ module SolidusPaypalCommercePlatform
|
|
51
59
|
env.live? ? "www.paypal.com" : "www.sandbox.paypal.com"
|
52
60
|
end
|
53
61
|
|
54
|
-
attr_writer :partner_id, :partner_client_id
|
55
|
-
|
56
62
|
def partner_id
|
57
63
|
@partner_id ||= ENV['PAYPAL_PARTNER_ID'] || DEFAULT_PARTNER_ID[env.to_sym]
|
58
64
|
end
|
@@ -60,5 +66,9 @@ module SolidusPaypalCommercePlatform
|
|
60
66
|
def partner_client_id
|
61
67
|
@partner_client_id ||= ENV['PAYPAL_PARTNER_CLIENT_ID'] || DEFAULT_PARTNER_CLIENT_ID[env.to_sym]
|
62
68
|
end
|
69
|
+
|
70
|
+
def partner_code
|
71
|
+
"Solidus_PCP_SP"
|
72
|
+
end
|
63
73
|
end
|
64
74
|
end
|
File without changes
|