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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +23 -4
  3. data/.github/stale.yml +1 -17
  4. data/.rubocop.yml +2 -1
  5. data/CHANGELOG.md +194 -147
  6. data/Gemfile +14 -1
  7. data/README.md +2 -2
  8. data/app/assets/javascripts/spree/frontend/solidus_paypal_commerce_platform/button_actions.js +7 -4
  9. data/app/controllers/solidus_paypal_commerce_platform/orders_controller.rb +3 -2
  10. data/app/controllers/solidus_paypal_commerce_platform/paypal_orders_controller.rb +1 -1
  11. data/app/models/solidus_paypal_commerce_platform/gateway.rb +0 -2
  12. data/app/models/solidus_paypal_commerce_platform/payment_method.rb +7 -6
  13. data/app/models/solidus_paypal_commerce_platform/payment_source.rb +1 -1
  14. data/app/models/solidus_paypal_commerce_platform/paypal_address.rb +6 -2
  15. data/app/models/solidus_paypal_commerce_platform/paypal_order.rb +26 -34
  16. data/bin/sandbox +3 -24
  17. data/lib/generators/solidus_paypal_commerce_platform/install/install_generator.rb +46 -21
  18. data/lib/paypal/access_token.rb +22 -0
  19. data/lib/paypal/lib.rb +19 -0
  20. data/lib/paypal/paypal_checkout_sdk/orders/orders_authorize_request.rb +42 -0
  21. data/lib/paypal/paypal_checkout_sdk/orders/orders_capture_request.rb +40 -0
  22. data/lib/paypal/paypal_checkout_sdk/orders/orders_create_request.rb +34 -0
  23. data/lib/paypal/paypal_checkout_sdk/orders/orders_get_request.rb +24 -0
  24. data/lib/paypal/paypal_checkout_sdk/orders/orders_patch_request.rb +25 -0
  25. data/lib/paypal/paypal_checkout_sdk/orders/orders_validate_request.rb +32 -0
  26. data/lib/paypal/paypal_checkout_sdk/payments/authorizations_capture_request.rb +36 -0
  27. data/lib/paypal/paypal_checkout_sdk/payments/authorizations_get_request.rb +24 -0
  28. data/lib/paypal/paypal_checkout_sdk/payments/authorizations_reauthorize_request.rb +43 -0
  29. data/lib/paypal/paypal_checkout_sdk/payments/authorizations_void_request.rb +25 -0
  30. data/lib/paypal/paypal_checkout_sdk/payments/captures_get_request.rb +24 -0
  31. data/lib/paypal/paypal_checkout_sdk/payments/captures_refund_request.rb +38 -0
  32. data/lib/paypal/paypal_checkout_sdk/payments/refunds_get_request.rb +24 -0
  33. data/lib/paypal/paypal_environment.rb +39 -0
  34. data/lib/paypal/paypal_http_client.rb +56 -0
  35. data/lib/paypal/token_requests.rb +42 -0
  36. data/lib/solidus_paypal_commerce_platform/access_token_authorization_request.rb +1 -1
  37. data/lib/solidus_paypal_commerce_platform/client.rb +7 -4
  38. data/lib/solidus_paypal_commerce_platform/configuration.rb +1 -1
  39. data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_authorize_request.rb +48 -0
  40. data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_capture_request.rb +46 -0
  41. data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_patch_request.rb +27 -0
  42. data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_validate_request.rb +36 -0
  43. data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/payments/authorizations_reauthorize_request.rb +50 -0
  44. data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/payments/captures_refund_request.rb +43 -0
  45. data/lib/solidus_paypal_commerce_platform/version.rb +1 -1
  46. data/lib/solidus_paypal_commerce_platform.rb +1 -0
  47. data/solidus_paypal_commerce_platform.gemspec +8 -7
  48. metadata +54 -28
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: false
2
+
3
+ require 'cgi'
4
+
5
+ module PayPalCheckoutSdk
6
+ module Payments
7
+ #
8
+ # Captures an authorized payment, by ID.
9
+ #
10
+ class AuthorizationsCaptureRequest
11
+ attr_accessor :path, :body, :headers, :verb
12
+
13
+ def initialize(authorization_id)
14
+ @headers = {}
15
+ @body = nil
16
+ @verb = "POST"
17
+ @path = "/v2/payments/authorizations/{authorization_id}/capture?"
18
+
19
+ @path = @path.gsub("{authorization_id}", CGI.escape(authorization_id.to_s))
20
+ @headers["Content-Type"] = "application/json"
21
+ end
22
+
23
+ def pay_pal_request_id(pay_pal_request_id)
24
+ @headers["PayPal-Request-Id"] = pay_pal_request_id
25
+ end
26
+
27
+ def prefer(prefer)
28
+ @headers["Prefer"] = prefer
29
+ end
30
+
31
+ def request_body(capture)
32
+ @body = capture
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: false
2
+
3
+ require 'cgi'
4
+
5
+ module PayPalCheckoutSdk
6
+ module Payments
7
+ #
8
+ # Shows details for an authorized payment, by ID.
9
+ #
10
+ class AuthorizationsGetRequest
11
+ attr_accessor :path, :body, :headers, :verb
12
+
13
+ def initialize(authorization_id)
14
+ @headers = {}
15
+ @body = nil
16
+ @verb = "GET"
17
+ @path = "/v2/payments/authorizations/{authorization_id}?"
18
+
19
+ @path = @path.gsub("{authorization_id}", CGI.escape(authorization_id.to_s))
20
+ @headers["Content-Type"] = "application/json"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: false
2
+
3
+ require 'cgi'
4
+
5
+ module PayPalCheckoutSdk
6
+ module Payments
7
+ #
8
+ # Reauthorizes an authorized PayPal account payment, by ID. To ensure that funds are still available,
9
+ # reauthorize a payment after its initial three-day honor period expires. You can reauthorize a
10
+ # payment only once from days four to 29.<br/><br/> If 30 days have transpired since the date of the
11
+ # original authorization, you must create an authorized payment instead of reauthorizing the original
12
+ # authorized payment.<br/><br/>A reauthorized payment itself has a new honor period of three
13
+ # days.<br/><br/>You can reauthorize an authorized payment once for up to 115% of the original
14
+ # authorized amount, not to exceed an increase of $75 USD.<br/><br/>Supports only the `amount` request
15
+ # parameter.
16
+ #
17
+ class AuthorizationsReauthorizeRequest
18
+ attr_accessor :path, :body, :headers, :verb
19
+
20
+ def initialize(authorization_id)
21
+ @headers = {}
22
+ @body = nil
23
+ @verb = "POST"
24
+ @path = "/v2/payments/authorizations/{authorization_id}/reauthorize?"
25
+
26
+ @path = @path.gsub("{authorization_id}", CGI.escape(authorization_id.to_s))
27
+ @headers["Content-Type"] = "application/json"
28
+ end
29
+
30
+ def pay_pal_request_id(pay_pal_request_id)
31
+ @headers["PayPal-Request-Id"] = pay_pal_request_id
32
+ end
33
+
34
+ def prefer(prefer)
35
+ @headers["Prefer"] = prefer
36
+ end
37
+
38
+ def request_body(reauthorize_request)
39
+ @body = reauthorize_request
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: false
2
+
3
+ require 'cgi'
4
+
5
+ module PayPalCheckoutSdk
6
+ module Payments
7
+ #
8
+ # Voids, or cancels, an authorized payment, by ID. You cannot
9
+ # void an authorized payment that has been fully captured.
10
+ #
11
+ class AuthorizationsVoidRequest
12
+ attr_accessor :path, :body, :headers, :verb
13
+
14
+ def initialize(authorization_id)
15
+ @headers = {}
16
+ @body = nil
17
+ @verb = "POST"
18
+ @path = "/v2/payments/authorizations/{authorization_id}/void?"
19
+
20
+ @path = @path.gsub("{authorization_id}", CGI.escape(authorization_id.to_s))
21
+ @headers["Content-Type"] = "application/json"
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: false
2
+
3
+ require 'cgi'
4
+
5
+ module PayPalCheckoutSdk
6
+ module Payments
7
+ #
8
+ # Shows details for a captured payment, by ID.
9
+ #
10
+ class CapturesGetRequest
11
+ attr_accessor :path, :body, :headers, :verb
12
+
13
+ def initialize(capture_id)
14
+ @headers = {}
15
+ @body = nil
16
+ @verb = "GET"
17
+ @path = "/v2/payments/captures/{capture_id}?"
18
+
19
+ @path = @path.gsub("{capture_id}", CGI.escape(capture_id.to_s))
20
+ @headers["Content-Type"] = "application/json"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: false
2
+
3
+ require 'cgi'
4
+
5
+ module PayPalCheckoutSdk
6
+ module Payments
7
+ #
8
+ # Refunds a captured payment, by ID. For a full refund, include
9
+ # an empty payload in the JSON request body. For a partial refund,
10
+ # include an <code>amount</code> object in the JSON request body.
11
+ #
12
+ class CapturesRefundRequest
13
+ attr_accessor :path, :body, :headers, :verb
14
+
15
+ def initialize(capture_id)
16
+ @headers = {}
17
+ @body = nil
18
+ @verb = "POST"
19
+ @path = "/v2/payments/captures/{capture_id}/refund?"
20
+
21
+ @path = @path.gsub("{capture_id}", CGI.escape(capture_id.to_s))
22
+ @headers["Content-Type"] = "application/json"
23
+ end
24
+
25
+ def pay_pal_request_id(pay_pal_request_id)
26
+ @headers["PayPal-Request-Id"] = pay_pal_request_id
27
+ end
28
+
29
+ def prefer(prefer)
30
+ @headers["Prefer"] = prefer
31
+ end
32
+
33
+ def request_body(refund_request)
34
+ @body = refund_request
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: false
2
+
3
+ require 'cgi'
4
+
5
+ module PayPalCheckoutSdk
6
+ module Payments
7
+ #
8
+ # Shows details for a refund, by ID.
9
+ #
10
+ class RefundsGetRequest
11
+ attr_accessor :path, :body, :headers, :verb
12
+
13
+ def initialize(refund_id)
14
+ @headers = {}
15
+ @body = nil
16
+ @verb = "GET"
17
+ @path = "/v2/payments/refunds/{refund_id}?"
18
+
19
+ @path = @path.gsub("{refund_id}", CGI.escape(refund_id.to_s))
20
+ @headers["Content-Type"] = "application/json"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: false
2
+
3
+ require 'paypalhttp'
4
+ require "base64"
5
+
6
+ module PayPal
7
+ SANDBOXAPI = 'https://api.sandbox.paypal.com'.freeze
8
+ LIVEAPI = 'https://api.paypal.com'.freeze
9
+ SANDBOXWEB = 'https://sandbox.paypal.com'.freeze
10
+ LIVEWEB = 'https://paypal.com'.freeze
11
+
12
+ class PayPalEnvironment < PayPalHttp::Environment
13
+ attr_accessor :client_id, :client_secret, :web_url
14
+
15
+ def initialize(client_id, client_secret, base_url, web_url)
16
+ super(base_url)
17
+ @client_id = client_id
18
+ @client_secret = client_secret
19
+ @web_url = web_url
20
+ end
21
+
22
+ def authorization_string
23
+ encoded = Base64.strict_encode64("#{@client_id}:#{@client_secret}")
24
+ "Basic #{encoded}"
25
+ end
26
+ end
27
+
28
+ class SandboxEnvironment < PayPal::PayPalEnvironment
29
+ def initialize(client_id, client_secret)
30
+ super(client_id, client_secret, PayPal::SANDBOXAPI, PayPal::SANDBOXWEB)
31
+ end
32
+ end
33
+
34
+ class LiveEnvironment < PayPal::PayPalEnvironment
35
+ def initialize(client_id, client_secret)
36
+ super(client_id, client_secret, PayPal::LIVEAPI, PayPal::LIVEWEB)
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: false
2
+
3
+ require 'paypalhttp'
4
+ require 'openssl'
5
+
6
+ module PayPal
7
+ class PayPalHttpClient < PayPalHttp::HttpClient
8
+ attr_accessor :refresh_token
9
+
10
+ def initialize(environment, refresh_token = nil)
11
+ super(environment)
12
+ @refresh_token = refresh_token
13
+
14
+ add_injector { |r| _sign_request(r) }
15
+ add_injector { |r| _add_headers(r) }
16
+ end
17
+
18
+ def user_agent
19
+ library_details ||= "ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}-#{RUBY_PLATFORM}"
20
+ begin
21
+ library_details << ";#{OpenSSL::OPENSSL_LIBRARY_VERSION}"
22
+ rescue NameError
23
+ library_details << ";OpenSSL #{OpenSSL::OPENSSL_VERSION}"
24
+ end
25
+
26
+ "PayPalSDK-FORK/rest-sdk-ruby (#{library_details})"
27
+ end
28
+
29
+ def _sign_request(request)
30
+ return if _has_auth_header(request) || _is_auth_request(request)
31
+
32
+ if !@access_token || @access_token.expired?
33
+ access_token_request = PayPal::AccessTokenRequest.new(@environment, @refresh_token)
34
+ token_response = execute(access_token_request)
35
+ @access_token = PayPal::AccessToken.new(token_response.result)
36
+ end
37
+ request.headers["Authorization"] = @access_token.authorization_string
38
+ end
39
+
40
+ def _add_headers(request)
41
+ request.headers["Accept-Encoding"] = "gzip"
42
+ request.headers["sdk_name"] = "Checkout SDK"
43
+ request.headers["sdk_tech_stack"] = "Ruby#{RUBY_VERSION}"
44
+ request.headers["api_integration_type"] = "PAYPALSDK"
45
+ end
46
+
47
+ def _is_auth_request(request)
48
+ request.path == '/v1/oauth2/token' ||
49
+ request.path == '/v1/identity/openidconnect/tokenservice'
50
+ end
51
+
52
+ def _has_auth_header(request)
53
+ request.headers.key?("Authorization")
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: false
2
+
3
+ module PayPal
4
+ class AccessTokenRequest
5
+ attr_accessor :path, :body, :headers, :verb
6
+
7
+ def initialize(environment, refresh_token = nil)
8
+ @path = "/v1/oauth2/token"
9
+ @body = {
10
+ grant_type: "client_credentials",
11
+ }
12
+
13
+ if refresh_token
14
+ @body[:grant_type] = "refresh_token"
15
+ @body[:refresh_token] = refresh_token
16
+ end
17
+
18
+ @headers = {
19
+ "Content-Type" => "application/x-www-form-urlencoded",
20
+ "Authorization" => environment.authorization_string,
21
+ }
22
+ @verb = "POST"
23
+ end
24
+ end
25
+
26
+ class RefreshTokenRequest
27
+ attr_accessor :path, :body, :headers, :verb
28
+
29
+ def initialize(environment, authorization_code)
30
+ @path = "/v1/identity/openidconnect/tokenservice"
31
+ @body = {
32
+ grant_type: "authorization_code",
33
+ code: authorization_code,
34
+ }
35
+ @headers = {
36
+ "Content-Type" => "application/x-www-form-urlencoded",
37
+ "Authorization" => environment.authorization_string,
38
+ }
39
+ @verb = "POST"
40
+ end
41
+ end
42
+ end
@@ -9,7 +9,7 @@ module SolidusPaypalCommercePlatform
9
9
  @path = "/v1/oauth2/token"
