afterpay 0.1.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a0f91404c5d5fb6e1575f4beb24517b27902c6c4a6ecc7082f91d79ceee8c16a
4
- data.tar.gz: 5cd752c26bcffba90e75574309dfaf6adab18a203d3534f963199c5b2e2c19ad
3
+ metadata.gz: 1cd800dd1ba77222d13cda03c99774be278c356ce2897824b4a697402681730a
4
+ data.tar.gz: d0694bb5b3292455cec172ca51c9106c2e6c9e5d1c6f15f587e86b8f8ea81eda
5
5
  SHA512:
6
- metadata.gz: 89eed2a49559ed62512b2e1a7db600cd0217aba8f4c55c07667cabbce12eb5e47843ecc78d64f8b5b3e81c6eed4a032afae187fb089c2685498046ec15c4f063
7
- data.tar.gz: e284f5bb19b2908c621769d9abc1a3c170af32d0147bac7270fa8d432930c30e2dcd6de048df175d5c8cffa2b49856e4f8ce0ba8a7af6e03112be94d165b95b8
6
+ metadata.gz: 461b9bcb102ca910a48fac2064b29f359952fa4a083b8b72259664f60e3c7300df55e1f4f9f5eb777f466df79de1e8c98e384d09dc7ebefdcfad31c464213cda
7
+ data.tar.gz: 9589bdd16eb98b818754e91db5cbaa44800815b198cd5993ffcfa4305e1e6cd011e4d23b99f7df4d252f6775f660af053bd340ad4c58d3fbbc478f639b144d53
data/.rubocop.yml CHANGED
@@ -1,5 +1,8 @@
1
1
  inherit_gem:
2
2
  relaxed-rubocop: .rubocop.yml
3
3
 
4
+ AllCops:
5
+ TargetRubyVersion: 2.5
6
+
4
7
  Lint/MissingSuper:
5
8
  Enabled: false
data/README.md CHANGED
@@ -30,7 +30,7 @@ Merchant ID and Secret Key are required to work with Afterpay API
30
30
  Afterpay.configure do |c|
31
31
  c.merchant_id = 'your_merchant_id'
32
32
  c.secret_key = 'your_secret_key'
33
- c.server = 'us_or_au_server' # Default is 'https://api.us.afterpay.com/'
33
+ c.server = 'us_or_au_server' # Default is 'https://global-api.afterpay.com/'
34
34
  c.user_agent = 'MyAfterpayModule/1.0.0 (E-Commerce Platform Name/1.0.0; PHP/7.0.0; Merchant/600032000) https://merchant.example.com' # Default is nil
35
35
  end
