braintree 3.2.0 → 3.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 78d503215e210019aebf40c5b4f0d42f8e98721a728016930efedc008c138ccc
4
- data.tar.gz: 688dca23d5029e44cdb81915b2935bdf93d1b3b68f0e44703b46856d4a1abf6a
3
+ metadata.gz: d6f4e51f43d816075ea0d94fdf7b9c7cc93b66293d6f03eb2bf2c1b387f25f46
4
+ data.tar.gz: b0318dcc9f2a0d539a2dd43090e93bd2deaaedc339a7fe56844714b3a2d0e794
5
5
  SHA512:
6
- metadata.gz: 8a3a1935223a681e1b7935ef2e81bbe68448ebac245e3fe460892c423098c0db6c9cc9d05d25e11539fe392fdc34cef60e8a41e18a1ed1e95191729cf5aa624c
7
- data.tar.gz: bb1137c11f4ab8e12fba995e6fb547222ceb99f13231b393a8f631b487f11d74661c6d461383614eccdbce9acbbd8d91890bf8bd3c759b8579e0ecbbcccc24ce
6
+ metadata.gz: 5db81d38673b53ee88428054ede01e065ae0ff4399548ddddd951676e34dc5cde4ca87654a39f9f3ef3a50403974a895e4347c876d85139bea88937dadc5e55f
7
+ data.tar.gz: 1bb19f771028a007c21da653a5efc1ca484f5c237da528eafab7bb783840973739df2c88cd7ea54ad21e1ec9bad592eebc62ff4eddf96965ba8307eccd91d6c4
@@ -6,16 +6,18 @@ module Braintree
6
6
  attr_reader :customer_location_zip
7
7
  attr_reader :customer_tenure
8
8
  attr_reader :decision
9
+ attr_reader :decision_reasons
9
10
  attr_reader :device_data_captured
10
11
  attr_reader :fraud_service_provider
11
12
  attr_reader :id
13
+ attr_reader :transaction_risk_score
12
14
 
13
15
  def initialize(attributes)
14
16
  set_instance_variables_from_hash attributes unless attributes.nil?
15
17
  end
16
18
 
17
19
  def inspect
18
- attr_order = [:id, :decision, :device_data_captured, :fraud_service_provider]
20
+ attr_order = [:id, :decision, :decision_reasons, :device_data_captured, :fraud_service_provider, :transaction_risk_score]
19
21
  formatted_attrs = attr_order.map do |attr|
20
22
  "#{attr}: #{send(attr).inspect}"
21
23
  end
@@ -2,16 +2,21 @@ module Braintree
2
2
  class ThreeDSecureInfo # :nodoc:
3
3
  include BaseModule
4
4
 
5
+ attr_reader :acs_transaction_id
6
+ attr_reader :cavv
7
+ attr_reader :ds_transaction_id
8
+ attr_reader :eci_flag
5
9
  attr_reader :enrolled
6
- attr_reader :liability_shifted
7
10
  attr_reader :liability_shift_possible
11
+ attr_reader :liability_shifted
12
+ attr_reader :pares_status
8
13
  attr_reader :status
9
- attr_reader :cavv
10
- attr_reader :xid
11
- attr_reader :eci_flag
12
- attr_reader :three_d_secure_version
13
- attr_reader :ds_transaction_id
14
14
  attr_reader :three_d_secure_authentication_id
15
+ attr_reader :three_d_secure_transaction_id
16
+ attr_reader :three_d_secure_version
17
+ attr_reader :xid
18
+ attr_reader :lookup
19
+ attr_reader :authentication
15
20
 
16
21
  alias_method :liability_shifted?, :liability_shifted
17
22
  alias_method :liability_shift_possible?, :liability_shift_possible
@@ -22,16 +27,21 @@ module Braintree
22
27
 
23
28
  def inspect
24
29
  attr_order = [
30
+ :acs_transaction_id,
31
+ :authentication,
32
+ :cavv,
33
+ :ds_transaction_id,
34
+ :eci_flag,
25
35
  :enrolled,
26
- :liability_shifted,
27
36
  :liability_shift_possible,
37
+ :liability_shifted,
38
+ :lookup,
39
+ :pares_status,
28
40
  :status,
29
- :cavv,
30
- :xid,
31
- :eci_flag,
32
- :three_d_secure_version,
33
- :ds_transaction_id,
34
41
  :three_d_secure_authentication_id,
42
+ :three_d_secure_transaction_id,
43
+ :three_d_secure_version,
44
+ :xid
35
45
  ]
