solidus_paypal_commerce_platform 0.4.0 → 0.6.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 +23 -4
- data/.github/stale.yml +1 -17
- data/.rubocop.yml +2 -1
- data/CHANGELOG.md +194 -147
- data/Gemfile +14 -1
- data/README.md +2 -2
- data/app/assets/javascripts/spree/frontend/solidus_paypal_commerce_platform/button_actions.js +7 -4
- data/app/controllers/solidus_paypal_commerce_platform/orders_controller.rb +3 -2
- data/app/controllers/solidus_paypal_commerce_platform/paypal_orders_controller.rb +1 -1
- data/app/models/solidus_paypal_commerce_platform/gateway.rb +0 -2
- data/app/models/solidus_paypal_commerce_platform/payment_method.rb +7 -6
- data/app/models/solidus_paypal_commerce_platform/payment_source.rb +1 -1
- data/app/models/solidus_paypal_commerce_platform/paypal_address.rb +6 -2
- data/app/models/solidus_paypal_commerce_platform/paypal_order.rb +26 -34
- data/bin/sandbox +3 -24
- data/lib/generators/solidus_paypal_commerce_platform/install/install_generator.rb +46 -21
- 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 +42 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_capture_request.rb +40 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_create_request.rb +34 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_get_request.rb +24 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_patch_request.rb +25 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_validate_request.rb +32 -0
- data/lib/paypal/paypal_checkout_sdk/payments/authorizations_capture_request.rb +36 -0
- data/lib/paypal/paypal_checkout_sdk/payments/authorizations_get_request.rb +24 -0
- data/lib/paypal/paypal_checkout_sdk/payments/authorizations_reauthorize_request.rb +43 -0
- data/lib/paypal/paypal_checkout_sdk/payments/authorizations_void_request.rb +25 -0
- data/lib/paypal/paypal_checkout_sdk/payments/captures_get_request.rb +24 -0
- data/lib/paypal/paypal_checkout_sdk/payments/captures_refund_request.rb +38 -0
- data/lib/paypal/paypal_checkout_sdk/payments/refunds_get_request.rb +24 -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 +7 -4
- data/lib/solidus_paypal_commerce_platform/configuration.rb +1 -1
- 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 +27 -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/version.rb +1 -1
- data/lib/solidus_paypal_commerce_platform.rb +1 -0
- data/solidus_paypal_commerce_platform.gemspec +8 -7
- metadata +54 -28
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Solidus Paypal Commerce Platform
|
2
2
|
|
3
|
-
[](https://circleci.com/gh/solidusio/solidus_paypal_commerce_platform)
|
4
|
+
[](https://codecov.io/gh/solidusio/solidus_paypal_commerce_platform)
|
5
5
|
|
6
6
|
The official PayPal integration of Solidus.
|
7
7
|
|
data/app/assets/javascripts/spree/frontend/solidus_paypal_commerce_platform/button_actions.js
CHANGED
@@ -7,9 +7,9 @@ SolidusPaypalCommercePlatform.hideOverlay = function() {
|
|
7
7
|
}
|
8
8
|
|
9
9
|
SolidusPaypalCommercePlatform.handleError = function(error) {
|
10
|
-
console.
|
11
|
-
console.log("PayPal Debug ID: " + error.debug_id)
|
10
|
+
console.error(error);
|
12
11
|
alert("There was a problem connecting with PayPal.")
|
12
|
+
throw error
|
13
13
|
}
|
14
14
|
|
15
15
|
SolidusPaypalCommercePlatform.sendOrder = function(payment_method_id) {
|
@@ -181,8 +181,11 @@ SolidusPaypalCommercePlatform.addPayment = function(paypal_amount, payment_metho
|
|
181
181
|
})
|
182
182
|
}
|
183
183
|
|
184
|
-
SolidusPaypalCommercePlatform.updateAddress = function(response) {
|
185
|
-
var
|
184
|
+
SolidusPaypalCommercePlatform.updateAddress = function(response) {
|
185
|
+
var shipping = response.purchase_units[0].shipping;
|
186
|
+
if (!shipping) return Promise.resolve({});
|
187
|
+
|
188
|
+
var updated_address = shipping.address;
|
186
189
|
return Spree.ajax({
|
187
190
|
url: '/solidus_paypal_commerce_platform/update_address',
|
188
191
|
method: 'POST',
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
module SolidusPaypalCommercePlatform
|
4
4
|
class OrdersController < ::Spree::Api::BaseController
|
5
|
-
before_action :load_order, except: :create
|
6
5
|
skip_before_action :authenticate_user
|
7
6
|
include ::Spree::Core::ControllerHelpers::Auth
|
8
7
|
|
@@ -10,7 +9,7 @@ module SolidusPaypalCommercePlatform
|
|
10
9
|
authorize! :create, ::Spree::Order
|
11
10
|
|
12
11
|
@order = ::Spree::Order.create!(
|
13
|
-
user:
|
12
|
+
user: current_api_user,
|
14
13
|
store: current_store,
|
15
14
|
currency: current_pricing_options.currency
|
16
15
|
)
|
@@ -25,6 +24,7 @@ module SolidusPaypalCommercePlatform
|
|
25
24
|
end
|
26
25
|
|
27
26
|
def update_address
|
27
|
+
load_order
|
28
28
|
authorize! :update, @order, order_token
|
29
29
|
paypal_address = SolidusPaypalCommercePlatform::PaypalAddress.new(@order)
|
30
30
|
|
@@ -38,6 +38,7 @@ module SolidusPaypalCommercePlatform
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def verify_total
|
41
|
+
load_order
|
41
42
|
authorize! :show, @order, order_token
|
42
43
|
|
43
44
|
if total_is_correct?(params[:paypal_total])
|
@@ -15,7 +15,7 @@ module SolidusPaypalCommercePlatform
|
|
15
15
|
private
|
16
16
|
|
17
17
|
def load_payment_method
|
18
|
-
@payment_method = ::Spree::PaymentMethod.find(params
|
18
|
+
@payment_method = ::Spree::PaymentMethod.find(params.require(:payment_method_id))
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module SolidusPaypalCommercePlatform
|
4
|
-
class PaymentMethod <
|
4
|
+
class PaymentMethod < ::Spree::PaymentMethod
|
5
5
|
include SolidusPaypalCommercePlatform::ButtonOptionsHelper
|
6
6
|
preference :client_id, :string
|
7
7
|
preference :client_secret, :string
|
@@ -74,6 +74,8 @@ module SolidusPaypalCommercePlatform
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def javascript_sdk_url(order: nil, currency: nil)
|
77
|
+
# Ref: https://developer.paypal.com/sdk/js/configuration/
|
78
|
+
|
77
79
|
# Both instance and class respond to checkout_steps.
|
78
80
|
step_names = order ? order.checkout_steps : ::Spree::Order.checkout_steps.keys
|
79
81
|
|
@@ -84,17 +86,16 @@ module SolidusPaypalCommercePlatform
|
|
84
86
|
intent: auto_capture ? "capture" : "authorize",
|
85
87
|
commit: commit_immediately ? "false" : "true",
|
86
88
|
components: options[:display_credit_messaging] ? "buttons,messages" : "buttons",
|
87
|
-
currency: currency
|
89
|
+
currency: currency,
|
88
90
|
}
|
89
91
|
|
90
|
-
parameters[:shipping_preference] = 'NO_SHIPPING' if step_names.exclude? 'delivery'
|
91
92
|
parameters['enable-funding'] = 'venmo' if venmo_standalone_enabled?
|
92
93
|
|
93
|
-
|
94
|
-
parameters['buyer-country'] = options[:force_buyer_country]
|
94
|
+
unless Rails.env.production?
|
95
|
+
parameters['buyer-country'] = options[:force_buyer_country].presence
|
95
96
|
end
|
96
97
|
|
97
|
-
"https://www.paypal.com/sdk/js?#{parameters.to_query}"
|
98
|
+
"https://www.paypal.com/sdk/js?#{parameters.compact.to_query}".html_safe # rubocop:disable Rails/OutputSafety
|
98
99
|
end
|
99
100
|
end
|
100
101
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module SolidusPaypalCommercePlatform
|
4
|
-
class PaymentSource <
|
4
|
+
class PaymentSource < ::Spree::PaymentSource
|
5
5
|
self.table_name = "paypal_commerce_platform_sources"
|
6
6
|
enum paypal_funding_source: {
|
7
7
|
applepay: 0, bancontact: 1, blik: 2, boleto: 3, card: 4, credit: 5, eps: 6, giropay: 7, ideal: 8,
|
@@ -61,12 +61,16 @@ module SolidusPaypalCommercePlatform
|
|
61
61
|
|
62
62
|
def address_attributes(address, recipient)
|
63
63
|
country = ::Spree::Country.find_by(iso: address[:country_code])
|
64
|
+
state = find_state(
|
65
|
+
address[:admin_area_1] || address[:admin_area_2] || address[:state],
|
66
|
+
country,
|
67
|
+
)
|
64
68
|
|
65
69
|
attributes = {
|
66
70
|
address1: address[:address_line_1],
|
67
71
|
address2: address[:address_line_2],
|
68
|
-
|
69
|
-
state_name:
|
72
|
+
state_id: state.try(:id),
|
73
|
+
state_name: state.try(:name),
|
70
74
|
city: address[:admin_area_2] || address[:city],
|
71
75
|
country: country,
|
72
76
|
zipcode: address[:postal_code],
|
@@ -10,14 +10,15 @@ module SolidusPaypalCommercePlatform
|
|
10
10
|
{
|
11
11
|
intent: intent,
|
12
12
|
purchase_units: purchase_units,
|
13
|
-
payer: (payer if @order.bill_address)
|
13
|
+
payer: (payer if @order.bill_address),
|
14
|
+
application_context: application_context
|
14
15
|
}
|
15
16
|
end
|
16
17
|
|
17
18
|
def to_replace_json
|
18
19
|
{
|
19
20
|
op: 'replace',
|
20
|
-
path:
|
21
|
+
path: "/purchase_units/@reference_id=='default'",
|
21
22
|
value: purchase_units(include_shipping_address: false)[0]
|
22
23
|
}
|
23
24
|
end
|
@@ -44,28 +45,21 @@ module SolidusPaypalCommercePlatform
|
|
44
45
|
end
|
45
46
|
|
46
47
|
def name(address)
|
47
|
-
|
48
|
-
name = ::Spree::Address::Name.new @order.ship_address.name
|
48
|
+
name = ::Spree::Address::Name.new address.name
|
49
49
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
else
|
55
|
-
{
|
56
|
-
given_name: address.firstname,
|
57
|
-
surname: address.lastname
|
58
|
-
}
|
59
|
-
end
|
50
|
+
{
|
51
|
+
given_name: name.first_name,
|
52
|
+
surname: name.last_name
|
53
|
+
}
|
60
54
|
end
|
61
55
|
|
62
56
|
def purchase_units(include_shipping_address: true)
|
63
57
|
[
|
64
58
|
{
|
65
|
-
amount:
|
59
|
+
amount: price(@order.total).merge(breakdown: breakdown),
|
66
60
|
items: line_items,
|
67
61
|
shipping: (shipping_info if @order.ship_address && include_shipping_address)
|
68
|
-
}
|
62
|
+
}.compact
|
69
63
|
]
|
70
64
|
end
|
71
65
|
|
@@ -80,31 +74,19 @@ module SolidusPaypalCommercePlatform
|
|
80
74
|
end
|
81
75
|
|
82
76
|
def full_name
|
83
|
-
|
84
|
-
@order.ship_address.name
|
85
|
-
else
|
86
|
-
@order.ship_address.full_name
|
87
|
-
end
|
77
|
+
@order.ship_address.name
|
88
78
|
end
|
89
79
|
|
90
80
|
def line_items
|
91
81
|
@order.line_items.map{ |line_item|
|
92
82
|
{
|
93
|
-
name: line_item.product.name,
|
83
|
+
name: line_item.product.name.truncate(127),
|
94
84
|
unit_amount: price(line_item.price),
|
95
|
-
quantity: line_item.quantity
|
85
|
+
quantity: line_item.quantity.to_i.to_s
|
96
86
|
}
|
97
87
|
}
|
98
88
|
end
|
99
89
|
|
100
|
-
def amount
|
101
|
-
{
|
102
|
-
currency_code: @order.currency,
|
103
|
-
value: @order.total,
|
104
|
-
breakdown: breakdown
|
105
|
-
}
|
106
|
-
end
|
107
|
-
|
108
90
|
def breakdown
|
109
91
|
{
|
110
92
|
item_total: price(@order.item_total),
|
@@ -117,12 +99,22 @@ module SolidusPaypalCommercePlatform
|
|
117
99
|
def price(amount)
|
118
100
|
{
|
119
101
|
currency_code: @order.currency,
|
120
|
-
value: amount
|
102
|
+
value: ('%.2f' % amount.to_f)
|
121
103
|
}
|
122
104
|
end
|
123
105
|
|
124
|
-
def
|
125
|
-
|
106
|
+
def application_context
|
107
|
+
{
|
108
|
+
shipping_preference: require_shipping? ? 'SET_PROVIDED_ADDRESS' : 'NO_SHIPPING'
|
109
|
+
}
|
110
|
+
end
|
111
|
+
|
112
|
+
def require_shipping?
|
113
|
+
step_names.include? :delivery
|
114
|
+
end
|
115
|
+
|
116
|
+
def step_names
|
117
|
+
@order ? @order.checkout_steps.map(&:to_sym) : ::Spree::Order.checkout_steps.keys
|
126
118
|
end
|
127
119
|
end
|
128
120
|
end
|
data/bin/sandbox
CHANGED
@@ -49,34 +49,13 @@ fi
|
|
49
49
|
|
50
50
|
cd ./sandbox
|
51
51
|
cat <<RUBY >> Gemfile
|
52
|
-
gem 'solidus', github: 'solidusio/solidus', branch: '$BRANCH'
|
53
|
-
gem '
|
54
|
-
gem 'rails-i18n'
|
55
|
-
gem 'solidus_i18n'
|
56
|
-
|
57
|
-
gem '$extension_name', path: '..'
|
58
|
-
|
59
|
-
group :test, :development do
|
60
|
-
platforms :mri do
|
61
|
-
gem 'pry-byebug'
|
62
|
-
end
|
63
|
-
end
|
52
|
+
gem 'solidus', github: 'solidusio/solidus', branch: '$BRANCH'
|
53
|
+
gem 'pry-byebug', platforms: :mri, groups: [:test, :development]
|
64
54
|
RUBY
|
65
55
|
|
66
56
|
unbundled bundle install --gemfile Gemfile
|
67
|
-
|
68
57
|
unbundled bundle exec rake db:drop db:create
|
69
|
-
|
70
|
-
unbundled bundle exec rails generate solidus:install \
|
71
|
-
--auto-accept \
|
72
|
-
--user_class=Spree::User \
|
73
|
-
--enforce_available_locales=true \
|
74
|
-
--with-authentication=false \
|
75
|
-
--payment-method=none \
|
76
|
-
$@
|
77
|
-
|
78
|
-
unbundled bundle exec rails generate solidus:auth:install
|
79
|
-
unbundled bundle exec rails generate ${extension_name}:install
|
58
|
+
unbundled bundle exec rails generate solidus:install --auto-accept $@
|
80
59
|
|
81
60
|
echo
|
82
61
|
echo "🚀 Sandbox app successfully created for $extension_name!"
|
@@ -4,44 +4,69 @@ 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
|
-
|
7
|
+
|
8
|
+
# This should only be used by the solidus installer prior to v3.3.
|
9
|
+
class_option :skip_migrations, type: :boolean, default: false, hide: true
|
8
10
|
|
9
11
|
source_root File.expand_path('templates', __dir__)
|
10
12
|
|
11
|
-
def
|
13
|
+
def install_solidus_core_support
|
12
14
|
template 'initializer.rb', 'config/initializers/solidus_paypal_commerce_platform.rb'
|
15
|
+
rake 'railties:install:migrations FROM=solidus_paypal_commerce_platform'
|
16
|
+
route "mount SolidusPaypalCommercePlatform::Engine, at: '/solidus_paypal_commerce_platform'"
|
13
17
|
end
|
14
18
|
|
15
|
-
def
|
16
|
-
|
17
|
-
|
19
|
+
def install_solidus_backend_support
|
20
|
+
support_code_for('solidus_backend') do
|
21
|
+
append_file(
|
22
|
+
'vendor/assets/javascripts/spree/backend/all.js',
|
23
|
+
"//= require spree/backend/solidus_paypal_commerce_platform\n"
|
24
|
+
)
|
25
|
+
inject_into_file(
|
26
|
+
'vendor/assets/stylesheets/spree/backend/all.css',
|
27
|
+
" *= require spree/backend/solidus_paypal_commerce_platform\n",
|
28
|
+
before: %r{\*/},
|
29
|
+
verbose: true,
|
30
|
+
)
|
31
|
+
end
|
18
32
|
end
|
19
33
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
34
|
+
def install_solidus_frontend_support
|
35
|
+
support_code_for('solidus_frontend') do
|
36
|
+
append_file(
|
37
|
+
'vendor/assets/javascripts/spree/frontend/all.js',
|
38
|
+
"//= require spree/frontend/solidus_paypal_commerce_platform\n",
|
39
|
+
)
|
40
|
+
inject_into_file(
|
41
|
+
'vendor/assets/stylesheets/spree/frontend/all.css',
|
42
|
+
" *= require spree/frontend/solidus_paypal_commerce_platform\n",
|
43
|
+
before: %r{\*/},
|
44
|
+
verbose: true,
|
45
|
+
)
|
46
|
+
directory engine.root.join("lib/views/frontend"), 'app/views/'
|
47
|
+
end
|
23
48
|
end
|
24
49
|
|
25
|
-
def
|
26
|
-
|
27
|
-
end
|
50
|
+
def run_migrations
|
51
|
+
return rake 'db:migrate' if options[:auto_run_migrations] && !options[:skip_migrations]
|
28
52
|
|
29
|
-
|
30
|
-
insert_into_file File.join('config', 'routes.rb'), after: "Rails.application.routes.draw do\n" do
|
31
|
-
"mount SolidusPaypalCommercePlatform::Engine, at: '/solidus_paypal_commerce_platform'\n"
|
32
|
-
end
|
53
|
+
say_status :skip, 'db:migrate'
|
33
54
|
end
|
34
55
|
|
35
|
-
|
36
|
-
return if options[:skip_migrations]
|
56
|
+
private
|
37
57
|
|
38
|
-
|
39
|
-
if
|
40
|
-
|
58
|
+
def support_code_for(gem_name, run_if: Bundler.locked_gems.specs.map(&:name).include?(gem_name), &block)
|
59
|
+
if run_if
|
60
|
+
say_status :install, "[#{engine.engine_name}] #{gem_name} code", :blue
|
61
|
+
shell.indent(&block)
|
41
62
|
else
|
42
|
-
|
63
|
+
say_status :skip, "[#{engine.engine_name}] #{gem_name} code", :blue
|
43
64
|
end
|
44
65
|
end
|
66
|
+
|
67
|
+
def engine
|
68
|
+
SolidusPaypalCommercePlatform::Engine
|
69
|
+
end
|
45
70
|
end
|
46
71
|
end
|
47
72
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
module PayPal
|
4
|
+
class AccessToken
|
5
|
+
attr_accessor :access_token, :token_type, :expires_in, :date_created
|
6
|
+
|
7
|
+
def initialize(options)
|
8
|
+
@access_token = options.access_token
|
9
|
+
@token_type = options.token_type
|
10
|
+
@expires_in = options.expires_in
|
11
|
+
@date_created = Time.zone.now
|
12
|
+
end
|
13
|
+
|
14
|
+
def expired?
|
15
|
+
Time.zone.now > @date_created + @expires_in
|
16
|
+
end
|
17
|
+
|
18
|
+
def authorization_string
|
19
|
+
"#{@token_type} #{@access_token}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/paypal/lib.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
require 'paypal/paypal_environment'
|
4
|
+
require 'paypal/paypal_http_client'
|
5
|
+
require 'paypal/token_requests'
|
6
|
+
require 'paypal/access_token'
|
7
|
+
require 'paypal/paypal_checkout_sdk/orders/orders_authorize_request'
|
8
|
+
require 'paypal/paypal_checkout_sdk/orders/orders_capture_request'
|
9
|
+
require 'paypal/paypal_checkout_sdk/orders/orders_create_request'
|
10
|
+
require 'paypal/paypal_checkout_sdk/orders/orders_get_request'
|
11
|
+
require 'paypal/paypal_checkout_sdk/orders/orders_patch_request'
|
12
|
+
require 'paypal/paypal_checkout_sdk/orders/orders_validate_request'
|
13
|
+
require 'paypal/paypal_checkout_sdk/payments/authorizations_capture_request'
|
14
|
+
require 'paypal/paypal_checkout_sdk/payments/authorizations_get_request'
|
15
|
+
require 'paypal/paypal_checkout_sdk/payments/authorizations_reauthorize_request'
|
16
|
+
require 'paypal/paypal_checkout_sdk/payments/authorizations_void_request'
|
17
|
+
require 'paypal/paypal_checkout_sdk/payments/captures_get_request'
|
18
|
+
require 'paypal/paypal_checkout_sdk/payments/refunds_get_request'
|
19
|
+
require 'paypal/paypal_checkout_sdk/payments/captures_refund_request'
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
require 'cgi'
|
4
|
+
|
5
|
+
module PayPalCheckoutSdk
|
6
|
+
module Orders
|
7
|
+
#
|
8
|
+
# Authorizes payment for an order. The response shows details
|
9
|
+
# of authorizations. You can make this call only if you specified
|
10
|
+
# `intent=AUTHORIZE` in the create order call.
|
11
|
+
#
|
12
|
+
class OrdersAuthorizeRequest
|
13
|
+
attr_accessor :path, :body, :headers, :verb
|
14
|
+
|
15
|
+
def initialize(order_id)
|
16
|
+
@headers = {}
|
17
|
+
@body = nil
|
18
|
+
@verb = "POST"
|
19
|
+
@path = "/v2/checkout/orders/{order_id}/authorize?"
|
20
|
+
|
21
|
+
@path = @path.gsub("{order_id}", CGI.escape(order_id.to_s))
|
22
|
+
@headers["Content-Type"] = "application/json"
|
23
|
+
end
|
24
|
+
|
25
|
+
def pay_pal_client_metadata_id(pay_pal_client_metadata_id)
|
26
|
+
@headers["PayPal-Client-Metadata-Id"] = pay_pal_client_metadata_id
|
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(order_action_request)
|
38
|
+
@body = order_action_request
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
require 'cgi'
|
4
|
+
|
5
|
+
module PayPalCheckoutSdk
|
6
|
+
module Orders
|
7
|
+
#
|
8
|
+
# Captures a payment for an order.
|
9
|
+
#
|
10
|
+
class OrdersCaptureRequest
|
11
|
+
attr_accessor :path, :body, :headers, :verb
|
12
|
+
|
13
|
+
def initialize(order_id)
|
14
|
+
@headers = {}
|
15
|
+
@body = nil
|
16
|
+
@verb = "POST"
|
17
|
+
@path = "/v2/checkout/orders/{order_id}/capture?"
|
18
|
+
|
19
|
+
@path = @path.gsub("{order_id}", CGI.escape(order_id.to_s))
|
20
|
+
@headers["Content-Type"] = "application/json"
|
21
|
+
end
|
22
|
+
|
23
|
+
def pay_pal_client_metadata_id(pay_pal_client_metadata_id)
|
24
|
+
@headers["PayPal-Client-Metadata-Id"] = pay_pal_client_metadata_id
|
25
|
+
end
|
26
|
+
|
27
|
+
def pay_pal_request_id(pay_pal_request_id)
|
28
|
+
@headers["PayPal-Request-Id"] = pay_pal_request_id
|
29
|
+
end
|
30
|
+
|
31
|
+
def prefer(prefer)
|
32
|
+
@headers["Prefer"] = prefer
|
33
|
+
end
|
34
|
+
|
35
|
+
def request_body(order_action_request)
|
36
|
+
@body = order_action_request
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
require 'cgi'
|
4
|
+
|
5
|
+
module PayPalCheckoutSdk
|
6
|
+
module Orders
|
7
|
+
#
|
8
|
+
# Creates an order. Supports only orders with one purchase unit.
|
9
|
+
#
|
10
|
+
class OrdersCreateRequest
|
11
|
+
attr_accessor :path, :body, :headers, :verb
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
@headers = {}
|
15
|
+
@body = nil
|
16
|
+
@verb = "POST"
|
17
|
+
@path = "/v2/checkout/orders?"
|
18
|
+
@headers["Content-Type"] = "application/json"
|
19
|
+
end
|
20
|
+
|
21
|
+
def pay_pal_partner_attribution_id(pay_pal_partner_attribution_id)
|
22
|
+
@headers["PayPal-Partner-Attribution-Id"] = pay_pal_partner_attribution_id
|
23
|
+
end
|
24
|
+
|
25
|
+
def prefer(prefer)
|
26
|
+
@headers["Prefer"] = prefer
|
27
|
+
end
|
28
|
+
|
29
|
+
def request_body(order)
|
30
|
+
@body = order
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
require 'cgi'
|
4
|
+
|
5
|
+
module PayPalCheckoutSdk
|
6
|
+
module Orders
|
7
|
+
#
|
8
|
+
# Shows details for an order, by ID.
|
9
|
+
#
|
10
|
+
class OrdersGetRequest
|
11
|
+
attr_accessor :path, :body, :headers, :verb
|
12
|
+
|
13
|
+
def initialize(order_id)
|
14
|
+
@headers = {}
|
15
|
+
@body = nil
|
16
|
+
@verb = "GET"
|
17
|
+
@path = "/v2/checkout/orders/{order_id}?"
|
18
|
+
|
19
|
+
@path = @path.gsub("{order_id}", CGI.escape(order_id.to_s))
|
20
|
+
@headers["Content-Type"] = "application/json"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
require 'cgi'
|
4
|
+
|
5
|
+
module PayPalCheckoutSdk
|
6
|
+
module Orders
|
7
|
+
class OrdersPatchRequest
|
8
|
+
attr_accessor :path, :body, :headers, :verb
|
9
|
+
|
10
|
+
def initialize(order_id)
|
11
|
+
@headers = {}
|
12
|
+
@body = nil
|
13
|
+
@verb = "PATCH"
|
14
|
+
@path = "/v2/checkout/orders/{order_id}?"
|
15
|
+
|
16
|
+
@path = @path.gsub("{order_id}", CGI.escape(order_id.to_s))
|
17
|
+
@headers["Content-Type"] = "application/json"
|
18
|
+
end
|
19
|
+
|
20
|
+
def request_body(patch_request)
|
21
|
+
@body = patch_request
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
require 'cgi'
|
4
|
+
|
5
|
+
module PayPalCheckoutSdk
|
6
|
+
module Orders
|
7
|
+
#
|
8
|
+
# Validates a payment method and checks it for contingencies.
|
9
|
+
#
|
10
|
+
class OrdersValidateRequest
|
11
|
+
attr_accessor :path, :body, :headers, :verb
|
12
|
+
|
13
|
+
def initialize(order_id)
|
14
|
+
@headers = {}
|
15
|
+
@body = nil
|
16
|
+
@verb = "POST"
|
17
|
+
@path = "/v2/checkout/orders/{order_id}/validate-payment-method?"
|
18
|
+
|
19
|
+
@path = @path.gsub("{order_id}", CGI.escape(order_id.to_s))
|
20
|
+
@headers["Content-Type"] = "application/json"
|
21
|
+
end
|
22
|
+
|
23
|
+
def pay_pal_client_metadata_id(pay_pal_client_metadata_id)
|
24
|
+
@headers["PayPal-Client-Metadata-Id"] = pay_pal_client_metadata_id
|
25
|
+
end
|
26
|
+
|
27
|
+
def request_body(order_action_request)
|
28
|
+
@body = order_action_request
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|