10
10
  @headers = {
11
11
  "Content-Type" => "application/x-www-form-urlencoded",
12
- "Authorization" => environment.authorizationString,
12
+ "Authorization" => environment.authorization_string,
13
13
  }
14
14
  @body = {
15
15
  grant_type: "authorization_code",
@@ -3,7 +3,7 @@
3
3
  require 'solidus_paypal_commerce_platform/access_token_authorization_request'
4
4
  require 'solidus_paypal_commerce_platform/fetch_merchant_credentials_request'
5
5
 
6
- require 'paypal-checkout-sdk'
6
+ require 'paypalhttp'
7
7
 
8
8
  module SolidusPaypalCommercePlatform
9
9
  class Client
@@ -13,7 +13,7 @@ module SolidusPaypalCommercePlatform
13
13
  request.headers["PayPal-Partner-Attribution-Id"] = SolidusPaypalCommercePlatform.config.partner_code
14
14
  }.freeze
15
15
 
16
- Response = Struct.new(:status_code, :error)
16
+ Response = Struct.new(:status_code, :error, keyword_init: true)
17
17
 
18
18
  attr_reader :environment
19
19
 
@@ -28,9 +28,12 @@ module SolidusPaypalCommercePlatform
28
28
  end
29
29
 
30
30
  def execute(request)
