spreedly 2.0.16 → 2.0.17

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a6681908d5f7ce7e0433d97dc0389343571976a4
4
- data.tar.gz: 98d59f7c229ac9770443d54fafa2ae52fde2e444
3
+ metadata.gz: 3184c257106f0bad1a9cb40cb5e461b704ddff97
4
+ data.tar.gz: 758c4e4c12545433de5e2cf5e6ad8bb96a2eaffe
5
5
  SHA512:
6
- metadata.gz: f253a31fb72f599f5e51d3ffbd8f979de4827db9444dc2b89780c6ce04d497c5d04ee3d47dabd59cc4f77b8b8404eb404f86cb9e408281553c5f46a7fa1af909
7
- data.tar.gz: dbabd8dc40937daa4ca9d4791ba1f0e5e8d9bf94efa97acc6d442648511f691c8fe246894f63734c24fc03e7da246394098eea1153f66b7f2e1df8d994e4cf88
6
+ metadata.gz: 945d439187bd066d83cf46edbdeb79aedf07cb3833f79b0e416e959dd118179250cd8831866d1063b4f61f2c49995465d92e5125b79f6bf49f52bb842aed740b
7
+ data.tar.gz: bd33131952ef6e7d8061c1bd307c5c5e43a7aea60942e30872b1f21376dee08fd9e061a772d7ef4c727451ca4630de26e51f2b2b5e60c302151d34413b3858fe
data/README.md CHANGED
@@ -314,6 +314,14 @@ You can get the full list of supported gateways like so:
314
314
  env.gateway_options