36
46
 
37
47
  formatted_attrs = attr_order.map do |attr|
@@ -1,7 +1,7 @@
1
1
  module Braintree
2
2
  module Version
3
3
  Major = 3
4
- Minor = 2
4
+ Minor = 3
5
5
  Tiny = 0
6
6
 
7
7
  String = "#{Major}.#{Minor}.#{Tiny}"
@@ -137,7 +137,7 @@ describe Braintree::CreditCard do
137
137
  end
138
138
 
139
139
  it "returns risk data on verification on credit_card create" do
140
- with_advanced_fraud_integration_merchant do
140
+ with_fraud_protection_enterprise_merchant do
141
141
  customer = Braintree::Customer.create!
142
142
  credit_card = Braintree::CreditCard.create!(
143
143
  :cardholder_name => "Original Holder",
@@ -148,10 +148,12 @@ describe Braintree::CreditCard do
148
148
  :options => {:verify_card => true}
149
149
  )
150
150
  verification = credit_card.verification
151
- verification.risk_data.should respond_to(:id)
152
- verification.risk_data.should respond_to(:decision)
153
- verification.risk_data.should respond_to(:device_data_captured)
154
- verification.risk_data.should respond_to(:fraud_service_provider)
151
+ verification.risk_data.id.should_not be_nil
152
+ verification.risk_data.decision.should_not be_nil
153
+ verification.risk_data.decision_reasons.should_not be_nil
154
+ verification.risk_data.device_data_captured.should_not be_nil
155
+ verification.risk_data.fraud_service_provider.should_not be_nil
156
+ expect(verification.risk_data).to respond_to(:transaction_risk_score)
155
157
  end
156
158
  end
157
159
 
@@ -305,7 +305,7 @@ describe Braintree::MerchantGateway do
305
305
  it "succeeds" do
306
306
  result = Braintree::Merchant.provision_raw_apple_pay
307
307
  result.should be_success
308
- result.supported_networks.should == ["visa", "mastercard", "amex", "discover", "maestro"]
308
+ result.supported_networks.should == ["visa", "mastercard", "amex", "discover", "maestro", "elo"]
309
309
  end
310
310
 
311
311
  it "is repeatable" do
@@ -313,7 +313,7 @@ describe Braintree::MerchantGateway do
313
313
  result.should be_success
314
314
  result = Braintree::Merchant.provision_raw_apple_pay
315
315
  result.should be_success
316
- result.supported_networks.should == ["visa", "mastercard", "amex", "discover", "maestro"]
316
+ result.supported_networks.should == ["visa", "mastercard", "amex", "discover", "maestro", "elo"]
317
317
  end
318
318
  end
319
319
 
@@ -123,8 +123,8 @@ describe Braintree::Transaction do
123
123
 
124
124
  describe "self.create" do
125
125
  describe "risk data" do
126
- it "returns decision, device_data_captured and id" do
127
- with_advanced_fraud_integration_merchant do
126
+ it "returns decision, device_data_captured, id, transaction_risk_score, and decision_reasons" do
127
+ with_fraud_protection_enterprise_merchant do
128
128
  result = Braintree::Transaction.create(
129
129
  :type => "sale",
130
130
  :amount => 1_00,
@@ -134,15 +134,17 @@ describe Braintree::Transaction do
134
134
  }
135
135
  )
136
136
  result.transaction.risk_data.should be_a(Braintree::RiskData)
137
- result.transaction.risk_data.should respond_to(:id)
138
- result.transaction.risk_data.should respond_to(:decision)
139
- result.transaction.risk_data.should respond_to(:device_data_captured)
140
- result.transaction.risk_data.should respond_to(:fraud_service_provider)
137
+ result.transaction.risk_data.id.should_not be_nil
138
+ result.transaction.risk_data.decision.should_not be_nil
139
+ result.transaction.risk_data.decision_reasons.should_not be_nil
140
+ result.transaction.risk_data.device_data_captured.should_not be_nil
141
+ result.transaction.risk_data.fraud_service_provider.should_not be_nil
142
+ expect(result.transaction.risk_data).to respond_to(:transaction_risk_score)
141
143
  end
142
144
  end
143
145
 
144
146
  it "handles validation errors for invalid risk data attributes" do