31
- @paypal_client.execute(request)
31
+ Rails.logger.info "[SolidusPaypalCommercePlatform::Client#execute] #{request.inspect}"
32
+ @paypal_client.execute(request).tap do |response|
33
+ Rails.logger.info "[SolidusPaypalCommercePlatform::Client#execute] #{response.inspect}"
34
+ end
32
35
  rescue PayPalHttp::HttpError => e
33
- Rails.logger.error e.result
36
+ Rails.logger.error "[SolidusPaypalCommercePlatform::Client#execute] #{e.result.inspect}"
34
37
  Response.new(status_code: 422, error: e.result)
35
38
  end
36
39
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'paypal-checkout-sdk'
3
+ require 'paypal/paypal_environment'
4
4
 
5
5
  module SolidusPaypalCommercePlatform
6
6
  class Configuration
@@ -0,0 +1,48 @@
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
+
7
+ require 'cgi'
8
+
9
+ module SolidusPaypalCommercePlatform
10
+ module PayPalCheckoutSdk
11
+ module Orders
12
+ #
13
+ # Authorizes payment for an order. The response shows details of authorizations.
14
+ # You can make this call only if you specified `intent=AUTHORIZE` in the
15
+ # create order call.
16
+ #
17
+ class OrdersAuthorizeRequest
18
+ attr_accessor :path, :body, :headers, :verb
19
+
20
+ def initialize(order_id)
21
+ @headers = {}
22
+ @body = nil
23
+ @verb = "POST"
24
+ @path = "/v2/checkout/orders/{order_id}/authorize?"
25
+
26
+ @path = @path.gsub("{order_id}", CGI.escape(order_id.to_s))
27
+ @headers["Content-Type"] = "application/json"
28
+ end
29
+
30
+ def pay_pal_client_metadata_id(pay_pal_client_metadata_id)
31
+ @headers["PayPal-Client-Metadata-Id"] = pay_pal_client_metadata_id
32
+ end
33
+
34
+ def pay_pal_request_id(pay_pal_request_id)
35
+ @headers["PayPal-Request-Id"] = pay_pal_request_id
36
+ end
37
+
38
+ def prefer(prefer)
39
+ @headers["Prefer"] = prefer
40
+ end
41
+
42
+ def request_body(order_action_request)
43
+ @body = order_action_request
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,46 @@
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
+
7
+ require 'cgi'
8
+
9
+ module SolidusPaypalCommercePlatform
10
+ module PayPalCheckoutSdk
11
+ module Orders
12
+ #
13
+ # Captures a payment for an order.
14
+ #
15
+ class OrdersCaptureRequest
16
+ attr_accessor :path, :body, :headers, :verb
17
+
18
+ def initialize(order_id)
19
+ @headers = {}
20
+ @body = nil
21
+ @verb = "POST"
22
+ @path = "/v2/checkout/orders/{order_id}/capture?"
23
+
24
+ @path = @path.gsub("{order_id}", CGI.escape(order_id.to_s))
25
+ @headers["Content-Type"] = "application/json"
26
+ end
27
+
28
+ def pay_pal_client_metadata_id(pay_pal_client_metadata_id)
29
+ @headers["PayPal-Client-Metadata-Id"] = pay_pal_client_metadata_id
30
+ end
31
+
32
+ def pay_pal_request_id(pay_pal_request_id)
33
+ @headers["PayPal-Request-Id"] = pay_pal_request_id
34
+ end
35
+
36
+ def prefer(prefer)
37
+ @headers["Prefer"] = prefer
38
+ end
39
+
40
+ def request_body(order_action_request)
41
+ @body = order_action_request
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: false
2
+
3
+ require 'cgi'
4
+
5
+ module SolidusPaypalCommercePlatform
6
+ module PayPalCheckoutSdk
7
+ module Orders
8
+ class OrdersPatchRequest
9
+ attr_accessor :path, :body, :headers, :verb
10
+
11
+ def initialize(order_id)
12
+ @headers = {}
13
+ @body = nil
14
+ @verb = "PATCH"
15
+ @path = "/v2/checkout/orders/{order_id}?"
16
+
17
+ @path = @path.gsub("{order_id}", CGI.escape(order_id.to_s))
18
+ @headers["Content-Type"] = "application/json"
19
+ end
20
+
21
+ def request_body(patch_request)
22
+ @body = patch_request
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -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
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidusPaypalCommercePlatform
4
- VERSION = '0.4.0'
4
+ VERSION = '0.6.0'
5
5
  end