afterpay-sdk 2.0.0 → 2.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d11a93da08d6aef6124413f47bbdadc7a16a8b7bb0eefdc432b7550b722d5275
4
- data.tar.gz: f85183189810df17af941f776e2a900802cbf3f1df66d5e49d9b8b018dc2ed63
3
+ metadata.gz: 6394dc3cf60aa29c10d0ad90f48515bfb680ce0fe98d835ccd681e72e78df967
4
+ data.tar.gz: 4f52e6c827219307155e2fe098e339e9b3b6406b357d951ff4aa531e16142727
5
5
  SHA512:
6
- metadata.gz: 33b5ada12c5ea764399ed5558329d0641daba8922e1636483fee3eb86ad315e8de013b3acfdd1427145a7e7f9f39b3333fd17e3afc4aa6dc58b4acb1587cfa68
7
- data.tar.gz: d5277fc45fa4a21ecf3d686d5993cd3a035ebfb6bb1603ff99d58e1f10b08235e4626b5e8394e545700e015e7ace72604fac632ebd4400a10f730b30cd6c37dc
6
+ metadata.gz: b0b586120bd8bdd18b4237ca64d16f95a86f6b33b0e7a7f5c0a1d0af417adb1ca35cb68e3ead7e550303ac0aafe16fc355243c08c6eceb4e9e40de1d00f0d54a
7
+ data.tar.gz: d09988e100a89972b89344bb3f0fd1824e02974495117b5130d542799d75ecb39fe0540635049aae02dac06305ba9d9abff0b8bf1faa51cf5183c54ba3a4d5a7
data/CHANGELOG.md ADDED
@@ -0,0 +1,17 @@
1
+ ## [Unreleased]
2
+
3
+ ## [2.0.0] - 2021-06-02
4
+
5
+ - Initial release
6
+
7
+ ### 2.0.1 - 2021-07-05
8
+
9
+ * bug fixes
10
+ * Correct the from_response method by not directly calling new with response but formatting the amount and then calling new with the attributes. The afterpay-sdk gem follows the Data Models attibutes data types as in v2 doc. As per the doc amount attibute of Refund or PaymentEvent object is a Money object so when the developer calls new he need to supply the money object however we use from_response method where we convert amount in response to money object using utils. (by @sachinsaxena1996)
11
+ * Fix refund objects attributes. add sucess? to refund model. Fix id be string in PaymentEvent. (by @sachinsaxena1996)
12
+ * Do not directly call new with response.body use from_response instead. Change done as attribute were blank in Refund.execute. (by @sachinsaxena1996)
13
+ * Fixed issue with error object of Refund object (by @sachinsaxena1996)
14
+ * enhancement
15
+ * respond with objects array in payment response objects for events and refunds attributes. (by @sachinsaxena1996)
16
+ * Added rspec for data models (by @sachinsaxena1996)
17
+
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- afterpay-sdk (2.0.0)
4
+ afterpay-sdk (2.0.1)
5
5
  faraday (>= 0.8, < 1.0)
6
6
  faraday_middleware (~> 0.13.1)
7
7
  money (>= 6.7.1, < 7.0.0)
@@ -12,7 +12,7 @@ GEM
12
12
  addressable (2.6.0)
13
13
  public_suffix (>= 2.0.2, < 4.0)
14
14
  coderay (1.1.2)
15
- concurrent-ruby (1.1.8)
15
+ concurrent-ruby (1.1.9)
16
16
  coveralls (0.8.22)
17
17
  json (>= 1.8, < 3)
18
18
  simplecov (~> 0.16.1)
data/README.md CHANGED
@@ -46,9 +46,9 @@ end
46
46
 
47
47
  ### Creating an Order
48
48
 
