spreedly 2.0.23 → 2.0.25
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/CHANGELOG.md +8 -0
- data/README.md +21 -0
- data/lib/spreedly/environment.rb +4 -0
- data/lib/spreedly/gateway_class.rb +1 -1
- data/lib/spreedly/urls.rb +4 -0
- data/lib/spreedly/version.rb +1 -1
- data/test/helpers/creation_helper.rb +10 -7
- data/test/remote/remote_complete_test.rb +27 -0
- data/test/unit/gateway_options_test.rb +1 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8ebadb2a554b10f4889e1d9e0ba5550f63f506ac35065f4873c52df6e6caae7
|
4
|
+
data.tar.gz: e298035d0659d1ddcd38d723d6b1c6ccabd0c3c6254d0dc3453e8cf0eaf86769
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8b186c24a8e14b296b994fbda2c55d3dd6d869110146fabdc04574963613ff6384687897be41a9cf5616efba2f3409ee974ea972683f647dc9971970f786787
|
7
|
+
data.tar.gz: e630762db928600eb7fa390f356bc878dea1a50e9c7edb86ddecedee983c625607922894dff2f61cd84045c64e5fc66e441d812ddc2bf403da8be7b7e03cc68e
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
|
5
|
+
## [2.0.24] - 2021-07-12
|
6
|
+
### Added
|
7
|
+
- @almalee24 - Add MIT Framework support flag, supports_populate_mit_fields
|
8
|
+
|
9
|
+
## [2.0.24] - 2019-08-21
|
10
|
+
### Added
|
11
|
+
- @jeremywrowe - Add 3D Secure 2 complete transaction
|
12
|
+
|
5
13
|
## [2.0.23] - 2019-08-16
|
6
14
|
### Added
|
7
15
|
- @bayprogrammer - Add 3D Secure 2 third-party auth abilities to gateway class
|
data/README.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
A convenient Ruby wrapper for the Spreedly API.
|
4
4
|
|
5
|
+
This is an example Ruby integration with Spreedly. This version is no longer actively updated and will be superseded by a new version in the near future. Feature parity may lag behind, so please use this gem at your own risk.
|
6
|
+
|
5
7
|
## Philosophy
|
6
8
|
|
7
9
|
* No global configuration of authentication credentials.
|
@@ -181,6 +183,12 @@ env.purchase_on_gateway(gateway_token, payment_method_token, amount,
|
|
181
183
|
)
|
182
184
|
```
|
183
185
|
|
186
|
+
#### Complete a transaction (3DS 2)
|
187
|
+
|
188
|
+
```ruby
|
189
|
+
env.complete_transaction(transaction_token)
|
190
|
+
```
|
191
|
+
|
184
192
|
#### Retain on success
|
185
193
|
Retain a payment method automatically if the purchase, verify, or authorize transaction succeeded. Saves you a separate call to retain:
|
186
194
|
|
@@ -322,6 +330,19 @@ You can get the full list of supported receivers like so:
|
|
322
330
|
env.receiver_options
|
323
331
|
```
|
324
332
|
|
333
|
+
#### Delivering a payment method
|
334
|
+
|
335
|
+
You can deliver a payment method to a third party using [Payment Method Distribution](https://docs.spreedly.com/guides/payment-method-distribution/). Once a receiver is set up and you have a payment method that you would like to share, you can use the following call:
|
336
|
+
|
337
|
+
```ruby
|
338
|
+
env.deliver_to_receiver(
|
339
|
+
"receiver token goes here",
|
340
|
+
"payment method token goes here",
|
341
|
+
headers: { "Content-Type": "application/json" },
|
342
|
+
url: "https://spreedly-echo.herokuapp.com",
|
343
|
+
body: { card_number: "{{credit_card_number}}" }.to_json
|
344
|
+
)
|
345
|
+
```
|
325
346
|
|
326
347
|
## Error Handling
|
327
348
|
|
data/lib/spreedly/environment.rb
CHANGED
@@ -49,6 +49,10 @@ module Spreedly
|
|
49
49
|
api_post(authorize_url(gateway_token), body)
|
50
50
|
end
|
51
51
|
|
52
|
+
def complete_transaction(transaction_token)
|
53
|
+
api_post(complete_transaction_url(transaction_token), '')
|
54
|
+
end
|
55
|
+
|
52
56
|
def verify_on_gateway(gateway_token, payment_method_token, options = {})
|
53
57
|
body = verify_body(payment_method_token, options)
|
54
58
|
api_post(verify_url(gateway_token), body)
|
@@ -11,7 +11,7 @@ module Spreedly
|
|
11
11
|
:supports_3dsecure_2_purchase, :supports_3dsecure_2_authorize,
|
12
12
|
:supports_3dsecure_2_mpi_purchase, :supports_3dsecure_2_mpi_authorize,
|
13
13
|
:supports_store, :supports_remove, :supports_general_credit,
|
14
|
-
:supports_fraud_review, type: :boolean
|
14
|
+
:supports_fraud_review, :supports_populate_mit_fields, type: :boolean
|
15
15
|
|
16
16
|
attr_reader :supported_countries, :payment_methods, :auth_modes, :regions
|
17
17
|
|
data/lib/spreedly/urls.rb
CHANGED
@@ -12,6 +12,10 @@ module Spreedly
|
|
12
12
|
"#{base_url}/v1/transactions/#{transaction_token}/transcript"
|
13
13
|
end
|
14
14
|
|
15
|
+
def complete_transaction_url(token)
|
16
|
+
"#{base_url}/v1/transactions/#{token}/complete.xml"
|
17
|
+
end
|
18
|
+
|
15
19
|
def find_gateway_url(token)
|
16
20
|
"#{base_url}/v1/gateways/#{token}.xml"
|
17
21
|
end
|
data/lib/spreedly/version.rb
CHANGED
@@ -1,16 +1,19 @@
|
|
1
1
|
|
2
2
|
module Spreedly
|
3
|
-
|
4
3
|
module CreationHelper
|
5
|
-
|
6
4
|
def create_card_on(environment, options = {})
|
7
|
-
|
8
|
-
environment.add_credit_card(
|
5
|
+
options = default_card_options.merge(options)
|
6
|
+
environment.add_credit_card(options).payment_method
|
9
7
|
end
|
10
8
|
|
11
9
|
def create_failed_card_on(environment, options = {})
|
12
|
-
|
13
|
-
environment.add_credit_card(
|
10
|
+
options = default_card_options.merge(number: '4012888888881881').merge(options)
|
11
|
+
environment.add_credit_card(options).payment_method
|
12
|
+
end
|
13
|
+
|
14
|
+
def create_threeds_2_card_on(environment, options = {})
|
15
|
+
options = default_card_options.merge(number: '4556761029983886').merge(options)
|
16
|
+
environment.add_credit_card(options).payment_method
|
14
17
|
end
|
15
18
|
|
16
19
|
def create_sprel_on(environment)
|
@@ -21,7 +24,7 @@ module Spreedly
|
|
21
24
|
|
22
25
|
private
|
23
26
|
|
24
|
-
def
|
27
|
+
def default_card_options
|
25
28
|
{
|
26
29
|
email: 'perrin@wot.com', number: '5555555555554444', month: 1, year: 2023,
|
27
30
|
last_name: 'Aybara', first_name: 'Perrin', retained: true
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RemoteCompleteTransactionTest < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@environment = Spreedly::Environment.new(remote_test_environment_key, remote_test_access_secret)
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_successful_complete_a_3ds_transaction
|
9
|
+
gateway_token = @environment.add_gateway(:test).token
|
10
|
+
card_token = create_threeds_2_card_on(@environment).token
|
11
|
+
base64_encoded_browser_info = "eyJ3aWR0aCI6MTY4MCwiaGVpZ2h0IjoxMDUwLCJkZXB0aCI6MjQsInRpbWV6b25lIjoyNDAsInVzZXJfYWdlbnQiOiJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNF80KSBBcHBsZVdlYktpdC82MDUuMS4xNSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vMTIuMSBTYWZhcmkvNjA1LjEuMTUiLCJqYXZhIjp0cnVlLCJsYW5ndWFnZSI6ImVuLVVTIn0="
|
12
|
+
purchase = @environment.purchase_on_gateway(
|
13
|
+
gateway_token,
|
14
|
+
card_token,
|
15
|
+
3003,
|
16
|
+
browser_info: base64_encoded_browser_info,
|
17
|
+
three_ds_version: '2.0',
|
18
|
+
redirect_url: 'https://example.com/redirect',
|
19
|
+
callback_url: 'https://example.com/callback',
|
20
|
+
attempt_3dsecure: true
|
21
|
+
)
|
22
|
+
assert_equal 'pending', purchase.state
|
23
|
+
|
24
|
+
complete_transaction = @environment.complete_transaction(purchase.token)
|
25
|
+
assert_equal 'succeeded', complete_transaction.state
|
26
|
+
end
|
27
|
+
end
|
@@ -68,6 +68,7 @@ class GatewayOptionsTest < Test::Unit::TestCase
|
|
68
68
|
:supports_general_credit,
|
69
69
|
:supports_offsite_authorize,
|
70
70
|
:supports_offsite_purchase,
|
71
|
+
:supports_populate_mit_fields,
|
71
72
|
:supports_purchase,
|
72
73
|
:supports_purchase_via_preauthorization,
|
73
74
|
:supports_reference_purchase,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spreedly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.25
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Spreedly
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -191,6 +191,7 @@ files:
|
|
191
191
|
- test/remote/remote_add_receiver_test.rb
|
192
192
|
- test/remote/remote_authorize_test.rb
|
193
193
|
- test/remote/remote_capture_test.rb
|
194
|
+
- test/remote/remote_complete_test.rb
|
194
195
|
- test/remote/remote_deliver_payment_method_test.rb
|
195
196
|
- test/remote/remote_find_gateway_test.rb
|
196
197
|
- test/remote/remote_find_payment_method_test.rb
|
@@ -285,7 +286,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
285
286
|
- !ruby/object:Gem::Version
|
286
287
|
version: '0'
|
287
288
|
requirements: []
|
288
|
-
rubygems_version: 3.
|
289
|
+
rubygems_version: 3.1.6
|
289
290
|
signing_key:
|
290
291
|
specification_version: 4
|
291
292
|
summary: Provides a Ruby wrapper for the Spreedly API.
|
@@ -301,6 +302,7 @@ test_files:
|
|
301
302
|
- test/remote/remote_add_receiver_test.rb
|
302
303
|
- test/remote/remote_authorize_test.rb
|
303
304
|
- test/remote/remote_capture_test.rb
|
305
|
+
- test/remote/remote_complete_test.rb
|
304
306
|
- test/remote/remote_deliver_payment_method_test.rb
|
305
307
|
- test/remote/remote_find_gateway_test.rb
|
306
308
|
- test/remote/remote_find_payment_method_test.rb
|