315
315
  ```
316
316
 
317
+ #### Getting meta information about the supported payment method distribution receivers
318
+
319
+ You can get the full list of supported receivers like so:
320
+
321
+ ``` ruby
322
+ env.receiver_options
323
+ ```
324
+
317
325
 
318
326
  ## Error Handling
319
327
 
@@ -18,6 +18,7 @@ require 'spreedly/transactions/gateway_transaction'
18
18
  require 'spreedly/transactions/add_payment_method'
19
19
  require 'spreedly/transactions/auth_purchase'
20
20
  require 'spreedly/transactions/purchase'
21
+ require 'spreedly/transactions/offsite_purchase'
21
22
  require 'spreedly/transactions/void'
22
23
  require 'spreedly/transactions/verification'
23
24
  require 'spreedly/transactions/authorization'
@@ -32,6 +33,7 @@ require 'spreedly/transactions/store'
32
33
  require 'spreedly/gateway'
33
34
  require 'spreedly/receiver'
34
35
  require 'spreedly/gateway_class'
36
+ require 'spreedly/receiver_class'
35
37
  require 'spreedly/error'
36
38
 
37
39
  module Spreedly
@@ -7,8 +7,11 @@ module Spreedly
7
7
 
8
8
  def initialize_fields(xml_doc)
9
9
  self.class.fields.each do |field|
10
- value = xml_doc.at_xpath(".//#{field}").inner_html.strip
11
- instance_variable_set("@#{field}", value)
10
+ node = xml_doc.at_xpath(".//#{field}")
11
+ if node
12
+ value = node.inner_html.strip
13
+ instance_variable_set("@#{field}", value)
14
+ end
12
15
  end
13
16
  end
14
17
 
@@ -110,6 +110,15 @@ module Spreedly
110
110
  self.new("", "").gateway_options
111
111
  end
112
112
 
113
+ def receiver_options
114
+ xml_doc = ssl_get(receiver_options_url, headers)
115
+ ReceiverClass.new_list_from(xml_doc)
116
+ end
117
+
118
+ def self.receiver_options
119
+ self.new("", "").receiver_options
120
+ end
121
+
113
122
  def add_gateway(gateway_type, credentials = {})
114
123
  body = add_gateway_body(gateway_type, credentials)
115
124
  xml_doc = ssl_post(add_gateway_url, body, headers)
@@ -270,7 +279,7 @@ module Spreedly
270
279
  add_gateway_specific_fields(doc, options)
271
280
  add_shipping_address_override(doc, options)
272
281
  add_to_doc(doc, options, :order_id, :description, :ip, :email, :merchant_name_descriptor,
273
- :merchant_location_descriptor)
282
+ :merchant_location_descriptor, :redirect_url, :callback_url)
274
283
  end
275
284
 
276
285
  def add_gateway_specific_fields(doc, options)
@@ -0,0 +1,21 @@
1
+ module Spreedly
2
+
3
+ class ReceiverClass
4
+ include Fields
5
+
6
+ field :receiver_type, :hostnames, :name, :company_name
7
+
8
+ def initialize(xml_doc)
9
+ initialize_fields(xml_doc)
10
+ end
11
+
12
+ def self.new_list_from(xml_doc)
13
+ receivers = xml_doc.xpath('.//receivers/receiver')
14
+ receivers.map do |each|
15
+ self.new(each)
16
+ end
17
+ end
18
+
19
+ end
20
+
21
+ end
@@ -8,7 +8,8 @@ module Spreedly
8
8
 
9
9
  def initialize(xml_doc)
10
10
  super
11
- @payment_method = PaymentMethod.new_from(xml_doc.at_xpath('.//payment_method'))
11
+ payment_method_xml_doc = xml_doc.at_xpath('.//payment_method')
12
+ @payment_method = payment_method_xml_doc ? PaymentMethod.new_from(payment_method_xml_doc) : nil
12
13
  end
13
14
 
14
15
  end
@@ -0,0 +1,7 @@
1
+ module Spreedly
2
+
3
+ class OffsitePurchase < AuthPurchase
4
+ field :checkout_url, :redirect_url, :callback_url
5
+ end
6
+
7
+ end
@@ -12,6 +12,8 @@ module Spreedly
12
12
  return AddPaymentMethod.new(xml_doc)
13
13
  when 'Purchase'
14
14
  return Purchase.new(xml_doc)
15
+ when 'OffsitePurchase'
16
+ return OffsitePurchase.new(xml_doc)
15
17
  when 'Authorization'
16
18
  return Authorization.new(xml_doc)
17
19
  when 'Capture'
@@ -83,6 +83,10 @@ module Spreedly
83
83
  "#{base_url}/v1/gateways.xml"
84
84
  end
85
85
 
86
+ def receiver_options_url
87
+ "#{base_url}/v1/receivers_options.xml"
88
+ end
89
+
86
90
  def add_receiver_url
87
91
  "#{base_url}/v1/receivers.xml"
88
92
  end
@@ -1,3 +1,3 @@
1
1
  module Spreedly
2
- VERSION = "2.0.16"
2
+ VERSION = "2.0.17"
3
3
  end
@@ -13,14 +13,38 @@ module Spreedly
13
13
  environment.add_credit_card(deets).payment_method
14
14
  end
15
15
 
16
+ def create_sprel_on(environment)
17
+ body = default_sprel_body(environment)
18
+ redirect_html = raw_ssl_request(:post, environment.transparent_redirect_form_action, body, {}).body
19
+ redirect_html.match(/token=(\w+)/)[1]
20
+ end
16
21
 
17
22
  private
23
+
18
24
  def default_card_deets
19
25
  {
20
26
  email: 'perrin@wot.com', number: '5555555555554444', month: 1, year: 2019,
21
27
  last_name: 'Aybara', first_name: 'Perrin', retained: true
22
28
  }
23
29
  end
24
- end
25
30
 
31
+ def default_sprel_body(environment)
32
+ {
33
+ environment_key: environment.key,
34
+ redirect_url: "http://example.com/transparent_redirect_complete",
35
+ payment_method_type: "sprel"
36
+ }.map do |key, value|
37
+ "#{key}=#{CGI.escape(value.to_s)}"
38
+ end.compact.join("&")
39
+ end
40
+
41
+ def raw_ssl_request(method, endpoint, body, headers, options = {})
42
+ raw_response = Timeout::timeout(60) do
43
+ connection = Spreedly::Connection.new(endpoint)
44
+ connection.request(method, body, headers)
45
+ end
46
+
47
+ raw_response
48
+ end
49
+ end
26
50
  end
@@ -13,7 +13,7 @@ class RemoteFindTransactionTest < Test::Unit::TestCase
13
13
  end
14
14
 
15
15
  def test_transaction_not_found
16
- assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the transaction SomeUnknownToken.") do
16
+ assert_raise(Spreedly::NotFoundError) do
17
17
  @environment.find_transaction("SomeUnknownToken")
18
18
  end
19
19
  end
@@ -13,7 +13,7 @@ class RemoteFindTranscriptTest < Test::Unit::TestCase
13
13
  end
14
14
 
15
15
  def test_transaction_not_found
16
- assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the transaction SomeUnknownToken.") do
16
+ assert_raise(Spreedly::NotFoundError) do
17
17
  @environment.find_transcript("SomeUnknownToken")
18
18
  end
19
19
  end
@@ -10,7 +10,7 @@ class RemoteGatewayOptionsTest < Test::Unit::TestCase
10
10
  gateway_classes = @environment.gateway_options
11
11
  braintree = gateway_classes.select { |each| each.name == "Braintree" }.first
12
12
  assert_equal "http://www.braintreepaymentsolutions.com/", braintree.homepage
13
- assert_equal %w(credit_card third_party_token apple_pay), braintree.payment_methods
13
+ assert_equal %w(credit_card third_party_token apple_pay android_pay), braintree.payment_methods
14
14
  assert_equal %w(asia_pacific europe north_america), braintree.regions
15
15
  assert_equal %w(orange blue), braintree.auth_modes.map { |e| e.auth_mode_type }
16
16
  assert_equal %w(login password), braintree.auth_modes.first.credentials.map { |e| e.name }
@@ -45,6 +45,27 @@ class RemotePurchaseTest < Test::Unit::TestCase
45
45
  assert_equal gateway_token, transaction.gateway_token
46
46
  end
47
47
 
48
+ def test_offsite_transaction_arguments
49
+ gateway_token = @environment.add_gateway(:test).token
50
+ sprel_token = create_sprel_on(@environment)
51
+
52
+ transaction = @environment.purchase_on_gateway(gateway_token, sprel_token, 344,
53
+ order_id: "8675",
54
+ description: "SuperDuper",
55
+ ip: "183.128.100.103",
56
+ email: "fred@example.com",
57
+ merchant_name_descriptor: "Real Stuff",
58
+ merchant_location_descriptor: "Raleigh",
59
+ retain_on_success: true,
60
+ redirect_url: "https://example.com/redirect",
61
+ callback_url: "https://example.com/callback")
62
+
63
+ assert_equal "pending", transaction.state
64
+ assert "https://example.com/callback", transaction.callback_url
65
+ assert "https://example.com/redirect", transaction.redirect_url
66
+ assert transaction.checkout_url
67
+ end
68
+
48
69
  def test_optional_arguments
49
70
  gateway_token = @environment.add_gateway(:test).token
50
71
  card_token = create_card_on(@environment, retained: false).token
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteReceiverOptionsTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @environment = Spreedly::Environment.new(remote_test_environment_key, remote_test_access_secret)
7
+ end
8
+
9
+ def test_successfully_get_options
10
+ receiver_classes = @environment.receiver_options
11
+ ace = receiver_classes.select { |each| each.name == "Acerentacar Receiver" }.first
12
+ assert_equal "https://ota.acerentacar.com", ace.hostnames
13
+ assert_equal "Ace Rent a Car", ace.company_name
14
+ assert_equal "ace_rent_a_car", ace.receiver_type
15
+ end
16
+
17
+ end
18
+
@@ -1,4 +1,3 @@
1
-
2
1
  require 'test/unit'
3
2
  require 'mocha/setup'
4
3
  require 'awesome_print'
@@ -25,6 +25,8 @@ class AddCreditCreditCardTest < Test::Unit::TestCase
25
25
  assert_equal "AXaBXfVUqhaGMg8ytf8isiMAAL9", t.payment_method.token
26
26
  assert_equal "Eland Venture", t.payment_method.full_name
27
27
  assert_equal "Don't test everything here, since find_payment_method tests it all.", t.payment_method.data
28
+
29
+ assert t.payment_method.eligible_for_card_updater
28
30
  end
29
31
 
30
32
  def test_request_body_params
@@ -54,6 +56,55 @@ class AddCreditCreditCardTest < Test::Unit::TestCase
54
56
  [ './phone_number', '81Ab' ]
55
57
  end
56
58
 
59
+ def test_successful_add_credit_card_without_fields_in_response
60
+ t = add_card_using(successful_add_credit_card_partial_response)
61
+
62
+ assert_kind_of(Spreedly::AddPaymentMethod, t)
63
+ assert_kind_of(Spreedly::CreditCard, t.payment_method)
64
+
65
+ assert_equal '6wxjN6HcDik8e3mAhBaaoVGSImH', t.token
66
+ assert !t.retained?
67
+ assert t.succeeded?
68
+ assert_equal Time.parse("2013-08-02T18:04:45Z"), t.created_at
69
+ assert_equal Time.parse("2013-08-02T18:04:45Z"), t.updated_at
70
+ assert_equal 'Succeeded!', t.message
71
+
72
+ assert_equal "AXaBXfVUqhaGMg8ytf8isiMAAL9", t.payment_method.token
73
+ assert_equal "Don't test everything here, since find_payment_method tests it all.", t.payment_method.data
74
+
75
+ assert_nil t.payment_method.full_name
76
+ assert_nil t.payment_method.address1
77
+ assert_nil t.payment_method.address2
78
+ assert_nil t.payment_method.city
79
+ assert_nil t.payment_method.state
80
+ assert_nil t.payment_method.zip
81
+ assert_nil t.payment_method.eligible_for_card_updater
82
+ end
83
+
84
+ def test_request_body_params_without_fields_in_response
85
+ body = get_request_body(successful_add_credit_card_partial_response) do
86
+ @environment.add_credit_card(full_card_details)
87
+ end
88
+
89
+ payment_method = body.xpath('./payment_method')
90
+ assert_xpaths_in payment_method, [ './retained', 'true' ]
91
+
92
+ card = body.xpath('./payment_method/credit_card')
93
+ assert_xpaths_in card,
94
+ [ './first_name', 'Leavenworth' ],
95
+ [ './last_name', 'Smedry' ],
96
+ [ './number', '9555555555554444' ],
97
+ [ './month', '3' ],
98
+ [ './year', '2021' ]
99
+
100
+ assert_nil body.at_xpath('./payment_method/address1')
101
+ assert_nil body.at_xpath('./payment_method/address2')
102
+ assert_nil body.at_xpath('./payment_method/city')
103
+ assert_nil body.at_xpath('./payment_method/state')
104
+ assert_nil body.at_xpath('./payment_method/zip')
105
+ assert_nil body.at_xpath('./payment_method/eligible_for_card_updater')
106
+ end
107
+
57
108
  private
58
109
  def add_card_using(response)
59
110
  @environment.stubs(:raw_ssl_request).returns(response)
@@ -4,15 +4,15 @@ class FieldsTest < Test::Unit::TestCase
4
4
 
5
5
  class ModelWithFields
6
6
  include Spreedly::Fields
7
- field :message, :amount, :on_test_gateway, :updated_at, :succeeded
7
+ field :message, :amount, :on_test_gateway, :updated_at, :succeeded, :field_not_in_response
8
8
  end
9
9
 
10
10
  class ModelWithTypedFields
11
11
  include Spreedly::Fields
12
- field :message
13
- field :succeeded, :on_test_gateway, type: :boolean
14
- field :amount, type: :integer
15
- field :updated_at, type: :date_time
12
+ field :message, :string_field_not_in_response
13
+ field :succeeded, :on_test_gateway, :boolean_field_not_in_response, type: :boolean
14
+ field :amount, :integer_field_not_in_response, type: :integer
15
+ field :updated_at, :date_time_field_not_in_response, type: :date_time
16
16
  end
17
17
 
18
18
  def setup
@@ -26,6 +26,7 @@ class FieldsTest < Test::Unit::TestCase
26
26
  assert_nil @model.on_test_gateway
27
27
  assert_nil @model.updated_at
28
28
  assert_nil @model.succeeded
29
+ assert_nil @model.field_not_in_response
29
30
  end
30
31
 
31
32
  def test_defaults_to_nil_for_typed_fields
@@ -36,6 +37,10 @@ class FieldsTest < Test::Unit::TestCase
36
37
  assert_nil @typed_model.updated_at
37
38
  assert_nil @typed_model.succeeded
38
39
  assert_nil @typed_model.succeeded?
40
+ assert_nil @typed_model.string_field_not_in_response
41
+ assert_nil @typed_model.boolean_field_not_in_response
42
+ assert_nil @typed_model.integer_field_not_in_response
43
+ assert_nil @typed_model.date_time_field_not_in_response
39
44
  end
40
45
 
41
46
  def test_initialize_fields_for_strings
@@ -45,6 +50,7 @@ class FieldsTest < Test::Unit::TestCase
45
50
  assert_equal "true", @model.on_test_gateway
46
51
  assert_equal "2013-07-31T19:51:57Z", @model.updated_at
47
52
  assert_equal "false", @model.succeeded
53
+ assert_nil @model.field_not_in_response
48
54
  end
49
55
 
50
56
  def test_initialize_fields_for_typed_fields
@@ -56,9 +62,13 @@ class FieldsTest < Test::Unit::TestCase
56
62
  assert_equal Time.parse("2013-07-31T19:51:57Z"), @typed_model.updated_at
57
63
  assert_equal false, @typed_model.succeeded
58
64
  assert_equal false, @typed_model.succeeded?
65
+
66
+ assert_nil @typed_model.string_field_not_in_response
67
+ assert_nil @typed_model.boolean_field_not_in_response
68
+ assert_nil @typed_model.integer_field_not_in_response
69
+ assert_nil @typed_model.date_time_field_not_in_response
59
70
  end
60
71
 
61
-
62
72
  private
63
73
  def xml
64
74
  <<-XML
@@ -32,6 +32,16 @@ class FindTransactionTest < Test::Unit::TestCase
32
32
  assert_nil t.response
33
33
  end
34
34
 
35
+ def test_add_payment_method_transaction_with_no_payment_method
36
+ t = find_using(add_credit_card_transaction_sans_payment_method_method)
37
+
38
+ assert_kind_of(Spreedly::AddPaymentMethod, t)
39
+ assert_equal("rMyrUp27o11gA1pZu2SikMVRNIn", t.token)
40
+
41
+ assert !t.succeeded?
42
+ assert_nil t.payment_method
43
+ end
44
+
35
45
  private
36
46
  def find_using(response)
37
47
  @environment.stubs(:raw_ssl_request).returns(response)
@@ -0,0 +1,31 @@
1
+ require 'test_helper'
2
+ require 'unit/response_stubs/receiver_options_stubs'
3
+
4
+ class ReceiverOptionsTest < Test::Unit::TestCase
5
+
6
+ include ReceiverOptionsStubs
7
+
8
+ def setup
9
+ @environment = Spreedly::Environment.new("key", "secret")
10
+ end
11
+
12
+ def test_successful_receiver_options
13
+ @environment.stubs(:raw_ssl_request).returns(successful_receiver_options_response)
14
+ list = @environment.receiver_options
15
+
16
+ assert_kind_of(Array, list)
17
+ assert_equal 2, list.size
18
+
19
+ assert_equal 'test', list.first.receiver_type
20
+ assert_equal 'Api', list.first.name
21
+ assert_equal "http://api.example.com/post", list.first.hostnames
22
+ assert_equal "The Example API", list.first.company_name
23
+ assert_equal 'test', list.last.receiver_type
24
+ assert_equal 'Funny', list.last.name
25
+ assert_equal "http://funny.pretend.example.com", list.last.hostnames
26
+ assert_equal "Funny Pretend", list.last.company_name
27
+ assert_kind_of Spreedly::ReceiverClass, list.first
28
+ assert_kind_of Spreedly::ReceiverClass, list.last
29
+ end
30
+
31
+ end
@@ -35,7 +35,41 @@ module AddCreditCardStubs
35
35
  <full_name>Eland Venture</full_name>
36
36
  <eligible_for_card_updater type="boolean">true</eligible_for_card_updater>
37
37
  <payment_method_type>credit_card</payment_method_type>
38
- <eligible_for_card_updater type="boolean">true</eligible_for_card_updater>
38
+ <errors>
39
+ </errors>
40
+ <verification_value></verification_value>
41
+ <fingerprint>ac5579920013cc571e506805f1c8f3220eff</fingerprint>
42
+ <number>XXXX-XXXX-XXXX-4942</number>
43
+ </payment_method>
44
+ </transaction>
45
+ XML
46
+ end
47
+
48
+ def successful_add_credit_card_partial_response
49
+ StubResponse.succeeded <<-XML
50
+ <transaction>
51
+ <token>6wxjN6HcDik8e3mAhBaaoVGSImH</token>
52
+ <created_at type="datetime">2013-08-02T18:04:45Z</created_at>
53
+ <updated_at type="datetime">2013-08-02T18:04:45Z</updated_at>
54
+ <succeeded type="boolean">true</succeeded>
55
+ <transaction_type>AddPaymentMethod</transaction_type>
56
+ <retained type="boolean">false</retained>
57
+ <message key="messages.transaction_succeeded">Succeeded!</message>
58
+ <payment_method>
59
+ <token>AXaBXfVUqhaGMg8ytf8isiMAAL9</token>
60
+ <created_at type="datetime">2013-08-02T18:04:45Z</created_at>
61
+ <updated_at type="datetime">2013-08-02T18:04:45Z</updated_at>
62
+ <email>ellend@mistborn.com</email>
63
+ <data>Don't test everything here, since find_payment_method tests it all.</data>
64
+ <storage_state>cached</storage_state>
65
+ <last_four_digits>4942</last_four_digits>
66
+ <first_six_digits>411111</first_six_digits>
67
+ <card_type>master</card_type>
68
+ <first_name>Eland</first_name>
69
+ <last_name>Venture</last_name>
70
+ <month type="integer">1</month>
71
+ <year type="integer">2019</year>
72
+ <payment_method_type>credit_card</payment_method_type>
39
73
  <errors>
40
74
  </errors>
41
75
  <verification_value></verification_value>
@@ -105,4 +105,19 @@ module FindTransactionStubs
105
105
  XML
106
106
  end
107
107
 
108
+ def add_credit_card_transaction_sans_payment_method_method
109
+ StubResponse.succeeded <<-XML
110
+ <transaction>
111
+ <token>rMyrUp27o11gA1pZu2SikMVRNIn</token>
112
+ <created_at type="dateTime">2015-03-11T06:22:57Z</created_at>
113
+ <updated_at type="dateTime">2015-03-11T06:22:57Z</updated_at>
114
+ <succeeded type="boolean">false</succeeded>
115
+ <transaction_type>AddPaymentMethod</transaction_type>
116
+ <retained type="boolean">false</retained>
117
+ <state>created</state>
118
+ <message nil="true"/>
119
+ </transaction>
120
+ XML
121
+ end
122
+
108
123
  end
@@ -0,0 +1,22 @@
1
+ module ReceiverOptionsStubs
2
+
3
+ def successful_receiver_options_response
4
+ StubResponse.succeeded <<-XML
5
+ <receivers>
6
+ <receiver>
7
+ <name>Api</name>
8
+ <receiver_type>test</receiver_type>
9
+ <hostnames>http://api.example.com/post</hostnames>
10
+ <company_name>The Example API</company>
11
+ </receiver>
12
+ <receiver>
13
+ <name>Funny</name>
14
+ <receiver_type>test</receiver_type>
15
+ <hostnames>http://funny.pretend.example.com</hostnames>
16
+ <company_name>Funny Pretend</company>
17
+ </receiver>
18
+ </receivers>
19
+ XML
20
+ end
21
+
22
+ end
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.16
4
+ version: 2.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Spreedly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-08 00:00:00.000000000 Z
11
+ date: 2017-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -140,6 +140,7 @@ files:
140
140
  - lib/spreedly/payment_methods/sprel.rb
141
141
  - lib/spreedly/payment_methods/third_party_token.rb
142
142
  - lib/spreedly/receiver.rb
143
+ - lib/spreedly/receiver_class.rb
143
144
  - lib/spreedly/ssl_requester.rb
144
145
  - lib/spreedly/transactions/add_payment_method.rb
145
146
  - lib/spreedly/transactions/auth_purchase.rb
@@ -147,6 +148,7 @@ files:
147
148
  - lib/spreedly/transactions/capture.rb
148
149
  - lib/spreedly/transactions/deliver_payment_method.rb
149
150
  - lib/spreedly/transactions/gateway_transaction.rb
151
+ - lib/spreedly/transactions/offsite_purchase.rb
150
152
  - lib/spreedly/transactions/purchase.rb
151
153
  - lib/spreedly/transactions/recache_sensitive_data.rb
152
154
  - lib/spreedly/transactions/redact_gateway.rb
@@ -181,6 +183,7 @@ files:
181
183
  - test/remote/remote_list_payment_methods_test.rb
182
184
  - test/remote/remote_list_transactions_test.rb
183
185
  - test/remote/remote_purchase_test.rb
186
+ - test/remote/remote_receiver_options_test.rb
184
187
  - test/remote/remote_redact_gateway_test.rb
185
188
  - test/remote/remote_redact_payment_method_test.rb
186
189
  - test/remote/remote_refund_test.rb
@@ -207,6 +210,7 @@ files:
207
210
  - test/unit/list_payment_methods_test.rb
208
211
  - test/unit/list_transactions_test.rb
209
212
  - test/unit/purchase_test.rb
213
+ - test/unit/receiver_options_test.rb
210
214
  - test/unit/redact_gateway_test.rb
211
215
  - test/unit/redact_payment_method_test.rb
212
216
  - test/unit/refund_test.rb
@@ -224,6 +228,7 @@ files:
224
228
  - test/unit/response_stubs/list_payment_methods_stubs.rb
225
229
  - test/unit/response_stubs/list_transactions_stubs.rb
226
230
  - test/unit/response_stubs/purchase_stubs.rb
231
+ - test/unit/response_stubs/receiver_options_stubs.rb
227
232
  - test/unit/response_stubs/redact_gateway_stubs.rb
228
233
  - test/unit/response_stubs/redact_payment_method_stubs.rb
229
234
  - test/unit/response_stubs/refund_stubs.rb
@@ -258,7 +263,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
258
263
  version: '0'
259
264
  requirements: []
260
265
  rubyforge_project:
261
- rubygems_version: 2.4.8
266
+ rubygems_version: 2.2.5
262
267
  signing_key:
263
268
  specification_version: 4
264
269
  summary: Provides a Ruby wrapper for the Spreedly API.
@@ -284,6 +289,7 @@ test_files:
284
289
  - test/remote/remote_list_payment_methods_test.rb
285
290
  - test/remote/remote_list_transactions_test.rb
286
291
  - test/remote/remote_purchase_test.rb
292
+ - test/remote/remote_receiver_options_test.rb
287
293
  - test/remote/remote_redact_gateway_test.rb
288
294
  - test/remote/remote_redact_payment_method_test.rb
289
295
  - test/remote/remote_refund_test.rb
@@ -310,6 +316,7 @@ test_files:
310
316
  - test/unit/list_payment_methods_test.rb
311
317
  - test/unit/list_transactions_test.rb
312
318
  - test/unit/purchase_test.rb
319
+ - test/unit/receiver_options_test.rb
313
320
  - test/unit/redact_gateway_test.rb
314
321
  - test/unit/redact_payment_method_test.rb
315
322
  - test/unit/refund_test.rb
@@ -327,6 +334,7 @@ test_files:
327
334
  - test/unit/response_stubs/list_payment_methods_stubs.rb
328
335
  - test/unit/response_stubs/list_transactions_stubs.rb
329
336
  - test/unit/response_stubs/purchase_stubs.rb
337
+ - test/unit/response_stubs/receiver_options_stubs.rb
330
338
  - test/unit/response_stubs/redact_gateway_stubs.rb
331
339
  - test/unit/response_stubs/redact_payment_method_stubs.rb
332
340
  - test/unit/response_stubs/refund_stubs.rb