145
- with_advanced_fraud_integration_merchant do
147
+ with_advanced_fraud_kount_integration_merchant do
146
148
  result = Braintree::Transaction.create(
147
149
  :type => "sale",
148
150
  :amount => Braintree::Test::TransactionAmounts::Authorize,
@@ -930,7 +932,7 @@ describe Braintree::Transaction do
930
932
  end
931
933
 
932
934
  it "exposes the fraud gateway rejection reason" do
933
- with_advanced_fraud_integration_merchant do
935
+ with_advanced_fraud_kount_integration_merchant do
934
936
  result = Braintree::Transaction.sale(
935
937
  :amount => Braintree::Test::TransactionAmounts::Authorize,
936
938
  :credit_card => {
@@ -945,7 +947,7 @@ describe Braintree::Transaction do
945
947
  end
946
948
 
947
949
  it "exposes the risk_threshold gateway rejection reason (via test cc num)" do
948
- with_advanced_fraud_integration_merchant do
950
+ with_advanced_fraud_kount_integration_merchant do
949
951
  result = Braintree::Transaction.sale(
950
952
  :amount => Braintree::Test::TransactionAmounts::Authorize,
951
953
  :credit_card => {
@@ -960,7 +962,7 @@ describe Braintree::Transaction do
960
962
  end
961
963
 
962
964
  it "exposes the risk_threshold gateway rejection reason (via test test nonce)" do
963
- with_advanced_fraud_integration_merchant do
965
+ with_advanced_fraud_kount_integration_merchant do
964
966
  result = Braintree::Transaction.sale(
965
967
  :amount => Braintree::Test::TransactionAmounts::Authorize,
966
968
  :payment_method_nonce => Braintree::Test::Nonce::GatewayRejectedRiskThresholds,
@@ -5044,7 +5046,7 @@ describe Braintree::Transaction do
5044
5046
  end
5045
5047
 
5046
5048
  it "skips advanced fraud checking if transaction[options][skip_advanced_fraud_checking] is set to true" do
5047
- with_advanced_fraud_integration_merchant do
5049
+ with_advanced_fraud_kount_integration_merchant do
5048
5050
  result = Braintree::Transaction.sale(
5049
5051
  :amount => Braintree::Test::TransactionAmounts::Authorize,
5050
5052
  :credit_card => {
@@ -6238,15 +6240,21 @@ describe Braintree::Transaction do
6238
6240
  it "returns all the three_d_secure_info" do
6239
6241
  transaction = Braintree::Transaction.find("threedsecuredtransaction")
6240
6242
 
6243
+ expect(transaction.three_d_secure_info.authentication).to have_key(:trans_status)
6244
+ expect(transaction.three_d_secure_info.authentication).to have_key(:trans_status_reason)
6245
+ expect(transaction.three_d_secure_info.lookup).to have_key(:trans_status)
6246
+ expect(transaction.three_d_secure_info.lookup).to have_key(:trans_status_reason)
6247
+ transaction.three_d_secure_info.cavv.should == "somebase64value"
6248
+ transaction.three_d_secure_info.ds_transaction_id.should == "dstxnid"
6249
+ transaction.three_d_secure_info.eci_flag.should == "07"
6241
6250
  transaction.three_d_secure_info.enrolled.should == "Y"
6242
- transaction.three_d_secure_info.should be_liability_shifted
6251
+ transaction.three_d_secure_info.pares_status.should == "Y"
6243
6252
  transaction.three_d_secure_info.should be_liability_shift_possible
6253
+ transaction.three_d_secure_info.should be_liability_shifted
6244
6254
  transaction.three_d_secure_info.status.should == "authenticate_successful"
6245
- transaction.three_d_secure_info.cavv.should == "somebase64value"
6246
- transaction.three_d_secure_info.xid.should == "xidvalue"
6247
- transaction.three_d_secure_info.eci_flag.should == "07"
6255
+ expect(transaction.three_d_secure_info.three_d_secure_authentication_id).to be
6248
6256
  transaction.three_d_secure_info.three_d_secure_version.should == "1.0.2"
6249
- transaction.three_d_secure_info.ds_transaction_id.should == "dstxnid"
6257
+ transaction.three_d_secure_info.xid.should == "xidvalue"
6250
6258
  end
6251
6259
 
6252
6260
  it "is nil if the transaction wasn't 3d secured" do
@@ -42,12 +42,18 @@ unless defined?(INTEGRATION_SPEC_HELPER_LOADED)
42
42
  end
43
43
  end
44
44
 
45
- def with_advanced_fraud_integration_merchant(&block)
45
+ def with_advanced_fraud_kount_integration_merchant(&block)
46
46
  with_other_merchant("advanced_fraud_integration_merchant_id", "advanced_fraud_integration_public_key", "advanced_fraud_integration_private_key") do
47
47
  block.call
48
48
  end
49
49
  end
50
50
 
51
+ def with_fraud_protection_enterprise_merchant(&block)
52
+ with_other_merchant("fraud_protection_enterprise_integration_merchant_id", "fraud_protection_enterprise_integration_public_key", "fraud_protection_enterprise_integration_private_key") do
53
+ block.call
54
+ end
55
+ end
56
+
51
57
  def with_altpay_merchant(&block)
52
58
  with_other_merchant("altpay_merchant", "altpay_merchant_public_key", "altpay_merchant_private_key", &block)
53
59
  end
@@ -117,14 +117,18 @@ describe Braintree::CreditCardVerification do
117
117
  verification = Braintree::CreditCardVerification._new(:risk_data => {
118
118
  :id => "123",
119
119
  :decision => "WOO YOU WON $1000 dollars",
120
+ :decision_reasons => ["reason"],
120
121
  :device_data_captured => true,
121
- :fraud_service_provider => "kount"
122
+ :fraud_service_provider => "paypal_fraud_protection",
123
+ :transaction_risk_score => "12",
122
124
  })
123
125
 
124
126
  verification.risk_data.id.should == "123"
125
127
  verification.risk_data.decision.should == "WOO YOU WON $1000 dollars"
128
+ verification.risk_data.decision_reasons.should == ["reason"]
126
129
  verification.risk_data.device_data_captured.should == true
127
- verification.risk_data.fraud_service_provider.should == "kount"
130
+ verification.risk_data.fraud_service_provider.should == "paypal_fraud_protection"
131
+ verification.risk_data.transaction_risk_score.should == "12"
128
132
  end
129
133
 
130
134
  it "handles a nil risk_data" do
@@ -2,12 +2,14 @@ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
2
2
 
3
3
  describe Braintree::RiskData do
4
4
  describe "#initialize" do
5
- it "sets id, decision and device_data_captured" do
6
- risk_data = Braintree::RiskData.new(:id => "123", :decision => "YOU WON $1000 DOLLARS", :device_data_captured => true, :fraud_service_provider => "kount")
5
+ it "sets id, decision, device_data_captured, decision_reasons and transaction_risk_score" do
6
+ risk_data = Braintree::RiskData.new(:id => "123", :decision => "YOU WON $1000 DOLLARS", :device_data_captured => true, :fraud_service_provider => "fraud_protection", :decision_reasons => ["reason"], :transaction_risk_score => "12")
7
7
  risk_data.id.should == "123"
8
8
  risk_data.decision.should == "YOU WON $1000 DOLLARS"
9
9
  risk_data.device_data_captured.should be_truthy
10
- risk_data.fraud_service_provider.should == "kount"
10
+ risk_data.fraud_service_provider.should == "fraud_protection"
11
+ risk_data.decision_reasons.should == ["reason"]
12
+ risk_data.transaction_risk_score.should == "12"
11
13
  end
12
14
  end
13
15
 
@@ -16,10 +18,12 @@ describe Braintree::RiskData do
16
18
  details = Braintree::RiskData.new(
17
19
  :id => "123",
18
20
  :decision => "YOU WON $1000 DOLLARS",
21
+ :decision_reasons => ["reason"],
19
22
  :device_data_captured => true,
20
- :fraud_service_provider => "kount",
23
+ :fraud_service_provider => "fraud_protection",
24
+ :transaction_risk_score => "12",
21
25
  )
22
- details.inspect.should == %(#<RiskData id: "123", decision: "YOU WON $1000 DOLLARS", device_data_captured: true, fraud_service_provider: "kount">)
26
+ details.inspect.should == %(#<RiskData id: "123", decision: "YOU WON $1000 DOLLARS", decision_reasons: ["reason"], device_data_captured: true, fraud_service_provider: "fraud_protection", transaction_risk_score: "12">)
23
27
  end
24
28
  end
25
29
  end
@@ -3,37 +3,55 @@ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
3
3
  describe Braintree::ThreeDSecureInfo do
4
4
  let(:three_d_secure_info) {
5
5
  Braintree::ThreeDSecureInfo.new(
6
+ :acs_transaction_id => "acs_id",
7
+ :cavv => "cavvvalue",
8
+ :ds_transaction_id => "dstrxid",
9
+ :eci_flag => "06",
6
10
  :enrolled => "Y",
7
- :liability_shifted => true,
8
11
  :liability_shift_possible => true,
9
- :cavv => "cavvvalue",
10
- :xid => "xidvalue",
12
+ :liability_shifted => true,
13
+ :pares_status => "Y",
11
14
  :status => "authenticate_successful",
12
- :eci_flag => "06",
13
- :three_d_secure_version => "1.0.2",
14
- :ds_transaction_id => "dstrxid",
15
15
  :three_d_secure_authentication_id => "auth_id",
16
+ :three_d_secure_transaction_id => "trans_id",
17
+ :three_d_secure_version => "1.0.2",
18
+ :xid => "xidvalue",
19
+ :authentication => {
20
+ :trans_status => "authstatus",
21
+ :trans_status_reason => "authstatusreason"
22
+ },
23
+ :lookup => {
24
+ :trans_status => "lookupstatus",
25
+ :trans_status_reason => "lookupstatusreason"
26
+ }
16
27
  )
17
28
  }
18
29
 
19
30
  describe "#initialize" do
20
31
  it "sets attributes" do
21
- three_d_secure_info.enrolled.should == "Y"
22
- three_d_secure_info.status.should == "authenticate_successful"
23
- three_d_secure_info.liability_shifted.should == true
24
- three_d_secure_info.liability_shift_possible.should == true
32
+ three_d_secure_info.acs_transaction_id.should == "acs_id"
25
33
  three_d_secure_info.cavv.should == "cavvvalue"
26
- three_d_secure_info.xid.should == "xidvalue"
27
- three_d_secure_info.eci_flag.should == "06"
28
- three_d_secure_info.three_d_secure_version.should == "1.0.2"
29
34
  three_d_secure_info.ds_transaction_id.should == "dstrxid"
35
+ three_d_secure_info.eci_flag.should == "06"
36
+ three_d_secure_info.enrolled.should == "Y"
37
+ three_d_secure_info.liability_shift_possible.should == true
38
+ three_d_secure_info.liability_shifted.should == true
39
+ three_d_secure_info.pares_status.should == "Y"
40
+ three_d_secure_info.status.should == "authenticate_successful"
30
41
  three_d_secure_info.three_d_secure_authentication_id.should == "auth_id"
42
+ three_d_secure_info.three_d_secure_transaction_id.should == "trans_id"
43
+ three_d_secure_info.three_d_secure_version.should == "1.0.2"
44
+ three_d_secure_info.xid.should == "xidvalue"
45
+ three_d_secure_info.lookup[:trans_status].should == "lookupstatus"
46
+ three_d_secure_info.lookup[:trans_status_reason].should == "lookupstatusreason"
47
+ three_d_secure_info.authentication[:trans_status].should == "authstatus"
48
+ three_d_secure_info.authentication[:trans_status_reason].should == "authstatusreason"
31
49
  end
32
50
  end
33
51
 
34
52
  describe "inspect" do
35
53
  it "prints the attributes" do
36
- three_d_secure_info.inspect.should == %(#<ThreeDSecureInfo enrolled: "Y", liability_shifted: true, liability_shift_possible: true, status: "authenticate_successful", cavv: "cavvvalue", xid: "xidvalue", eci_flag: "06", three_d_secure_version: "1.0.2", ds_transaction_id: "dstrxid", three_d_secure_authentication_id: "auth_id">)
54
+ three_d_secure_info.inspect.should == %(#<ThreeDSecureInfo acs_transaction_id: "acs_id", authentication: {:trans_status=>"authstatus", :trans_status_reason=>"authstatusreason"}, cavv: "cavvvalue", ds_transaction_id: "dstrxid", eci_flag: "06", enrolled: "Y", liability_shift_possible: true, liability_shifted: true, lookup: {:trans_status=>"lookupstatus", :trans_status_reason=>"lookupstatusreason"}, pares_status: "Y", status: "authenticate_successful", three_d_secure_authentication_id: "auth_id", three_d_secure_transaction_id: "trans_id", three_d_secure_version: "1.0.2", xid: "xidvalue">)
37
55
  end
38
56
  end
39
57
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: braintree
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Braintree
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-25 00:00:00.000000000 Z
11
+ date: 2021-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder