flowcommerce-activemerchant 0.1.4 → 0.2.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/lib/active_merchant/billing/gateways/flow.rb +33 -61
- metadata +3 -5
- data/.version +0 -1
- data/LICENSE +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 863d0652e20731cf27b0aece10bef3a84f30591c2795edf5a5e4cff849e6113c
|
4
|
+
data.tar.gz: c43210cb05f3edb2a374f23c84a1a1019a45fddc2b31a95961644b27f077ad94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc9e5cc9e1c7833032104308bb743fd7a01b65f6b30745f325e54502b037d703d134ec608ee7a2e18cafec488000782da97da7d028f40216e288843b0b5dfb09
|
7
|
+
data.tar.gz: c6655876fc5a3efd3b950b4aa89cd41e64fe49ff7469fd4274f46e8f3e6b580fedd6fd4eabc9f61999b0a007793db524836248862347ca9a56e87861a4f7f42e
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# @Flow.io (2017)
|
2
2
|
# Active Merchant adapter for Flow api
|
3
3
|
|
4
4
|
require 'flowcommerce-reference'
|
@@ -6,15 +6,7 @@ require 'flowcommerce-reference'
|
|
6
6
|
module ActiveMerchant
|
7
7
|
module Billing
|
8
8
|
class FlowGateway < Gateway
|
9
|
-
unless defined?(::ActiveMerchant::Billing::FlowGateway::VERSION)
|
10
|
-
VERSION = File.read(File.expand_path("../../../../.version", File.dirname(__FILE__))).chomp
|
11
|
-
|
12
|
-
FORM_TYPES = [
|
13
|
-
:authorization_copy_form, :direct_authorization_form, :merchant_of_record_authorization_form,
|
14
|
-
:paypal_authorization_form, :redirect_authorization_form, :inline_authorization_form,
|
15
|
-
:card_authorization_form, :ach_authorization_form
|
16
|
-
]
|
17
|
-
end
|
9
|
+
VERSION = '0.2.0' unless defined?(::ActiveMerchant::Billing::FlowGateway::VERSION)
|
18
10
|
|
19
11
|
self.display_name = 'Flow.io Pay'
|
20
12
|
self.homepage_url = 'https://www.flow.io/'
|
@@ -22,7 +14,6 @@ module ActiveMerchant
|
|
22
14
|
self.supported_countries = FlowCommerce::Reference::Countries::ISO_3166_2
|
23
15
|
self.supported_cardtypes = FlowCommerce::Reference::PaymentMethods::SUPPORTED_CREDIT_CARDS
|
24
16
|
|
25
|
-
|
26
17
|
def initialize options = {}
|
27
18
|
@flow_api_key = options[:api_key] || ENV['FLOW_API_KEY']
|
28
19
|
@flow_organization = options[:organization] || ENV['FLOW_ORGANIZATION']
|
@@ -36,29 +27,25 @@ module ActiveMerchant
|
|
36
27
|
# Create a new authorization.
|
37
28
|
# https://docs.flow.io/module/payment/resource/authorizations#post-organization-authorizations
|
38
29
|
def authorize cc_or_token, order_number, opts={}
|
39
|
-
unless opts[:currency]
|
40
|
-
return error_response('Currency is a required option')
|
41
|
-
end
|
42
|
-
|
43
|
-
unless opts[:discriminator]
|
44
|
-
return error_response 'Discriminator is not defined, please choose one [%s]' % FORM_TYPES.join(', ')
|
45
|
-
end
|
30
|
+
return error_response('Currency is a required option') unless opts[:currency]
|
46
31
|
|
47
|
-
|
48
|
-
return error_response 'Discriminator [%s] not found, please choose one [%s]' % [opts[:discriminator], FORM_TYPES.join(', ')]
|
49
|
-
end
|
32
|
+
opts[:discriminator] ||= 'merchant_of_record'
|
50
33
|
|
51
34
|
body = {
|
52
|
-
amount:
|
53
|
-
currency:
|
54
|
-
|
55
|
-
|
56
|
-
order_number: order_number
|
35
|
+
amount: opts[:amount] || 0.0,
|
36
|
+
currency: opts[:currency],
|
37
|
+
token: store(cc_or_token),
|
38
|
+
order_number: order_number
|
57
39
|
}
|
58
40
|
|
59
|
-
|
41
|
+
authorization_form = if opts[:discriminator].to_s.include?('merchant')
|
42
|
+
::Io::Flow::V0::Models::MerchantOfRecordAuthorizationForm.new body
|
43
|
+
else
|
44
|
+
::Io::Flow::V0::Models::DirectAuthorizationForm.new body
|
45
|
+
end
|
60
46
|
|
61
|
-
|
47
|
+
response = flow_instance.authorizations.post @flow_organization, authorization_form
|
48
|
+
Response.new true, 'Flow authorize - Success', { response: response }
|
62
49
|
rescue => exception
|
63
50
|
error_response exception
|
64
51
|
end
|
@@ -67,13 +54,11 @@ module ActiveMerchant
|
|
67
54
|
def flow_get_authorization order_number:
|
68
55
|
response = flow_instance.authorizations.get @flow_organization, order_number: order_number
|
69
56
|
response.last
|
70
|
-
rescue => exception
|
71
|
-
error_response exception
|
72
57
|
end
|
73
58
|
|
74
59
|
# https://docs.flow.io/module/payment/resource/captures#post-organization-captures
|
75
60
|
def capture amount, authorization_key, options={}
|
76
|
-
|
61
|
+
options[:currency] ||= 'USD'
|
77
62
|
|
78
63
|
body = {
|
79
64
|
authorization_id: authorization_key,
|
@@ -97,10 +82,10 @@ module ActiveMerchant
|
|
97
82
|
error_response exception
|
98
83
|
end
|
99
84
|
|
100
|
-
def purchase
|
101
|
-
|
102
|
-
|
103
|
-
end
|
85
|
+
# def purchase money, credit_card, options={}
|
86
|
+
# response = authorize money, credit_card, options
|
87
|
+
# capture money, response.authorization
|
88
|
+
# end
|
104
89
|
|
105
90
|
# https://docs.flow.io/module/payment/resource/reversals#post-organization-reversals
|
106
91
|
# if amount is not provided, reverse the full or remaining amount
|
@@ -143,6 +128,14 @@ module ActiveMerchant
|
|
143
128
|
error_response exception
|
144
129
|
end
|
145
130
|
|
131
|
+
# store credit card with flow and get reference token
|
132
|
+
def store credit_card, options={}
|
133
|
+
response = cc_with_token credit_card
|
134
|
+
Response.new true, 'Credit card stored', { response: response, token: response.token }
|
135
|
+
rescue Io::Flow::V0::HttpClient::ServerError => exception
|
136
|
+
error_response exception
|
137
|
+
end
|
138
|
+
|
146
139
|
# stores credit card and returns credit card Flow token String id
|
147
140
|
def store input
|
148
141
|
credit_card =
|
@@ -162,35 +155,10 @@ module ActiveMerchant
|
|
162
155
|
cvv: credit_card.verification_value,
|
163
156
|
expiration_year: credit_card.year.to_i,
|
164
157
|
expiration_month: credit_card.month.to_i
|
165
|
-
address: credit_card.address
|
166
158
|
}
|
167
159
|
|
168
160
|
response = flow_instance.cards.post @flow_organization, data
|
169
|
-
|
170
|
-
if response.respond_to?(:token)
|
171
|
-
Response.new true, 'Flow refund - Success', { response: response }
|
172
|
-
else
|
173
|
-
Response.new false, 'Flow POST /:organization/cards - Failure', { response: response }
|
174
|
-
end
|
175
|
-
rescue Io::Flow::V0::HttpClient::ServerError => exception
|
176
|
-
error_response exception
|
177
|
-
end
|
178
|
-
|
179
|
-
# Creates and order
|
180
|
-
# https://docs.flow.io/module/localization/resource/orders#post-organization-orders
|
181
|
-
def flow_create_order body, query_string={}
|
182
|
-
flow_instance.orders.post @flow_organization, body, query_string
|
183
|
-
rescue => exception
|
184
|
-
error_response exception
|
185
|
-
end
|
186
|
-
|
187
|
-
# Submits an order and
|
188
|
-
# pushes all subsequent authorizations from status "review" to "authorized"
|
189
|
-
# takes ~ 60 seconds
|
190
|
-
def flow_submission_by_number order_number
|
191
|
-
flow_instance.orders.put_submissions_by_number @flow_organization, order_number
|
192
|
-
rescue => exception
|
193
|
-
error_response exception
|
161
|
+
response.token
|
194
162
|
end
|
195
163
|
|
196
164
|
private
|
@@ -221,6 +189,10 @@ module ActiveMerchant
|
|
221
189
|
end
|
222
190
|
|
223
191
|
def assert_currency currency, amount
|
192
|
+
unless currency.to_s.length == 3
|
193
|
+
raise ArgumentError.new('Currency is required if amount is provided')
|
194
|
+
end
|
195
|
+
|
224
196
|
FlowCommerce::Reference::Currencies.find! currency
|
225
197
|
amount.to_f
|
226
198
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flowcommerce-activemerchant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dino Reic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemerchant
|
@@ -59,8 +59,6 @@ executables: []
|
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
-
- "./.version"
|
63
|
-
- "./LICENSE"
|
64
62
|
- "./lib/active_merchant/billing/gateways/flow.rb"
|
65
63
|
- "./lib/flowcommerce-activemerchant.rb"
|
66
64
|
homepage: https://www.flow.io
|
@@ -83,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
81
|
version: '0'
|
84
82
|
requirements: []
|
85
83
|
rubyforge_project:
|
86
|
-
rubygems_version: 2.5
|
84
|
+
rubygems_version: 2.7.5
|
87
85
|
signing_key:
|
88
86
|
specification_version: 4
|
89
87
|
summary: Adapter for Flow.io global payment gateway
|
data/.version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.1.4
|
data/LICENSE
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
The MIT License (MIT)
|
2
|
-
|
3
|
-
Copyright (c) 2017 - 2018 Flow Commerce Inc.
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
7
|
-
in the Software without restriction, including without limitation the rights
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
10
|
-
furnished to do so, subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
13
|
-
copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
-
SOFTWARE.
|