omise 0.7.1 → 0.10.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 +5 -5
- data/.github/workflows/ruby.yml +27 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +27 -1
- data/LICENSE.txt +1 -1
- data/README.md +27 -45
- data/lib/omise/account.rb +12 -1
- data/lib/omise/all.rb +4 -0
- data/lib/omise/capability.rb +32 -0
- data/lib/omise/charge.rb +8 -0
- data/lib/omise/config.rb +5 -1
- data/lib/omise/dispute.rb +4 -0
- data/lib/omise/integration.rb +16 -0
- data/lib/omise/link.rb +4 -0
- data/lib/omise/receipt.rb +20 -0
- data/lib/omise/resource.rb +0 -2
- data/lib/omise/schedule.rb +4 -0
- data/lib/omise/scheduler.rb +1 -1
- data/lib/omise/source.rb +15 -0
- data/lib/omise/version.rb +1 -1
- data/test/fixtures/api.omise.co/account-get.json +2 -0
- data/test/fixtures/api.omise.co/account-patch.json +8 -0
- data/test/fixtures/api.omise.co/capability-get.json +29 -0
- data/test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq/events-get.json +28 -0
- data/test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq/expire-post.json +51 -0
- data/test/fixtures/api.omise.co/disputes/dspt_test_5089off452g5m5te7xs/accept-patch.json +12 -0
- data/test/fixtures/api.omise.co/integrations/integration_test_5h24qlv37qyx537p1ub-get.json +12 -0
- data/test/fixtures/api.omise.co/links/link_test_55pcclmznvrv9lc7r9s-delete.json +6 -0
- data/test/fixtures/api.omise.co/receipts-get.json +90 -0
- data/test/fixtures/api.omise.co/receipts/rcpt_5ls0b8zb53qmw3mlvfz-get.json +39 -0
- data/test/fixtures/api.omise.co/schedules/schd_test_4yq7duw15p9hdrjp8oq-delete.json +1 -1
- data/test/fixtures/api.omise.co/schedules/schd_test_4yq7duw15p9hdrjp8oq-get.json +1 -0
- data/test/fixtures/api.omise.co/sources-post.json +6 -0
- data/test/fixtures/api.omise.co/sources/src_test_59trf2nxk43b5nml8z0-get.json +8 -0
- data/test/omise/test_account.rb +7 -1
- data/test/omise/test_capability.rb +30 -0
- data/test/omise/test_charge.rb +11 -0
- data/test/omise/test_dispute.rb +18 -0
- data/test/omise/test_integration.rb +12 -0
- data/test/omise/test_link.rb +7 -0
- data/test/omise/test_receipt.rb +29 -0
- data/test/omise/test_schedule.rb +8 -0
- data/test/omise/test_scheduler.rb +13 -0
- data/test/omise/test_source.rb +20 -0
- data/test/support.rb +1 -0
- metadata +42 -10
- data/circle.yml +0 -3
- data/data/ca_certificates.pem +0 -162
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0ba27e7fa52e39678ea8eeea60526fd163e071cdf2fb45177476ba023fc7c64c
|
4
|
+
data.tar.gz: 7e7f22f38b1a716034c27d9f8ded31b3b8a7e97e83056a07d8aef3909819d128
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 738cafc6e546810c4ae8b3de8e2ea788a39de04c5eb4048b9cc90aa72e53cfac1177190c453af097a2e17824e7cf22acca9d0eafb093e5bed12c27554fc0eb74
|
7
|
+
data.tar.gz: 6ec041635455df84aa2063c462c41a5abb4ff23b56565214fb7e84e12702473a1ff4e1372e12feca376078d4a049cdb8bb4973e06494bc00ad7a18c677f55dcc
|
@@ -0,0 +1,27 @@
|
|
1
|
+
name: Ruby
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ 'master' ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ 'master' ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
build:
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
strategy:
|
13
|
+
matrix:
|
14
|
+
ruby: [ '2.5', '2.6', '2.7', '3.0' ]
|
15
|
+
name: Ruby ${{ matrix.ruby }}
|
16
|
+
steps:
|
17
|
+
- uses: actions/checkout@v2
|
18
|
+
- name: Setup ruby
|
19
|
+
uses: actions/setup-ruby@v1
|
20
|
+
with:
|
21
|
+
ruby-version: ${{ matrix.ruby }}
|
22
|
+
|
23
|
+
- name: Build and test with Rake
|
24
|
+
run: |
|
25
|
+
gem install bundler
|
26
|
+
bundle install --jobs 4 --retry 3
|
27
|
+
bundle exec rake test
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,32 @@
|
|
2
2
|
|
3
3
|
An [unreleased] version is not available on rubygems and is subject to changes and must not be considered final. Elements of unreleased list may be edited or removed at any time.
|
4
4
|
|
5
|
+
## [0.10.0] 2021-02-16
|
6
|
+
|
7
|
+
- [Added] Add a new method to fetch all events belonging to a charge (https://github.com/omise/omise-ruby/pull/45)
|
8
|
+
- [Added] Add Receipt API (https://github.com/omise/omise-ruby/pull/44)
|
9
|
+
- [Added] Allow shortened form of ordinal numbers on Scheduler (https://github.com/omise/omise-ruby/pull/43)
|
10
|
+
- [Added] Add update method for Account (https://github.com/omise/omise-ruby/pull/42)
|
11
|
+
- [Added] Add accept method for Dispute (https://github.com/omise/omise-ruby/pull/41)
|
12
|
+
- [Added] Add expire method for Charge (https://github.com/omise/omise-ruby/pull/40)
|
13
|
+
- [Added] Add destroy method for Link (https://github.com/omise/omise-ruby/pull/39)
|
14
|
+
|
15
|
+
## [0.9.1] 2019-11-15
|
16
|
+
|
17
|
+
- [Fixed] Tests
|
18
|
+
|
19
|
+
## [0.9.0] 2019-11-15
|
20
|
+
|
21
|
+
- [Added] Integrations support
|
22
|
+
|
23
|
+
## [0.8.0] 2019-11-04
|
24
|
+
|
25
|
+
- [Added] Capability object
|
26
|
+
|
27
|
+
## [0.7.2] 2019-09-30
|
28
|
+
|
29
|
+
- [Changed] Removed CA certificate pining
|
30
|
+
|
5
31
|
## [0.7.1] 2017-12-13
|
6
32
|
|
7
33
|
- [Added] Ability to add a suffix to the user agent
|
@@ -65,7 +91,7 @@ An [unreleased] version is not available on rubygems and is subject to changes a
|
|
65
91
|
## [0.1.0] 2015-01-19
|
66
92
|
|
67
93
|
- [Added] Add support for the Refund API.
|
68
|
-
- [Added] Add a test suite that can be run locally without the need for a
|
94
|
+
- [Added] Add a test suite that can be run locally without the need for a
|
69
95
|
network connection or to set Omise keys.
|
70
96
|
- [Added] Add a list method to retrieve a list of objects.
|
71
97
|
- [Changed] Move typecast and load_response methods into a Util module.
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,19 +1,18 @@
|
|
1
1
|
# Omise Ruby Client
|
2
2
|
|
3
|
-
[](https://codeclimate.com/github/omise/omise-ruby/maintainability)
|
4
|
+
<img alt="GitHub Actions status" src="https://github.com/omise/omise-ruby/workflows/Ruby/badge.svg">
|
5
5
|
[](https://rubygems.org/gems/omise)
|
6
|
-
[](https://gitter.im/omise/omise-ruby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
7
6
|
|
8
7
|
## Installation
|
9
8
|
|
10
|
-
|
9
|
+
Add the following to your `Gemfile` and run `bundle install` to install via [RubyGems](https://rubygems.org/gems/omise):
|
11
10
|
|
12
11
|
```ruby
|
13
12
|
gem 'omise'
|
14
13
|
```
|
15
14
|
|
16
|
-
Or use the cutting-edge version by installing via
|
15
|
+
Or use the cutting-edge version by installing via GitHub:
|
17
16
|
|
18
17
|
```ruby
|
19
18
|
gem 'omise', github: 'omise/omise-ruby'
|
@@ -21,28 +20,38 @@ gem 'omise', github: 'omise/omise-ruby'
|
|
21
20
|
|
22
21
|
## Requirements
|
23
22
|
|
24
|
-
|
23
|
+
Tested on Ruby 2.5 and above
|
25
24
|
|
26
25
|
## Configuration
|
27
26
|
|
28
27
|
First configure your secret key:
|
29
28
|
|
30
29
|
```ruby
|
30
|
+
require "omise"
|
31
|
+
|
31
32
|
Omise.api_key = "skey_test_xxxxxxxxxxxxxxxxxxx"
|
32
33
|
```
|
33
34
|
|
34
|
-
|
35
|
+
After you have implemented [Omise.js](https://www.omise.co/omise-js) on your frontend you can charge the card by passing the token generated by Omise.js into the `card` attribute.
|
35
36
|
|
36
37
|
```ruby
|
37
|
-
|
38
|
-
|
38
|
+
# Charge 1000.00 THB
|
39
|
+
charge = Omise::Charge.create({
|
40
|
+
amount: 1_000_00,
|
41
|
+
currency: "thb",
|
42
|
+
card: params[:omise_token]
|
43
|
+
})
|
39
44
|
|
40
|
-
|
45
|
+
if charge.paid
|
46
|
+
# handle success
|
47
|
+
puts "thanks"
|
48
|
+
else
|
49
|
+
# handle failure
|
50
|
+
raise charge.failure_code
|
51
|
+
end
|
52
|
+
```
|
41
53
|
|
42
|
-
|
43
|
-
[collect cards](https://www.omise.co/collecting-card-information). When creating a token server side you'll need card data
|
44
|
-
transiting to and from your server and this requires that your organization be
|
45
|
-
PCI compliant.
|
54
|
+
You can check the complete documentation at [omise.co/docs](https://omise.co/docs).
|
46
55
|
|
47
56
|
### API version
|
48
57
|
|
@@ -53,18 +62,16 @@ environments with different API versions (e.g. development on the latest but
|
|
53
62
|
production on the older version).
|
54
63
|
|
55
64
|
```ruby
|
56
|
-
|
57
|
-
Omise.api_version = "2014-07-27"
|
65
|
+
Omise.api_version = "2019-05-29"
|
58
66
|
```
|
59
67
|
|
60
|
-
It is highly recommended to set this version to the current version
|
61
|
-
you're using.
|
68
|
+
It is highly recommended to set this version to the current version you're using.
|
62
69
|
|
63
70
|
### Logging
|
64
71
|
|
65
|
-
To enable
|
72
|
+
To enable logging you can set `Omise.logger` with a Ruby logger. All HTTP requests and responses will be logged.
|
66
73
|
|
67
|
-
To disable
|
74
|
+
To disable logging, just configure `Omise.logger` to `nil`. Default is disabled.
|
68
75
|
|
69
76
|
An example configuring Rails logger:
|
70
77
|
|
@@ -72,31 +79,6 @@ An example configuring Rails logger:
|
|
72
79
|
Omise.logger = Rails.logger
|
73
80
|
```
|
74
81
|
|
75
|
-
## Quick Start
|
76
|
-
|
77
|
-
After you have implemented [Omise.js](https://www.omise.co/omise-js-api) on your
|
78
|
-
frontend you can charge the card by passing the token into the `card` attribute.
|
79
|
-
|
80
|
-
```ruby
|
81
|
-
# Charge 1000.00 THB
|
82
|
-
charge = Omise::Charge.create({
|
83
|
-
amount: 1_000_00,
|
84
|
-
currency: "thb",
|
85
|
-
card: params[:omise_token]
|
86
|
-
})
|
87
|
-
|
88
|
-
if charge.paid
|
89
|
-
# handle success
|
90
|
-
puts "thanks"
|
91
|
-
else
|
92
|
-
# handle failure
|
93
|
-
raise charge.failure_code
|
94
|
-
end
|
95
|
-
```
|
96
|
-
|
97
|
-
You can check the complete documentation at
|
98
|
-
[omise.co/docs](https://omise.co/docs).
|
99
|
-
|
100
82
|
## Development
|
101
83
|
|
102
84
|
The test suite can be run with `bundle exec rake test`.
|
data/lib/omise/account.rb
CHANGED
@@ -3,6 +3,17 @@ require "omise/object"
|
|
3
3
|
module Omise
|
4
4
|
class Account < OmiseObject
|
5
5
|
self.endpoint = "/account"
|
6
|
-
|
6
|
+
|
7
|
+
def self.retrieve(attributes = {})
|
8
|
+
new resource(location, attributes).get(attributes)
|
9
|
+
end
|
10
|
+
|
11
|
+
def reload(attributes = {})
|
12
|
+
assign_attributes resource(attributes).get(attributes)
|
13
|
+
end
|
14
|
+
|
15
|
+
def update(attributes = {})
|
16
|
+
assign_attributes resource(attributes).patch(attributes)
|
17
|
+
end
|
7
18
|
end
|
8
19
|
end
|
data/lib/omise/all.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "omise/account"
|
2
2
|
require "omise/balance"
|
3
3
|
require "omise/bank_account"
|
4
|
+
require "omise/capability"
|
4
5
|
require "omise/card"
|
5
6
|
require "omise/chain"
|
6
7
|
require "omise/charge"
|
@@ -9,11 +10,14 @@ require "omise/dispute"
|
|
9
10
|
require "omise/document"
|
10
11
|
require "omise/event"
|
11
12
|
require "omise/forex"
|
13
|
+
require "omise/integration"
|
12
14
|
require "omise/link"
|
13
15
|
require "omise/occurrence"
|
16
|
+
require "omise/receipt"
|
14
17
|
require "omise/recipient"
|
15
18
|
require "omise/refund"
|
16
19
|
require "omise/search"
|
20
|
+
require "omise/source"
|
17
21
|
require "omise/schedule"
|
18
22
|
require "omise/token"
|
19
23
|
require "omise/transaction"
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "omise/object"
|
2
|
+
|
3
|
+
module Omise
|
4
|
+
class Capability < OmiseObject
|
5
|
+
self.endpoint = "/capability"
|
6
|
+
singleton!
|
7
|
+
|
8
|
+
PaymentMethod = Struct.new(
|
9
|
+
:object,
|
10
|
+
:name,
|
11
|
+
:currencies,
|
12
|
+
:card_brands,
|
13
|
+
:installment_terms
|
14
|
+
)
|
15
|
+
|
16
|
+
def self.resource_key
|
17
|
+
Omise.public_api_key
|
18
|
+
end
|
19
|
+
|
20
|
+
def payment_methods
|
21
|
+
self["payment_methods"].map do |payment_method|
|
22
|
+
PaymentMethod.new(
|
23
|
+
payment_method["object"],
|
24
|
+
payment_method["name"],
|
25
|
+
payment_method["currencies"],
|
26
|
+
payment_method["card_brands"],
|
27
|
+
payment_method["installment_terms"]
|
28
|
+
)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/omise/charge.rb
CHANGED
@@ -44,6 +44,10 @@ module Omise
|
|
44
44
|
assign_attributes nested_resource("reverse", options).post
|
45
45
|
end
|
46
46
|
|
47
|
+
def expire(options = {})
|
48
|
+
assign_attributes nested_resource("expire", options).post
|
49
|
+
end
|
50
|
+
|
47
51
|
def customer(options = {})
|
48
52
|
if !defined?(Customer)
|
49
53
|
require "omise/customer"
|
@@ -68,6 +72,10 @@ module Omise
|
|
68
72
|
expand_attribute Transaction, "transaction", options
|
69
73
|
end
|
70
74
|
|
75
|
+
def events(attributes = {})
|
76
|
+
List.new nested_resource("events", attributes).get(attributes)
|
77
|
+
end
|
78
|
+
|
71
79
|
def refunds
|
72
80
|
list_attribute RefundList, "refunds"
|
73
81
|
end
|
data/lib/omise/config.rb
CHANGED
@@ -7,7 +7,7 @@ module Omise
|
|
7
7
|
class << self
|
8
8
|
attr_accessor :api_url, :vault_url, :api_version, :resource, :user_agent_suffix
|
9
9
|
|
10
|
-
attr_writer :secret_api_key, :public_api_key
|
10
|
+
attr_writer :secret_api_key, :public_api_key, :app_key
|
11
11
|
|
12
12
|
def secret_api_key
|
13
13
|
get_key :secret_api_key
|
@@ -17,6 +17,10 @@ module Omise
|
|
17
17
|
get_key :public_api_key
|
18
18
|
end
|
19
19
|
|
20
|
+
def app_key
|
21
|
+
get_key :app_key
|
22
|
+
end
|
23
|
+
|
20
24
|
# Backward compatibility with old API Keys naming conventions
|
21
25
|
#
|
22
26
|
# Will be removed in 1.0
|
data/lib/omise/dispute.rb
CHANGED
@@ -28,6 +28,10 @@ module Omise
|
|
28
28
|
assign_attributes resource(attributes).patch(attributes)
|
29
29
|
end
|
30
30
|
|
31
|
+
def accept(attributes = {})
|
32
|
+
assign_attributes nested_resource("accept", attributes).patch(attributes)
|
33
|
+
end
|
34
|
+
|
31
35
|
def charge(options = {})
|
32
36
|
if !defined?(Charge)
|
33
37
|
require "omise/charge"
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "omise/object"
|
2
|
+
|
3
|
+
module Omise
|
4
|
+
class Integration < OmiseObject
|
5
|
+
self.endpoint = "/integrations"
|
6
|
+
|
7
|
+
def self.retrieve(id, attributes = {})
|
8
|
+
new resource(location(id), attributes).get(attributes)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.resource_key
|
12
|
+
Omise.app_key
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
data/lib/omise/link.rb
CHANGED
@@ -27,6 +27,10 @@ module Omise
|
|
27
27
|
assign_attributes resource(attributes).get(attributes)
|
28
28
|
end
|
29
29
|
|
30
|
+
def destroy(attributes = {})
|
31
|
+
assign_attributes resource(attributes).delete
|
32
|
+
end
|
33
|
+
|
30
34
|
def charges(options = {})
|
31
35
|
if options.empty?
|
32
36
|
list_attribute ChargeList, "charges"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "omise/object"
|
2
|
+
require "omise/list"
|
3
|
+
|
4
|
+
module Omise
|
5
|
+
class Receipt < OmiseObject
|
6
|
+
self.endpoint = "/receipts"
|
7
|
+
|
8
|
+
def self.retrieve(id, attributes = {})
|
9
|
+
new resource(location(id), attributes).get(attributes)
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.list(attributes = {})
|
13
|
+
List.new resource(location, attributes).get(attributes)
|
14
|
+
end
|
15
|
+
|
16
|
+
def reload(attributes = {})
|
17
|
+
assign_attributes resource(attributes).get(attributes)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/omise/resource.rb
CHANGED
@@ -7,7 +7,6 @@ require "omise/version"
|
|
7
7
|
|
8
8
|
module Omise
|
9
9
|
class Resource
|
10
|
-
CA_BUNDLE_PATH = File.expand_path("../../../data/ca_certificates.pem", __FILE__)
|
11
10
|
DEFAULT_HEADERS = {
|
12
11
|
user_agent: "OmiseRuby/#{Omise::VERSION} Ruby/#{RUBY_VERSION}",
|
13
12
|
}
|
@@ -61,7 +60,6 @@ module Omise
|
|
61
60
|
@resource = RestClient::Resource.new(@uri.to_s, {
|
62
61
|
user: @key,
|
63
62
|
verify_ssl: OpenSSL::SSL::VERIFY_PEER,
|
64
|
-
ssl_ca_file: CA_BUNDLE_PATH,
|
65
63
|
headers: @headers,
|
66
64
|
})
|
67
65
|
end
|
data/lib/omise/schedule.rb
CHANGED
data/lib/omise/scheduler.rb
CHANGED
@@ -5,7 +5,7 @@ require "omise/schedule"
|
|
5
5
|
module Omise
|
6
6
|
class Scheduler
|
7
7
|
WEEKDAYS = Date::DAYNAMES.map(&:downcase).freeze
|
8
|
-
MONTH_WEEKDAYS = %w[first second third fourth last]
|
8
|
+
MONTH_WEEKDAYS = %w[first 1st second 2nd third 3rd fourth 4th last]
|
9
9
|
.product(WEEKDAYS)
|
10
10
|
.map { |d| d.join("_") }
|
11
11
|
.freeze
|