omise 0.7.1 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
[![
|
4
|
-
|
3
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/8297834e28572da75cf2/maintainability)](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
|
[![Gem](https://img.shields.io/gem/v/omise.svg?style=flat)](https://rubygems.org/gems/omise)
|
6
|
-
[![Join the chat at https://gitter.im/omise/omise-ruby](https://badges.gitter.im/omise/omise-ruby.svg)](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
|