36
36
  ```
data/afterpay.gemspec CHANGED
@@ -23,9 +23,9 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = %w[lib]
25
25
 
26
- spec.add_runtime_dependency 'faraday', '~> 0.15', '>= 0.15.3'
27
- spec.add_runtime_dependency 'faraday_middleware', '~> 0.12', '>= 0.12.2'
28
- spec.add_runtime_dependency 'hashie', '~> 3.6', '>= 3.6.0'
26
+ spec.add_runtime_dependency 'faraday', '~> 1.0'
27
+ spec.add_runtime_dependency 'faraday_middleware', '~> 1.0'
28
+ spec.add_runtime_dependency 'hashie', '~> 4.0'
29
29
 
30
30
  spec.add_development_dependency 'bundler', '~> 2.2.22'
31
31
  spec.add_development_dependency 'codecov', '~> 0.5.2'
@@ -11,6 +11,8 @@ module Afterpay
11
11
  class Base < Callable
12
12
  def call
13
13
  ::Afterpay::ErrorHandler.inspect(response)
14
+ rescue ::Faraday::TimeoutError => e
15
+ raise RequestTimeoutError.new(e.response_status), e.message
14
16
  end
15
17
 
16
18
  private
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Afterpay
4
+ module API
5
+ module Order
6
+ class Find < Base
7
+ def initialize(params = {})
8
+ @token = params[:token]
9
+ end
10
+
11
+ private
12
+
13
+ attr_reader :token
14
+
15
+ def payload
16
+ {
17
+ action: :get,
18
+ endpoint: endpoint
19
+ }
20
+ end
21
+
22
+ def endpoint
23
+ "#{URL}/#{token}"
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Afterpay
4
+ module API
5
+ module Payment
6
+ class Reversal < Base
7
+ def initialize(params = {})
8
+ @token = params[:token]
9
+ end
10
+
11
+ private
12
+
13
+ attr_reader :token
14
+
15
+ def payload
16
+ {
17
+ action: :post,
18
+ endpoint: endpoint
19
+ }
20
+ end
21
+
22
+ def endpoint
23
+ "#{URL}/token:#{token}/reversal"
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -43,6 +43,11 @@ module Afterpay
43
43
  # @return [String]
44
44
  # The estimated date when the order will be shipped, in YYYY-MM or YYYY-MM-DD format
45
45
  attr_accessor :estimated_shipment_date
46
+
47
+ # @attribute preorder
48
+ # @return boolean
49
+ # Should return false when the estimated_shipment_date is already passed otherwise true
50
+ attr_accessor :preorder
46
51
  end
47
52
  end
48
53
  end
@@ -12,6 +12,12 @@ module Afterpay
12
12
  # @return [String]
13
13
  # The user to redirected to this URL if the payment process is cancelled.
14
14
  attr_accessor :redirect_cancel_url
15
+
16
+ # @attribute popup_origin_url
17
+ # @return [String]
18
+ # URL to receive Javascript callbacks from Afterpay (e.g. onComplete, onShippingAddressChange, etc).
19
+ # Include the scheme, hostname and port. Port is optional.
20
+ attr_accessor :popup_origin_url
15
21
  end
16
22
  end
17
23
  end
@@ -62,6 +62,11 @@ module Afterpay
62
62
  # @return [Afterpay::Components::Money]
63
63
  # The shipping amount.
64
64
  attr_accessor :shipping_amount
65
+
66
+ # @attribute mode
67
+ # @return [String]
68
+ # Set to `express` for an express-flow checkout.
69
+ attr_accessor :mode
65
70
  end
66
71
  end
67
72
  end
@@ -17,6 +17,28 @@ module Afterpay
17
17
  # @return [Afterpay::Components::Money]
18
18
  # The refund amount.
19
19
  attr_accessor :amount
20
+
21
+ # @attribute is_checkout_adjusted
22
+ # @return [Boolean]
23
+ # Whether there have been changes to the order since the initial order creation.
24
+ attr_accessor :is_checkout_adjusted
25
+
26
+ # @attribute payment_schedule_checksum
27
+ # @return [String]
28
+ # A unique value representing the payment schedule that must be provided
29
+ # when there has been changes since the initial order creation.
30
+ attr_accessor :payment_schedule_checksum
31
+
32
+ # @attribute items
33
+ # @return [Array<Afterpay::Components::Item>]
34
+ # An array of order items that have been updated to be provided
35
+ # if it has changed since the initial order creation.
36
+ attr_accessor :items
37
+
38
+ # @attribute shipping
39
+ # @return [Afterpay::Components::Contact]
40
+ # The shipping address for this order to be provided if it has changed since the initial order creation.
41
+ attr_accessor :shipping
20
42
  end
21
43
  end
22
44
  end
@@ -11,13 +11,17 @@ module Afterpay
11
11
  def inspect(response)
12
12
  return response if response.ok?
13
13
 
14
- raise ERRORS[response.status], response_message(response)
14
+ raise ERRORS[response.status].new(response_error_code(response)), response_message(response)
15
15
  end
16
16
 
17
17
  def response_message(response)
18
18
  response.body.is_a?(String) ? JSON.parse(response.body)['message'] : response.message
19
19
  end
20
20
 
21
+ def response_error_code(response)
22
+ response.body.is_a?(String) ? JSON.parse(response.body)['errorCode'] : response.body.errorCode
23
+ end
24
+
21
25
  ERRORS = {
22
26
  400 => BadRequestError,
23
27
  401 => UnathorizedError,
@@ -25,13 +29,15 @@ module Afterpay
25
29
  404 => NotFoundError,
26
30
  405 => MethodNotAllowedError,
27
31
  406 => NotAcceptableError,
32
+ 408 => RequestTimeoutError,
28
33
  409 => ConflictError,
29
34
  410 => GoneError,
30
35
  412 => PreconditionFailedError,
31
36
  422 => UnprocessableEntityError,
32
37
  429 => TooManyRequestsError,
33
38
  500 => InternalServerError,
34
- 503 => ServiceUnavailableError
39
+ 503 => ServiceUnavailableError,
40
+ 504 => GatewayTimeoutError
35
41
  }.freeze
36
42
  end
37
43
  end
@@ -1,7 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Afterpay
4
- class BaseError < StandardError; end
4
+ class BaseError < StandardError
5
+ attr_accessor :error_code
6
+
7
+ def initialize(error_code)
8
+ super
9
+ @error_code = error_code
10
+ end
11
+ end
5
12
 
6
13
  class BadRequestError < BaseError; end
7
14
 
@@ -15,6 +22,8 @@ module Afterpay
15
22
 
16
23
  class NotAcceptableError < BaseError; end
17
24
 
25
+ class RequestTimeoutError < BaseError; end
26
+
18
27
  class ConflictError < BaseError; end
19
28
 
20
29
  class GoneError < BaseError; end
@@ -28,4 +37,6 @@ module Afterpay
28
37
  class InternalServerError < BaseError; end
29
38
 
30
39
  class ServiceUnavailableError < BaseError; end
40
+
41
+ class GatewayTimeoutError < BaseError; end
31
42
  end
@@ -37,9 +37,11 @@ module Afterpay
37
37
  end
38
38
 
39
39
  def faraday_options
40
- return {} unless ::Afterpay.user_agent
40
+ { "headers" => headers }
41
+ end
41
42
 
42
- { "headers" => { "User-Agent" => ::Afterpay.user_agent } }
43
+ def headers
44
+ { 'Content-Type' => 'application/json', 'User-Agent' => ::Afterpay.user_agent }.compact
43
45
  end
44
46
  end
45
47
  end
@@ -27,7 +27,7 @@ module Afterpay
27
27
  end
28
28
 
29
29
  def ok?
30
- (200..201).cover?(status.to_i)
30
+ (200..204).cover?(status.to_i)
31
31
  end
32
32
  end
33
33
  end
@@ -18,8 +18,7 @@ module Afterpay
18
18
  # Afterpay default middleware stack
19
19
  DEFAULT_MIDDLEWARE = proc do |builder|
20
20
  builder.request :json
21
-
22
- builder.basic_auth(*::Afterpay.configuration.values)
21
+ builder.request :basic_auth, *::Afterpay.configuration.values
23
22
 
24
23
  builder.response :mashify
25
24
  builder.response :json, content_type: /\bjson$/
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Afterpay
4
- VERSION = '0.1.0'
4
+ VERSION = '0.5.0'
5
5
  end
data/lib/afterpay.rb CHANGED
@@ -5,6 +5,7 @@ require 'afterpay/api/configuration'
5
5
  require 'afterpay/api/configuration/retrieve'
6
6
  require 'afterpay/api/order'
7
7
  require 'afterpay/api/order/create'
8
+ require 'afterpay/api/order/find'
8
9
  require 'afterpay/api/payment'
9
10
  require 'afterpay/api/payment/capture'
10
11
  require 'afterpay/api/payment/refund'
@@ -12,6 +13,7 @@ require 'afterpay/api/payment/auth'
12
13
  require 'afterpay/api/payment/void'
13
14
  require 'afterpay/api/payment/deferred_capture'
14
15
  require 'afterpay/api/payment/find'
16
+ require 'afterpay/api/payment/reversal'
15
17
  require 'afterpay/components/base'
16
18
  require 'afterpay/components/consumer'
17
19
  require 'afterpay/components/contact'
@@ -62,5 +64,5 @@ module Afterpay
62
64
  end
63
65
  end
64
66
 
65
- DEFAULT_SERVER = 'https://api.us.afterpay.com/'
67
+ DEFAULT_SERVER = 'https://global-api.afterpay.com/'
66
68
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: afterpay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Vygovsky
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2021-08-30 00:00:00.000000000 Z
14
+ date: 2021-11-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: faraday
@@ -19,60 +19,42 @@ dependencies:
19
19
  requirements:
20
20
  - - "~>"
21
21
  - !ruby/object:Gem::Version
22
- version: '0.15'
23
- - - ">="
24
- - !ruby/object:Gem::Version
25
- version: 0.15.3
22
+ version: '1.0'
26
23
  type: :runtime
27
24
  prerelease: false
28
25
  version_requirements: !ruby/object:Gem::Requirement
29
26
  requirements:
30
27
  - - "~>"
31
28
  - !ruby/object:Gem::Version
32
- version: '0.15'
33
- - - ">="
34
- - !ruby/object:Gem::Version
35
- version: 0.15.3
29
+ version: '1.0'
36
30
  - !ruby/object:Gem::Dependency
37
31
  name: faraday_middleware
38
32
  requirement: !ruby/object:Gem::Requirement
39
33
  requirements:
40
34
  - - "~>"
41
35
  - !ruby/object:Gem::Version
42
- version: '0.12'
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: 0.12.2
36
+ version: '1.0'
46
37
  type: :runtime
47
38
  prerelease: false
48
39
  version_requirements: !ruby/object:Gem::Requirement
49
40
  requirements:
50
41
  - - "~>"
51
42
  - !ruby/object:Gem::Version
52
- version: '0.12'
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: 0.12.2
43
+ version: '1.0'
56
44
  - !ruby/object:Gem::Dependency
57
45
  name: hashie
58
46
  requirement: !ruby/object:Gem::Requirement
59
47
  requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: 3.6.0
63
48
  - - "~>"
64
49
  - !ruby/object:Gem::Version
65
- version: '3.6'
50
+ version: '4.0'
66
51
  type: :runtime
67
52
  prerelease: false
68
53
  version_requirements: !ruby/object:Gem::Requirement
69
54
  requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- version: 3.6.0
73
55
  - - "~>"
74
56
  - !ruby/object:Gem::Version
75
- version: '3.6'
57
+ version: '4.0'
76
58
  - !ruby/object:Gem::Dependency
77
59
  name: bundler
78
60
  requirement: !ruby/object:Gem::Requirement
@@ -257,12 +239,14 @@ files:
257
239
  - lib/afterpay/api/configuration/retrieve.rb
258
240
  - lib/afterpay/api/order.rb
259
241
  - lib/afterpay/api/order/create.rb
242
+ - lib/afterpay/api/order/find.rb
260
243
  - lib/afterpay/api/payment.rb
261
244
  - lib/afterpay/api/payment/auth.rb
262
245
  - lib/afterpay/api/payment/capture.rb
263
246
  - lib/afterpay/api/payment/deferred_capture.rb
264
247
  - lib/afterpay/api/payment/find.rb
265
248
  - lib/afterpay/api/payment/refund.rb
249
+ - lib/afterpay/api/payment/reversal.rb
266
250
  - lib/afterpay/api/payment/void.rb
267
251
  - lib/afterpay/callable.rb
268
252
  - lib/afterpay/components/base.rb