afterpay-ruby 0.1.2 → 0.1.3
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/Gemfile +1 -1
- data/Gemfile.lock +3 -3
- data/README.md +38 -1
- data/bin/console +5 -0
- data/configure.rb +4 -0
- data/lib/afterpay.rb +2 -0
- data/lib/afterpay/address.rb +41 -0
- data/lib/afterpay/discount.rb +22 -0
- data/lib/afterpay/order.rb +24 -11
- data/lib/afterpay/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ca1e1c47d6b509844aedbf008e7af90c6b04534fbf163cb526b70891dcfa8f0
|
4
|
+
data.tar.gz: '072138f089151b6adc36c88eb37267a2c14fb3adff566777ef6af5d8fe158392'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6243f64a347561daabde5135449521dffee10fb1c3b1faff2f0a34156ffc53fa358bb32851dcd59b608c02f1a8bfd1843c332e9af2a5a5fd0fd123b69841c64
|
7
|
+
data.tar.gz: 2d561c95396fa24a42afa375748e8e61b8d3a03454d40ec82827a38f00762ad832ea4890812a91cee41f8e26a843e95c6465426aa4bf2314f781f6c0a4fabf38
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
afterpay-ruby (0.1.
|
4
|
+
afterpay-ruby (0.1.3)
|
5
5
|
faraday (>= 0.8, < 1.0)
|
6
6
|
faraday_middleware (~> 0.13.1)
|
7
7
|
money (>= 6.7.1, < 7.0.0)
|
@@ -33,9 +33,9 @@ GEM
|
|
33
33
|
concurrent-ruby (~> 1.0)
|
34
34
|
json (2.2.0)
|
35
35
|
method_source (0.9.2)
|
36
|
-
money (6.13.
|
36
|
+
money (6.13.3)
|
37
37
|
i18n (>= 0.6.4, <= 2)
|
38
|
-
multipart-post (2.
|
38
|
+
multipart-post (2.1.0)
|
39
39
|
pry (0.12.2)
|
40
40
|
coderay (~> 1.1.0)
|
41
41
|
method_source (~> 0.9.0)
|
data/README.md
CHANGED
@@ -53,7 +53,12 @@ order = Afterpay::Order.create(
|
|
53
53
|
consumer: <Afterpay::Consumer>,
|
54
54
|
items: [<Afterpay::Item>],
|
55
55
|
success_url: <String>,
|
56
|
-
cancel_url: <String
|
56
|
+
cancel_url: <String>,
|
57
|
+
reference: <String>,
|
58
|
+
shipping: <Money | optional>,
|
59
|
+
discounts: [<Afterpay::Discount | optional>],
|
60
|
+
billing_address: <Afterpay::Address | optional>,
|
61
|
+
shipping_address: <Afterpay::Address | optional>,
|
57
62
|
)
|
58
63
|
|
59
64
|
# OR
|
@@ -127,6 +132,38 @@ Afterpay::Item.new(
|
|
127
132
|
)
|
128
133
|
```
|
129
134
|
|
135
|
+
### Discount Object
|
136
|
+
|
137
|
+
[api docs](https://docs.afterpay.com/au-online-api-v1.html#discount-object)
|
138
|
+
|
139
|
+
Discount Applied to the Order
|
140
|
+
|
141
|
+
```ruby
|
142
|
+
Afterpay::Discount.new(
|
143
|
+
name: <String>,
|
144
|
+
amount: <Money>
|
145
|
+
)
|
146
|
+
```
|
147
|
+
|
148
|
+
### Address Object
|
149
|
+
|
150
|
+
[api docs](https://docs.afterpay.com/au-online-api-v1.html#contact-object)
|
151
|
+
|
152
|
+
Item holds the details of purchace per item.
|
153
|
+
|
154
|
+
```ruby
|
155
|
+
Afterpay::Address.new(
|
156
|
+
name: <String>,
|
157
|
+
line_1: <String>,
|
158
|
+
line_2: <String | optional>,
|
159
|
+
suburb: <String | optional>,
|
160
|
+
state: <String>,
|
161
|
+
postcode: <String | Number>,
|
162
|
+
country: <String | optional>,
|
163
|
+
phone: <String>
|
164
|
+
)
|
165
|
+
```
|
166
|
+
|
130
167
|
## Development
|
131
168
|
|
132
169
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/bin/console
CHANGED
@@ -4,6 +4,11 @@ require "bundler"
|
|
4
4
|
require "bundler/setup"
|
5
5
|
require "afterpay"
|
6
6
|
|
7
|
+
begin
|
8
|
+
require_relative "../configure"
|
9
|
+
rescue LoadError
|
10
|
+
end
|
11
|
+
|
7
12
|
# You can add fixtures and/or initialization code here to make experimenting
|
8
13
|
# with your gem easier. You can also use a different console, if you like.
|
9
14
|
|
data/configure.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
require "dotenv"
|
4
4
|
Dotenv.load
|
5
5
|
|
6
|
+
Money.default_currency = ENV["DEFAULT_CURRENCY"] || "AUD"
|
7
|
+
|
6
8
|
Afterpay.configure do |config|
|
7
9
|
config.app_id = ENV["APP_ID"]
|
8
10
|
config.secret = ENV["SECRET"]
|
@@ -13,3 +15,5 @@ Afterpay.configure do |config|
|
|
13
15
|
# Sets the environment for Afterpay
|
14
16
|
# config.env = "sandbox" # :live
|
15
17
|
end
|
18
|
+
|
19
|
+
Afterpay.config.freeze
|
data/lib/afterpay.rb
CHANGED
@@ -9,6 +9,8 @@ require_relative "afterpay/item"
|
|
9
9
|
require_relative "afterpay/order"
|
10
10
|
require_relative "afterpay/payment"
|
11
11
|
require_relative "afterpay/error"
|
12
|
+
require_relative "afterpay/discount"
|
13
|
+
require_relative "afterpay/address"
|
12
14
|
require_relative "afterpay/money_util"
|
13
15
|
|
14
16
|
module Afterpay
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Afterpay
|
4
|
+
class Address
|
5
|
+
attr_accessor :name, :line1, :line2, :suburb, :state, :postcode, :country, :phone
|
6
|
+
|
7
|
+
# Initializes an Order object
|
8
|
+
#
|
9
|
+
# @overload initialize(total:, items:, consumer:, success_url:, cancel_url:, payment_type:)
|
10
|
+
# @param name [String] The name
|
11
|
+
# @param line_1 [String] Address line 1
|
12
|
+
# @param line_2 [String] optional Address line 2
|
13
|
+
# @param suburb [String] optional Suburb
|
14
|
+
# @param state [String] State
|
15
|
+
# @param postcode [String] Postal code
|
16
|
+
# @param country [String] optional country Code
|
17
|
+
# @param phone [String|Number] The phone number
|
18
|
+
def initialize(attributes = {})
|
19
|
+
@name = attributes[:name]
|
20
|
+
@line1 = attributes[:line_1] || ""
|
21
|
+
@line2 = attributes[:line_2] || ""
|
22
|
+
@suburb = attributes[:suburb] || ""
|
23
|
+
@state = attributes[:state] || ""
|
24
|
+
@postcode = attributes[:postcode]
|
25
|
+
@country = attributes[:country] || "AU"
|
26
|
+
@phone = attributes[:phone]
|
27
|
+
end
|
28
|
+
|
29
|
+
def to_hash
|
30
|
+
{
|
31
|
+
name: name,
|
32
|
+
line1: line1,
|
33
|
+
suburb: suburb,
|
34
|
+
state: state,
|
35
|
+
postcode: postcode.to_s,
|
36
|
+
countryCode: country,
|
37
|
+
phoneNumber: phone.to_s
|
38
|
+
}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Afterpay
|
4
|
+
class Discount
|
5
|
+
attr_accessor :name, :amount
|
6
|
+
|
7
|
+
def initialize(name:, amount:)
|
8
|
+
@name = name
|
9
|
+
@amount = amount
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_hash
|
13
|
+
{
|
14
|
+
displayName: name,
|
15
|
+
amount: {
|
16
|
+
amount: amount.to_f,
|
17
|
+
currency: amount.currency.iso_code
|
18
|
+
}
|
19
|
+
}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/afterpay/order.rb
CHANGED
@@ -16,17 +16,18 @@ module Afterpay
|
|
16
16
|
:tax,
|
17
17
|
:discounts,
|
18
18
|
:billing,
|
19
|
-
:
|
19
|
+
:shipping_address,
|
20
|
+
:billing_address,
|
20
21
|
:merchant_reference
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
# Finds Order from Afterpay API
|
24
|
+
# @param token [String]
|
25
|
+
# @return [Order]
|
26
|
+
def self.find(token)
|
27
|
+
request = Afterpay.client.get("/v1/orders/#{token}")
|
27
28
|
|
28
|
-
|
29
|
-
|
29
|
+
Order.from_response(request.body)
|
30
|
+
end
|
30
31
|
|
31
32
|
# Builds Order from response
|
32
33
|
# @param response [Hash] response params from API
|
@@ -65,6 +66,10 @@ module Afterpay
|
|
65
66
|
# @param success_url [String] the path to redirect on successful payment
|
66
67
|
# @param cancel_url [String] the path to redirect on failed payment
|
67
68
|
# @param payment_type [String] Payment type defaults to {Config#type}
|
69
|
+
# @param shipping [Money] optional the billing Address
|
70
|
+
# @param discounts [Array<Afterpay::Discount>] optional discounts
|
71
|
+
# @param billing_address [<Afterpay::Address>] optional the billing Address
|
72
|
+
# @param shipping_address [<Afterpay::Address>] optional the shipping Address
|
68
73
|
def initialize(attributes = {})
|
69
74
|
@attributes = OpenStruct.new(attributes)
|
70
75
|
@attributes.payment_type ||= Afterpay.config.type
|
@@ -75,7 +80,7 @@ module Afterpay
|
|
75
80
|
|
76
81
|
# Builds structure to API specs
|
77
82
|
def to_hash
|
78
|
-
{
|
83
|
+
data = {
|
79
84
|
totalAmount: {
|
80
85
|
amount: total.to_f,
|
81
86
|
currency: total.currency.iso_code
|
@@ -86,11 +91,19 @@ module Afterpay
|
|
86
91
|
redirectConfirmUrl: attributes.success_url,
|
87
92
|
redirectCancelUrl: attributes.cancel_url
|
88
93
|
},
|
89
|
-
merchantReference: attributes.
|
94
|
+
merchantReference: attributes.reference,
|
90
95
|
taxAmount: attributes.tax,
|
91
|
-
shippingAmount:
|
96
|
+
shippingAmount: {
|
97
|
+
amount: shipping.to_f,
|
98
|
+
currency: shipping.currency.iso_code
|
99
|
+
},
|
92
100
|
paymentType: attributes.payment_type
|
93
101
|
}
|
102
|
+
|
103
|
+
data[:discounts] = discounts.map(&:to_hash) if discounts
|
104
|
+
data[:billing] = billing_address.to_hash if billing_address
|
105
|
+
data[:shipping] = shipping_address.to_hash if shipping_address
|
106
|
+
data
|
94
107
|
end
|
95
108
|
|
96
109
|
# Sends the create request to Afterpay server
|
data/lib/afterpay/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: afterpay-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eli
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -165,9 +165,11 @@ files:
|
|
165
165
|
- configure.rb
|
166
166
|
- lib/afterpay-ruby.rb
|
167
167
|
- lib/afterpay.rb
|
168
|
+
- lib/afterpay/address.rb
|
168
169
|
- lib/afterpay/client.rb
|
169
170
|
- lib/afterpay/config.rb
|
170
171
|
- lib/afterpay/consumer.rb
|
172
|
+
- lib/afterpay/discount.rb
|
171
173
|
- lib/afterpay/error.rb
|
172
174
|
- lib/afterpay/item.rb
|
173
175
|
- lib/afterpay/money_util.rb
|