braspag-rest 0.4.5 → 0.5.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
  SHA1:
3
- metadata.gz: a575d8862d5df21c60e4b3d9792578538a5a1ba5
4
- data.tar.gz: 4a947b119af93f416274e9fe53bb8844a8968273
3
+ metadata.gz: af51da75eacd0111305201619309a0526ef5947c
4
+ data.tar.gz: c0542dd1d64a09fbb86792b091467f2df2d96888
5
5
  SHA512:
6
- metadata.gz: 5c383929faf43a6b0e9a6742fc03e09b593f32eb7e7f238ba78bb481dcccb9de06d3b980721faf59728ab3b3d459ad80a775a5df78e4ff4253183057191aca60
7
- data.tar.gz: f5fe080c682bc9fe826d260cabf7a7ecafc381c78db8cd7395a72708f7fc621d52558f15683e90d950d08de14baaf1d170d9c907108e20db9a4e1551af371bbd
6
+ metadata.gz: 2bbc186e05f37800f9ee185f668da8b24897ab4a8a16ca1ba5b12eebe0411fba7b59ec17aff7e5c953284696088071751a70c6cf0ab02af84403a17c235bf20f
7
+ data.tar.gz: 6dc039cb0af98ef161d49ce8e691cceeb8e075ec4e5b81ba307ae32de88799817f2564076a3b788826d2ac2a9f28cd73494ecacf72e5b7cf580df345909a06c1
data/README.md CHANGED
@@ -93,6 +93,87 @@ sale = BraspagRest::Sale.new(
93
93
  sale.save
94
94
  ```
95
95
 
96
+ ### Authorize an order support fraud analysis fields
97
+
98
+ ```rb
99
+ sale = BraspagRest::Sale.new(
100
+ order_id: '123456',
101
+ request_id: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
102
+ customer: {
103
+ name: 'Comprador Teste'
104
+ },
105
+ payment: {
106
+ type: 'CreditCard',
107
+ amount: 15700,
108
+ provider: 'Simulado',
109
+ installments: 1,
110
+ credit_card: {
111
+ number: '0000000000000001',
112
+ holder: 'Teste Holder',
113
+ expiration_date: '12/2021',
114
+ security_code: '123',
115
+ brand: 'Visa'
116
+ }
117
+ fraud_analysis: {
118
+ sequence: 'AuthorizeFirst',
119
+ sequence_criteria: 'Always',
120
+ capture_on_low_risk: false,
121
+ void_on_high_risk: false,
122
+ browser: {
123
+ cookies_accepted: false,
124
+ email: 'compradorteste@live.com',
125
+ host_name: 'Teste',
126
+ ip_address: '202.190.150.350',
127
+ type: 'Chrome'
128
+ },
129
+ cart: {
130
+ is_gift: false,
131
+ returns_accepted: true,
132
+ items: [
133
+ {
134
+ gift_category: 'Undefined',
135
+ host_hedge: 'Off',
136
+ non_sensical_hedge: 'Off',
137
+ obscenities_hedge: 'Off',
138
+ phone_hedge: 'Off',
139
+ name: 'ItemTeste',
140
+ quantity: 1,
141
+ sku: '201411170235134521346',
142
+ unit_price: 123,
143
+ risk: 'High',
144
+ time_hedge: 'Normal',
145
+ type: 'AdultContent',
146
+ velocity_hedge: 'High'
147
+ }
148
+ ]
149
+ },
150
+ merchant_defined_fields: [
151
+ {
152
+ id: 9,
153
+ value: 'web'
154
+ }
155
+ ],
156
+ shipping: {
157
+ addressee: 'Sr Comprador Teste',
158
+ method: 'LowCost',
159
+ phone: '21114740'
160
+ },
161
+ travel: {
162
+ departure_time: '2010-01-02',
163
+ journey_type: 'Ida',
164
+ route: 'MAO-RJO',
165
+ legs: [{
166
+ destination: 'GYN',
167
+ origin: 'VCP'
168
+ }]
169
+ }
170
+ }
171
+ }
172
+ )
173
+
174
+ sale.save
175
+ ```
176
+
96
177
  And to create a protected credit card, you should set the credit card saved as true:
97
178
 
98
179
  ```rb
@@ -15,6 +15,7 @@ require 'braspag-rest/response'
15
15
  require 'braspag-rest/request'
16
16
  require 'braspag-rest/customer'
17
17
  require 'braspag-rest/credit_card'
18
+ require 'braspag-rest/fraud_analyses'
19
+ require 'braspag-rest/fraud_analysis'
18
20
  require 'braspag-rest/payment'
19
21
  require 'braspag-rest/sale'
20
- require 'braspag-rest/address'
@@ -2,7 +2,5 @@ module BraspagRest
2
2
  class Customer < Hashie::IUTrash
3
3
  property :name, from: 'Name'
4
4
  property :identity, from: 'Identity'
5
- property :identity_type, from: 'IdentityType'
6
- property :address, from: 'Address', with: ->(values) { BraspagRest::Address.new(values) }
7
5
  end
8
6
  end
@@ -0,0 +1,14 @@
1
+ module BraspagRest
2
+ module FraudAnalyses
3
+ end
4
+ end
5
+
6
+ require 'braspag-rest/fraud_analyses/passenger'
7
+ require 'braspag-rest/fraud_analyses/item'
8
+ require 'braspag-rest/fraud_analyses/leg'
9
+ require 'braspag-rest/fraud_analyses/reply_data'
10
+ require 'braspag-rest/fraud_analyses/travel'
11
+ require 'braspag-rest/fraud_analyses/shipping'
12
+ require 'braspag-rest/fraud_analyses/cart'
13
+ require 'braspag-rest/fraud_analyses/browser'
14
+ require 'braspag-rest/fraud_analyses/merchant_defined_field'
@@ -0,0 +1,11 @@
1
+ module BraspagRest
2
+ module FraudAnalyses
3
+ class Browser < Hashie::IUTrash
4
+ property :cookies_accepted, from: 'CookiesAccepted'
5
+ property :email, from: 'Email'
6
+ property :host_name, from: 'HostName'
7
+ property :ip_address, from: 'IpAddress'
8
+ property :type, from: 'Type'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ module BraspagRest
2
+ module FraudAnalyses
3
+ class Cart < Hashie::IUTrash
4
+ include Hashie::Extensions::Coercion
5
+
6
+ property :is_gift, from: 'IsGift'
7
+ property :returns_accepted, from: 'ReturnsAccepted'
8
+ property :items, from: 'Items'
9
+
10
+ coerce_key :items, Array[Item]
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,24 @@
1
+ module BraspagRest
2
+ module FraudAnalyses
3
+ class Item < Hashie::IUTrash
4
+ include Hashie::Extensions::Coercion
5
+
6
+ property :gift_category, from: 'GiftCategory'
7
+ property :host_hedge, from: 'HostHedge'
8
+ property :non_sensical_hedge, from: 'NonSensicalHedge'
9
+ property :obscenities_hedge, from: 'ObscenitiesHedge'
10
+ property :phone_hedge, from: 'PhoneHedge'
11
+ property :name, from: 'Name'
12
+ property :quantity, from: 'Quantity'
13
+ property :sku, from: 'Sku'
14
+ property :unit_price, from: 'UnitPrice'
15
+ property :risk, from: 'Risk'
16
+ property :time_hedge, from: 'TimeHedge'
17
+ property :type, from: 'Type'
18
+ property :velocity_hedge, from: 'VelocityHedge'
19
+ property :passenger, from: 'Passenger'
20
+
21
+ coerce_key :passenger, BraspagRest::FraudAnalyses::Passenger
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,8 @@
1
+ module BraspagRest
2
+ module FraudAnalyses
3
+ class Leg < Hashie::IUTrash
4
+ property :destination, from: 'Destination'
5
+ property :origin, from: 'Origin'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module BraspagRest
2
+ module FraudAnalyses
3
+ class MerchantDefinedFields < Hashie::IUTrash
4
+ property :id, from: 'Id'
5
+ property :value, from: 'Value'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,12 @@
1
+ module BraspagRest
2
+ module FraudAnalyses
3
+ class Passenger < Hashie::IUTrash
4
+ property :email, from: 'Email'
5
+ property :identity, from: 'Identity'
6
+ property :name, from: 'Name'
7
+ property :rating, from: 'Rating'
8
+ property :phone, from: 'Phone'
9
+ property :status, from: 'Status'
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ module BraspagRest
2
+ module FraudAnalyses
3
+ class ReplyData < Hashie::IUTrash
4
+ property :address_info_code, from: 'AddressInfoCode'
5
+ property :factor_code, from: 'FactorCode'
6
+ property :score, from: 'Score'
7
+ property :bin_country, from: 'BinCountry'
8
+ property :card_issuer, from: 'CardIssuer'
9
+ property :card_scheme, from: 'CardScheme'
10
+ property :host_severity, from: 'HostSeverity'
11
+ property :internet_info_code, from: 'InternetInfoCode'
12
+ property :ip_routing_method, from: 'IpRoutingMethod'
13
+ property :score_model_used, from: 'ScoreModelUsed'
14
+ property :case_priority, from: 'CasePriority'
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ module BraspagRest
2
+ module FraudAnalyses
3
+ class Shipping < Hashie::IUTrash
4
+ property :addressee, from: 'Addressee'
5
+ property :method, from: 'Method'
6
+ property :phone, from: 'Phone'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ module BraspagRest
2
+ module FraudAnalyses
3
+ class Travel < Hashie::IUTrash
4
+ include Hashie::Extensions::Coercion
5
+
6
+ property :departure_time, from: 'DepartureTime'
7
+ property :journey_type, from: 'JourneyType'
8
+ property :route, from: 'Route'
9
+ property :legs, from: 'Legs'
10
+
11
+ coerce_key :legs, Array[BraspagRest::FraudAnalyses::Leg]
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,44 @@
1
+ module BraspagRest
2
+ class FraudAnalysis < Hashie::IUTrash
3
+ include Hashie::Extensions::Coercion
4
+
5
+ STATUS_ACCEPTED = 1
6
+ STATUS_REJECTED = 2
7
+
8
+ property :sequence, from: 'Sequence'
9
+ property :sequence_criteria, from: 'SequenceCriteria'
10
+ property :finger_print_id, from: 'FingerPrintId'
11
+ property :capture_on_low_risk, from: 'CaptureOnLowRisk'
12
+ property :void_on_high_risk, from: 'VoidOnHighRisk'
13
+ property :browser, from: 'Browser'
14
+ property :cart, from: 'Cart'
15
+ property :merchant_defined_fields, from: 'MerchantDefinedFields'
16
+
17
+ property :shipping, from: 'Shipping'
18
+ property :travel, from: 'Travel'
19
+
20
+ property :status, from: 'Status'
21
+ property :fraud_analysis_reason_code, from: 'FraudAnalysisReasonCode'
22
+
23
+ # Response
24
+ property :travel, from: 'Travel'
25
+ property :shipping, from: 'Shipping'
26
+ property :id, from: 'Id'
27
+ property :reply_data, from: 'ReplyData'
28
+
29
+ coerce_key :browser, BraspagRest::FraudAnalyses::Browser
30
+ coerce_key :cart, BraspagRest::FraudAnalyses::Cart
31
+ coerce_key :shipping, BraspagRest::FraudAnalyses::Shipping
32
+ coerce_key :travel, BraspagRest::FraudAnalyses::Travel
33
+ coerce_key :reply_data, BraspagRest::FraudAnalyses::ReplyData
34
+ coerce_key :merchant_defined_fields, Array[BraspagRest::FraudAnalyses::MerchantDefinedFields]
35
+
36
+ def accepted?
37
+ status.to_i.eql?(STATUS_ACCEPTED)
38
+ end
39
+
40
+ def rejected?
41
+ status.to_i.eql?(STATUS_REJECTED)
42
+ end
43
+ end
44
+ end
@@ -5,14 +5,27 @@ module Hashie
5
5
  include Hashie::Extensions::Dash::PropertyTranslation
6
6
 
7
7
  def inverse_attributes
8
- {}.tap do |attributes|
9
- self.class.translations.each do |from, property|
10
- value = self.send(property)
11
- value = value.respond_to?(:inverse_attributes) ? value.inverse_attributes : value
12
-
13
- attributes[from] = value unless value.nil?
8
+ self.class.translations.each_with_object({}) do |(from, property), attributes|
9
+ value = nested_inverse(self.send(property))
10
+
11
+ unless value.nil?
12
+ attributes[from] = value
14
13
  end
15
14
  end
16
15
  end
16
+
17
+ private
18
+
19
+ def nested_inverse(value)
20
+ if [Array, Set].include?(value.class)
21
+ value.map { |item| attributes_for(item) }
22
+ else
23
+ attributes_for(value)
24
+ end
25
+ end
26
+
27
+ def attributes_for(value)
28
+ value.respond_to?(:inverse_attributes) ? value.inverse_attributes : value
29
+ end
17
30
  end
18
31
  end
@@ -9,7 +9,6 @@ module BraspagRest
9
9
  property :id, from: 'PaymentId'
10
10
  property :type, from: 'Type'
11
11
  property :amount, from: 'Amount'
12
- property :boleto_number, from: 'BoletoNumber'
13
12
  property :captured_amount, from: 'CapturedAmount'
14
13
  property :status, from: 'Status'
15
14
  property :provider, from: 'Provider'
@@ -28,6 +27,22 @@ module BraspagRest
28
27
  property :instructions, from: 'Instructions'
29
28
  property :printable_page_url, from: 'Url'
30
29
 
30
+ property :currency, from: 'Currency'
31
+ property :country, from: 'Country'
32
+ property :service_tax_amount, from: 'ServiceTaxAmount'
33
+ property :interest, from: 'Interest'
34
+ property :capture, from: 'Capture'
35
+ property :authenticate, from: 'Authenticate'
36
+ property :soft_descriptor, from: 'SoftDescriptor'
37
+ property :fraud_analysis, from: 'FraudAnalysis'
38
+
39
+ # Response fields
40
+ property :received_date, from: 'ReceivedDate'
41
+ property :provider_return_code, from: 'ProviderReturnCode'
42
+ property :provider_return_message, from: 'ProviderReturnMessage'
43
+ property :links, from: 'Links'
44
+
45
+ coerce_key :fraud_analysis, BraspagRest::FraudAnalysis
31
46
  coerce_key :credit_card, BraspagRest::CreditCard
32
47
 
33
48
  def authorized?
@@ -1,4 +1,3 @@
1
- require 'json'
2
1
  module BraspagRest
3
2
  class Request
4
3
  class << self
@@ -1,3 +1,3 @@
1
1
  module BraspagRest
2
- VERSION = "0.4.5"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: braspag-rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dinda Dev Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-07 00:00:00.000000000 Z
11
+ date: 2016-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -128,10 +128,20 @@ files:
128
128
  - bin/setup
129
129
  - braspag-rest.gemspec
130
130
  - lib/braspag-rest.rb
131
- - lib/braspag-rest/address.rb
132
131
  - lib/braspag-rest/configuration.rb
133
132
  - lib/braspag-rest/credit_card.rb
134
133
  - lib/braspag-rest/customer.rb
134
+ - lib/braspag-rest/fraud_analyses.rb
135
+ - lib/braspag-rest/fraud_analyses/browser.rb
136
+ - lib/braspag-rest/fraud_analyses/cart.rb
137
+ - lib/braspag-rest/fraud_analyses/item.rb
138
+ - lib/braspag-rest/fraud_analyses/leg.rb
139
+ - lib/braspag-rest/fraud_analyses/merchant_defined_field.rb
140
+ - lib/braspag-rest/fraud_analyses/passenger.rb
141
+ - lib/braspag-rest/fraud_analyses/reply_data.rb
142
+ - lib/braspag-rest/fraud_analyses/shipping.rb
143
+ - lib/braspag-rest/fraud_analyses/travel.rb
144
+ - lib/braspag-rest/fraud_analysis.rb
135
145
  - lib/braspag-rest/hashie.rb
136
146
  - lib/braspag-rest/hashie/iudash.rb
137
147
  - lib/braspag-rest/hashie/iutrash.rb
@@ -160,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
160
170
  version: '0'
161
171
  requirements: []
162
172
  rubyforge_project:
163
- rubygems_version: 2.5.2
173
+ rubygems_version: 2.5.1
164
174
  signing_key:
165
175
  specification_version: 4
166
176
  summary: Gem to use Braspag gateway in his REST version
@@ -1,12 +0,0 @@
1
- module BraspagRest
2
- class Address < Hashie::IUTrash
3
- property :street, from: 'Street'
4
- property :number, from: 'Number'
5
- property :complement, from: 'Complement'
6
- property :zip_code, from: 'ZipCode'
7
- property :city, from: 'City'
8
- property :state, from: 'State'
9
- property :country, from: 'Country'
10
- property :district, from: 'District'
11
- end
12
- end