49
- [api docs](https://YourMechanic/afterpay-sdk#create-checkout)
49
+ [api docs](https://developers.afterpay.com/afterpay-online/reference#checkouts)
50
50
 
51
- Order accepts a [Consumer](YourMechanic/afterpay-sdk#consumer-object) and an array of [Item](YourMechanic/afterpay-sdk#item-object) object which are required.
51
+ Order accepts a [Consumer](https://github.com/YourMechanic/afterpay-sdk#consumer-object) and an array of [Item](https://github.com/YourMechanic/afterpay-sdk#item-object) object which are required.
52
52
 
53
53
  ```ruby
54
54
  order = Afterpay::Order.create(
@@ -57,7 +57,7 @@ order = Afterpay::Order.create(
57
57
  items: [<Afterpay::Item>],
58
58
  success_url: <String>,
59
59
  cancel_url: <String>,
60
- reference: <String>,
60
+ merchant_reference: <String>,
61
61
  tax: <Money>,
62
62
  shipping: <Money | optional>,
63
63
  discounts: [<Afterpay::Discount | optional>],
@@ -94,7 +94,7 @@ order.error
94
94
  ```ruby
95
95
  payment = Afterpay::Payment.execute(
96
96
  token: token <String>,
97
- reference: "checkout-1" <String>
97
+ merchant_reference: "checkout-1" <String>
98
98
  )
99
99
  => <Afterpay::Payment ...>
100
100
 
@@ -115,7 +115,7 @@ For Auth
115
115
  Afterpay::Payment.execute_auth(request_id: 'fjfwwwjfj090292920', token: '002.v4krg5qpii1tbp0kvr261rf3p1k5jfe2fin', merchant_reference: '100101382')
116
116
 
117
117
  For executing deferred payment
118
- Afterpay::Payment.execute_deferred_payment(request_id: 'ppjjjkjk', reference: '100101382', amount: mony, payment_event_merchant_reference: '', order_id: 100101524323)
118
+ Afterpay::Payment.execute_deferred_payment(request_id: 'ppjjjkjk', merchant_reference: '100101382', amount: mony, payment_event_merchant_reference: '', order_id: 100101524323)
119
119
  ```
120
120
 
121
121
  ### Void payment
@@ -4,11 +4,11 @@ module Afterpay
4
4
  class Consumer
5
5
  attr_accessor :email, :phone, :first_name, :last_name
6
6
 
7
- def initialize(email:, phone:, first_name:, last_name:)
8
- @email = email
9
- @phone = phone
10
- @first_name = first_name
11
- @last_name = last_name
7
+ def initialize(attributes = {})
8
+ @email = attributes[:email]
9
+ @phone = attributes[:phone] || ""
10
+ @first_name = attributes[:first_name] || ""
11
+ @last_name = attributes[:last_name] || ""
12
12
  end
13
13
 
14
14
  def to_hash
@@ -20,7 +20,7 @@ module Afterpay
20
20
  return nil if response.nil?
21
21
 
22
22
  new(
23
- name: response[:display_name],
23
+ name: response[:displayName],
24
24
  amount: Utils::Money.from_response(response[:amount])
25
25
  )
26
26
  end
data/lib/afterpay/item.rb CHANGED
@@ -6,18 +6,16 @@ module Afterpay
6
6
  class Item
7
7
  attr_accessor :name, :sku, :quantity, :page_url, :image_url, :price, :categories, :estimated_shipment_date
8
8
 
9
- # rubocop:disable Metrics/ParameterLists
10
- def initialize(name:, price:, page_url:, image_url:, categories:, estimated_shipment_date:, sku: nil, quantity: 1)
11
- @name = name
12
- @sku = sku
13
- @quantity = quantity
14
- @price = price
15
- @page_url = page_url
16
- @image_url = image_url
17
- @categories = categories
18
- @estimated_shipment_date = estimated_shipment_date
9
+ def initialize(attributes = {})
10
+ @name = attributes[:name]
11
+ @sku = attributes[:sku] || ""
12
+ @quantity = attributes[:quantity]
13
+ @price = attributes[:price]
14
+ @page_url = attributes[:page_url] || ""
15
+ @image_url = attributes[:image_url] || ""
16
+ @categories = attributes[:categories] || []
17
+ @estimated_shipment_date = attributes[:estimated_shipment_date] || ""
19
18
  end
20
- # rubocop:enable Metrics/ParameterLists
21
19
 
22
20
  def to_hash
23
21
  {
@@ -4,7 +4,7 @@ module Afterpay
4
4
  # The Order object for creating an order to `/v2/checkouts`
5
5
  class Order
6
6
  attr_accessor :total, :consumer, :items, :shipping, :tax, :discounts,
7
- :billing, :shipping_address, :billing_address, :reference,
7
+ :billing, :shipping_address, :billing_address, :merchant_reference,
8
8
  :payment_type, :success_url, :cancel_url, :redirect_checkout_url
9
9
 
10
10
  attr_reader :expiry, :token, :error
@@ -77,11 +77,11 @@ module Afterpay
77
77
  redirectConfirmUrl: success_url,
78
78
  redirectCancelUrl: cancel_url
79
79
  },
80
- merchantReference: reference,
80
+ merchantReference: merchant_reference,
81
81
  taxAmount: tax,
82
82
  paymentType: payment_type
83
83
  }
84
- data[items] = items.map(&:to_hash) if items
84
+ data[:items] = items.map(&:to_hash) if items
85
85
  data[:taxAmount] = Utils::Money.api_hash(tax) if tax
86
86
  data[:shippingAmount] = Utils::Money.api_hash(shipping) if shipping
87
87
  data[:discounts] = discounts.map(&:to_hash) if discounts
@@ -8,22 +8,28 @@ module Afterpay
8
8
  attr_accessor :id, :token, :status, :created, :original_amount, :open_to_capture_amount,
9
9
  :payment_state, :merchant_reference, :refunds, :order, :events, :error
10
10
 
11
+ # rubocop:disable Metrics/CyclomaticComplexity
12
+ # rubocop:disable Metrics/PerceivedComplexity
13
+
11
14
  # Initialize Payment from response
12
- def initialize(attributes)
13
- @id = attributes[:id].to_i
14
- @token = attributes[:token]
15
- @status = attributes[:status]
16
- @created = attributes[:created]
17
- @original_amount = Utils::Money.from_response(attributes[:originalAmount])
18
- @open_to_capture_amount = Utils::Money.from_response(attributes[:openToCaptureAmount])
19
- @payment_state = attributes[:paymentState]
20
- @merchant_reference = attributes[:merchantReference]
21
- @refunds = attributes[:refunds]
22
- @order = Order.from_response(attributes[:orderDetails])
23
- @events = attributes[:events]
15
+ def initialize(attributes = {})
16
+ @id = attributes[:id] || ""
17
+ @token = attributes[:token] || ""
18
+ @status = attributes[:status] || ""
19
+ @created = attributes[:created] || ""
20
+ @original_amount = Utils::Money.from_response(attributes[:originalAmount]) || Money.from_amount(0)
21
+ @open_to_capture_amount = Utils::Money.from_response(attributes[:openToCaptureAmount]) || Money.from_amount(0)
22
+ @payment_state = attributes[:paymentState] || ""
23
+ @merchant_reference = attributes[:merchantReference] || ""
24
+ @refunds = attributes[:refunds].map { |refund| Refund.from_response(refund) } || [] unless attributes[:refunds].nil?
25
+ @order = Order.from_response(attributes[:orderDetails]) || Afterpay::Order.new
26
+ @events = attributes[:events].map { |event| PaymentEvent.from_response(event) } || [] unless attributes[:events].nil?
24
27
  @error = Error.new(attributes) if attributes[:errorId]
25
28
  end
26
29
 
30
+ # rubocop:enable Metrics/CyclomaticComplexity
31
+ # rubocop:enable Metrics/PerceivedComplexity
32
+
27
33
  def success?
28
34
  @status == "APPROVED"
29
35
  end
@@ -31,19 +37,19 @@ module Afterpay
31
37
  # Executes the Payment
32
38
  #
33
39
  # @param token [String] the Order token
34
- # @param reference [String] the reference for payment
40
+ # @param merchant_reference [String] the merchant_reference for payment
35
41
  # @return [Payment] the Payment object
36
- def self.execute(token:, reference:)
42
+ def self.execute(token:, merchant_reference: nil)
37
43
  request = Afterpay.client.post("/v2/payments/capture") do |req|
38
44
  req.body = {
39
45
  token: token,
40
- merchantRefernce: reference
46
+ merchantReference: merchant_reference
41
47
  }
42
48
  end
43
49
  new(request.body)
44
50
  end
45
51
 
46
- def self.execute_auth(request_id:, token:, merchant_reference:)
52
+ def self.execute_auth(token:, request_id: nil, merchant_reference: nil)
47
53
  request = Afterpay.client.post("/v2/payments/auth") do |req|
48
54
  req.body = {
49
55
  requestId: request_id,
@@ -54,12 +60,12 @@ module Afterpay
54
60
  new(request.body)
55
61
  end
56
62
 
57
- def self.execute_deferred_payment(request_id:, reference:, amount:,
58
- payment_event_merchant_reference:, order_id:)
63
+ def self.execute_deferred_payment(amount:, order_id:, request_id: nil, merchant_reference: nil,
64
+ payment_event_merchant_reference: nil)
59
65
  request = Afterpay.client.post("/v2/payments/#{order_id}/capture") do |req|
60
66
  req.body = {
61
67
  requestId: request_id,
62
- merchantRefernce: reference,
68
+ merchantReference: merchant_reference,
63
69
  amount: Utils::Money.api_hash(amount),
64
70
  paymentEventMerchantReference: payment_event_merchant_reference
65
71
  }
@@ -67,7 +73,7 @@ module Afterpay
67
73
  new(request.body)
68
74
  end
69
75
 
70
- def self.execute_void(request_id:, order_id:, amount:)
76
+ def self.execute_void(order_id:, amount:, request_id: nil)
71
77
  request = Afterpay.client.post("/v2/payments/#{order_id}/void") do |req|
72
78
  req.body = {
73
79
  requestId: request_id,
@@ -77,7 +83,7 @@ module Afterpay
77
83
  new(request.body)
78
84
  end
79
85
 
80
- def self.update_shipping_courier(order_id:, shipped_at:, name:, tracking:, priority:)
86
+ def self.update_shipping_courier(order_id:, shipped_at: nil, name: nil, tracking: nil, priority: nil)
81
87
  request = Afterpay.client.put("/v2/payments/#{order_id}/courier") do |req|
82
88
  req.body = {
83
89
  shippedAt: shipped_at,
@@ -140,8 +146,7 @@ module Afterpay
140
146
  # rubocop:disable Metrics/ParameterLists
141
147
 
142
148
  # This endpoint retrieves a collection of payments along with their order details.
143
- def self.list_payments(to_created_date:, from_created_date:, limit:, offset:, tokens:, ids:,
144
- merchant_ref:, statuses:, order_by:, asc:)
149
+ def self.list_payments(tokens:, ids:, merchant_ref:, statuses:, to_created_date: nil, from_created_date: nil, limit: nil, offset: nil, order_by: nil, asc: nil)
145
150
  url = "/v2/payments?"
146
151
  url += "toCreatedDate=#{to_created_date.gsub('+', '%2b')}" if to_created_date
147
152
  url += "&fromCreatedDate=#{from_created_date.gsub('+', '%2b')}" if from_created_date
@@ -4,13 +4,27 @@ module Afterpay
4
4
  class PaymentEvent
5
5
  attr_accessor :id, :created, :expires, :type, :amount, :payment_event_merchant_reference
6
6
 
7
- def initialize(attributes)
8
- @id = attributes[:id]
9
- @created = attributes[:created]
10
- @expires = attributes[:expires]
11
- @type = attributes[:expires]
12
- @amount = Utils::Money.from_response(attributes[:amount])
13
- @payment_event_merchant_reference = attributes[:paymentEventMerchantReference]
7
+ def initialize(attributes = {})
8
+ @id = attributes[:id] || ""
9
+ @created = attributes[:created] || ""
10
+ @expires = attributes[:expires] || ""
11
+ @type = attributes[:type] || ""
12
+ @amount = attributes[:amount] || Money.from_amount(0)
13
+ @payment_event_merchant_reference = attributes[:payment_event_merchant_reference] || ""
14
+ end
15
+
16
+ # Builds PaymentEvent from response
17
+ def self.from_response(response)
18
+ return nil if response.nil?
19
+
20
+ new(
21
+ id: response[:id],
22
+ created: response[:created],
23
+ expires: response[:expires],
24
+ type: response[:type],
25
+ amount: Utils::Money.from_response(response[:amount]),
26
+ payment_event_merchant_reference: response[:paymentEventMerchantReference]
27
+ )
14
28
  end
15
29
  end
16
30
  end
@@ -5,18 +5,24 @@ module Afterpay
5
5
  attr_accessor :request_id, :amount, :merchant_reference, :refund_id, :refunded_at,
6
6
  :refund_merchant_reference, :error
7
7
 
8
- def initialize(attributes)
9
- @request_id = attributes[:requestId]
10
- @amount = attributes[:amount]
11
- @merchant_reference = attributes[:merchantReference]
12
- @refund_id = attributes[:refundId]
13
- @refunded_at = attributes[:refundAt]
14
- @refund_merchant_reference = attributes[:refundMerchantReference]
15
- @error = Error.new(attributes) if attributes[:errorId]
8
+ # rubocop:disable Metrics/CyclomaticComplexity
9
+ # rubocop:disable Metrics/PerceivedComplexity
10
+
11
+ def initialize(attributes = {})
12
+ @request_id = attributes[:request_id] || ""
13
+ @amount = attributes[:amount] || Money.from_amount(0)
14
+ @merchant_reference = attributes[:merchant_reference] || ""
15
+ @refund_id = attributes[:refund_id] || ""
16
+ @refunded_at = attributes[:refunded_at] || ""
17
+ @refund_merchant_reference = attributes[:refund_merchant_reference] || ""
18
+ @error = Error.new(attributes[:error]) if attributes[:error] && attributes[:error][:errorId]
16
19
  end
17
20
 
18
- def self.execute(request_id:, order_id:, amount:, merchant_reference:,
19
- refund_merchant_reference:)
21
+ # rubocop:enable Metrics/CyclomaticComplexity
22
+ # rubocop:enable Metrics/PerceivedComplexity
23
+
24
+ def self.execute(order_id:, amount:, request_id: nil, merchant_reference: nil,
25
+ refund_merchant_reference: nil)
20
26
  request = Afterpay.client.post("/v2/payments/#{order_id}/refund") do |req|
21
27
  req.body = {
22
28
  requestId: request_id,
@@ -25,7 +31,26 @@ module Afterpay
25
31
  refundMerchantReference: refund_merchant_reference
26
32
  }
27
33
  end
28
- new(request.body)
34
+ from_response(request.body)
35
+ end
36
+
37
+ def success?
38
+ @error.nil?
39
+ end
40
+
41
+ # Builds Refund from response
42
+ def self.from_response(response)
43
+ return nil if response.nil?
44
+
45
+ new(
46
+ request_id: response[:requestId],
47
+ amount: Utils::Money.from_response(response[:amount]),
48
+ merchant_reference: response[:merchantReference],
49
+ refund_id: response[:refundId],
50
+ refunded_at: response[:refundedAt],
51
+ refund_merchant_reference: response[:refundMerchantReference],
52
+ error: response
53
+ )
29
54
  end
30
55
  end
31
56
  end
@@ -4,11 +4,24 @@ module Afterpay
4
4
  class ShippingCourier
5
5
  attr_accessor :shipped_at, :name, :tracking, :priority
6
6
 
7
- def initialize(shipped_at:, name:, tracking:, priority:)
8
- @shipped_at = shipped_at
9
- @name = name
10
- @tracking = tracking
11
- @priority = priority
7
+ def initialize(attributes = {})
8
+ @shipped_at = attributes[:shipped_at] || ""
9
+ @name = attributes[:name] || ""
10
+ @tracking = attributes[:tracking] || ""
11
+ @priority = attributes[:priority] || ""
12
+ end
13
+
14
+ # Builds ShippingCourier from response
15
+ def self.from_response(response)
16
+ return nil if response.nil?
17
+
18
+ new(
19
+ shipped_at: response[:shippedAt],
20
+ name: response[:name],
21
+ tracking: response[:tracking],
22
+ priority: response[:priority],
23
+ error: Error.new(response)
24
+ )
12
25
  end
13
26
  end
14
27
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Afterpay
4
- VERSION = "2.0.0"
4
+ VERSION = "2.0.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: afterpay-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sachin Saxena
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-04 00:00:00.000000000 Z
11
+ date: 2021-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -159,6 +159,7 @@ files:
159
159
  - ".rspec"
160
160
  - ".rubocop.yml"
161
161
  - ".travis.yml"
162
+ - CHANGELOG.md
162
163
  - CODE_OF_CONDUCT.md
163
164
  - Gemfile
164
165
  - Gemfile.lock
@@ -208,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
208
209
  - !ruby/object:Gem::Version
209
210
  version: '0'
210
211
  requirements: []
211
- rubygems_version: 3.2.8
212
+ rubygems_version: 3.0.8
212
213
  signing_key:
213
214
  specification_version: 4
214
215
  summary: Afterpay ruby wrapper