workarea-forter 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +20 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
  4. data/.github/ISSUE_TEMPLATE/documentation-request.md +17 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  6. data/.gitignore +17 -0
  7. data/CHANGELOG.md +63 -0
  8. data/CODE_OF_CONDUCT.md +3 -0
  9. data/CONTRIBUTING.md +3 -0
  10. data/Gemfile +25 -0
  11. data/LICENSE +52 -0
  12. data/LICENSE.md +3 -0
  13. data/README.md +113 -0
  14. data/Rakefile +60 -0
  15. data/app/controllers/workarea/admin/orders_controller.decorator +6 -0
  16. data/app/controllers/workarea/storefront/application_controller.decorator +10 -0
  17. data/app/models/search/admin/order.decorator +7 -0
  18. data/app/models/workarea/checkout/collect_payment.decorator +75 -0
  19. data/app/models/workarea/forter/decision.rb +18 -0
  20. data/app/models/workarea/forter/response.rb +15 -0
  21. data/app/models/workarea/fulfillment.decorator +77 -0
  22. data/app/models/workarea/order/status/suspected_fraud.rb +13 -0
  23. data/app/models/workarea/order.decorator +14 -0
  24. data/app/models/workarea/payment/saved_credit_card.decorator +14 -0
  25. data/app/models/workarea/payment/status/suspected_fraud.rb +13 -0
  26. data/app/models/workarea/payment/tender/credit_card.decorator +25 -0
  27. data/app/models/workarea/payment.decorator +13 -0
  28. data/app/services/workarea/forter/account.rb +42 -0
  29. data/app/services/workarea/forter/order.rb +145 -0
  30. data/app/services/workarea/forter/payment.rb +80 -0
  31. data/app/services/workarea/forter/tender/credit_card.rb +73 -0
  32. data/app/services/workarea/forter/tender/general.rb +29 -0
  33. data/app/services/workarea/forter/tender/gift_card.rb +23 -0
  34. data/app/services/workarea/forter/tender/paypal.rb +38 -0
  35. data/app/services/workarea/forter/tender/store_credit.rb +23 -0
  36. data/app/view_models/workarea/admin/order_view_model.decorator +7 -0
  37. data/app/views/workarea/admin/orders/_forter.html.haml +18 -0
  38. data/app/views/workarea/admin/orders/forter.html.haml +57 -0
  39. data/app/views/workarea/storefront/_forter_tracking.html.haml +4 -0
  40. data/app/workers/forter/update_status.rb +21 -0
  41. data/app/workers/workarea/save_user_order_details.decorator +34 -0
  42. data/bin/rails +20 -0
  43. data/config/initializers/appends.rb +9 -0
  44. data/config/initializers/workarea.rb +22 -0
  45. data/config/locales/en.yml +26 -0
  46. data/config/routes.rb +7 -0
  47. data/lib/workarea/forter/bogus_gateway.rb +62 -0
  48. data/lib/workarea/forter/decision_response.rb +60 -0
  49. data/lib/workarea/forter/engine.rb +8 -0
  50. data/lib/workarea/forter/gateway.rb +66 -0
  51. data/lib/workarea/forter/version.rb +5 -0
  52. data/lib/workarea/forter.rb +50 -0
  53. data/test/dummy/Rakefile +6 -0
  54. data/test/dummy/bin/bundle +3 -0
  55. data/test/dummy/bin/rails +4 -0
  56. data/test/dummy/bin/rake +4 -0
  57. data/test/dummy/bin/setup +30 -0
  58. data/test/dummy/bin/update +26 -0
  59. data/test/dummy/bin/yarn +11 -0
  60. data/test/dummy/config/application.rb +30 -0
  61. data/test/dummy/config/boot.rb +5 -0
  62. data/test/dummy/config/cable.yml +10 -0
  63. data/test/dummy/config/environment.rb +5 -0
  64. data/test/dummy/config/environments/development.rb +51 -0
  65. data/test/dummy/config/environments/production.rb +88 -0
  66. data/test/dummy/config/environments/test.rb +44 -0
  67. data/test/dummy/config/initializers/application_controller_renderer.rb +8 -0
  68. data/test/dummy/config/initializers/assets.rb +14 -0
  69. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  70. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  71. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  72. data/test/dummy/config/initializers/inflections.rb +16 -0
  73. data/test/dummy/config/initializers/mime_types.rb +4 -0
  74. data/test/dummy/config/initializers/workarea.rb +5 -0
  75. data/test/dummy/config/initializers/wrap_parameters.rb +9 -0
  76. data/test/dummy/config/locales/en.yml +33 -0
  77. data/test/dummy/config/puma.rb +56 -0
  78. data/test/dummy/config/routes.rb +5 -0
  79. data/test/dummy/config/secrets.yml +32 -0
  80. data/test/dummy/config/spring.rb +6 -0
  81. data/test/dummy/config.ru +5 -0
  82. data/test/dummy/db/seeds.rb +2 -0
  83. data/test/dummy/log/.keep +0 -0
  84. data/test/factories/forter.rb +132 -0
  85. data/test/integration/workarea/admin/forter_order_integration_test.rb +36 -0
  86. data/test/integration/workarea/forter_authorize_cim_response_code_integration_test.rb +69 -0
  87. data/test/integration/workarea/forter_braintree_response_code_integration_test.rb +69 -0
  88. data/test/integration/workarea/forter_checkoutdotcom_integration_test.rb +71 -0
  89. data/test/integration/workarea/forter_cybersource_response_code_integration_test.rb +69 -0
  90. data/test/integration/workarea/forter_moneris_response_code_integration_test.rb +69 -0
  91. data/test/integration/workarea/forter_payflow_pro_response_code_test.rb +69 -0
  92. data/test/integration/workarea/storefront/forter_integration_test.rb +138 -0
  93. data/test/lib/workarea/forter/gateway_test.rb +47 -0
  94. data/test/models/workarea/checkout/forter_collect_payment_test.rb +60 -0
  95. data/test/models/workarea/forter_payment_test.rb +58 -0
  96. data/test/models/workarea/payment/forter_credit_card_test.rb +19 -0
  97. data/test/models/workarea/payment/forter_saved_credit_card_test.rb +32 -0
  98. data/test/services/workarea/forter/order_test.rb +82 -0
  99. data/test/support/workarea/forter_api_config.rb +27 -0
  100. data/test/system/workarea/admin/forter_system_test.rb +31 -0
  101. data/test/system/workarea/storefront/forter_braintree_checkout_system_test.rb +79 -0
  102. data/test/system/workarea/storefront/forter_tracking_system_test.rb +20 -0
  103. data/test/system/workarea/storefront/guest_checkout_system_test.decorator +43 -0
  104. data/test/teaspoon_env.rb +6 -0
  105. data/test/test_helper.rb +11 -0
  106. data/test/vcr_cassettes/forter/get_decision.yml +66 -0
  107. data/test/vcr_cassettes/forter/integration/authorize_net_response_code.yml +410 -0
  108. data/test/vcr_cassettes/forter/integration/braintree_response_code.yml +231 -0
  109. data/test/vcr_cassettes/forter/integration/checkoutdotcom_response_code.yml +129 -0
  110. data/test/vcr_cassettes/forter/integration/cyber_response_code.yml +199 -0
  111. data/test/vcr_cassettes/forter/integration/moneris_response_code.yml +84 -0
  112. data/test/vcr_cassettes/forter/integration/payflow_pro_response_code.yml +60 -0
  113. data/test/vcr_cassettes/forter/system/braintree_approved.yml +293 -0
  114. data/test/vcr_cassettes/forter/system/braintree_declined.yml +485 -0
  115. data/test/vcr_cassettes/forter/system/braintree_not_reviewed.yml +293 -0
  116. data/test/vcr_cassettes/forter/update_status.yml +182 -0
  117. data/test/view_models/workarea/storefront/order_view_model_test.decorator +10 -0
  118. data/test/workers/forter/update_status_test.rb +22 -0
  119. data/workarea-forter.gemspec +18 -0
  120. metadata +195 -0
@@ -0,0 +1,60 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://pilot-payflowpro.paypal.com/
6
+ body:
7
+ encoding: UTF-8
8
+ string: <?xml version="1.0" encoding="UTF-8"?><XMLPayRequest Timeout="60" version="2.1"
9
+ xmlns="http://www.paypal.com/XMLPay"><RequestData><Vendor>wlplugins</Vendor><Partner>PayPal</Partner><Transactions><Transaction
10
+ CustRef=""><Verbosity>MEDIUM</Verbosity><Authorization><PayData><Invoice><InvNum>5c48e5ea987b47d3031dc7f7</InvNum><BillTo><Name>Ben
11
+ Crouse</Name><Address><Street>22 s. 3rd st.</Street><City>Philadelphia</City><State>PA</State><Country>US</Country><Zip>19106</Zip></Address></BillTo><TotalAmt
12
+ Currency="USD">5.00</TotalAmt></Invoice><Tender><Card><CardType>Visa</CardType><CardNum>4111111111111111</CardNum><ExpDate>202001</ExpDate><NameOnCard>Ben</NameOnCard><CVNum>999</CVNum><ExtData
13
+ Name="LASTNAME" Value="Crouse"/></Card></Tender></PayData></Authorization></Transaction></Transactions></RequestData><RequestAuth><UserPass><User>a</User><Password>b</Password></UserPass></RequestAuth></XMLPayRequest>
14
+ headers:
15
+ Content-Type:
16
+ - text/xml
17
+ Content-Length:
18
+ - '926'
19
+ X-Vps-Client-Timeout:
20
+ - '60'
21
+ X-Vps-Vit-Integration-Product:
22
+ - ActiveMerchant
23
+ X-Vps-Vit-Runtime-Version:
24
+ - 2.4.2
25
+ X-Vps-Request-Id:
26
+ - 6917b5a2a61e2b865556323d14b6d8bf
27
+ Connection:
28
+ - close
29
+ Accept-Encoding:
30
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
31
+ Accept:
32
+ - "*/*"
33
+ User-Agent:
34
+ - Ruby
35
+ response:
36
+ status:
37
+ code: 200
38
+ message: OK
39
+ headers:
40
+ Connection:
41
+ - close
42
+ Server:
43
+ - VPS-3.033.00
44
+ X-Vps-Request-Id:
45
+ - 6917b5a2a61e2b865556323d14b6d8bf
46
+ Date:
47
+ - Wed, 23 Jan 2019 22:08:43 GMT
48
+ Content-Type:
49
+ - text/xml
50
+ Content-Length:
51
+ - '785'
52
+ body:
53
+ encoding: UTF-8
54
+ string: <XMLPayResponse xmlns="http://www.paypal.com/XMLPay"><ResponseData><Vendor>wlplugins</Vendor><Partner>paypal</Partner><TransactionResults><TransactionResult><Result>0</Result><ProcessorResult><AVSResult>Y</AVSResult><CVResult>X</CVResult><HostCode>A</HostCode></ProcessorResult><FraudPreprocessResult><Message>No
55
+ Rules Triggered</Message></FraudPreprocessResult><FraudPostprocessResult><Message>No
56
+ Rules Triggered</Message></FraudPostprocessResult><IAVSResult>N</IAVSResult><AVSResult><StreetMatch>Match</StreetMatch><ZipMatch>Match</ZipMatch></AVSResult><CVResult>Service
57
+ Not Available</CVResult><Message>Approved</Message><PNRef>A70AABA79D6A</PNRef><AuthCode>195PNI</AuthCode><VisaCardLevel>12</VisaCardLevel></TransactionResult></TransactionResults></ResponseData></XMLPayResponse>
58
+ http_version:
59
+ recorded_at: Wed, 23 Jan 2019 22:08:44 GMT
60
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,293 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.sandbox.braintreegateway.com/merchants/qwrbf4nrdzhy93zr/transactions
6
+ body:
7
+ encoding: UTF-8
8
+ string: |
9
+ <?xml version="1.0" encoding="UTF-8"?>
10
+ <transaction>
11
+ <amount>12.84</amount>
12
+ <order-id>578D07B017</order-id>
13
+ <customer>
14
+ <id></id>
15
+ <email>approve@forter.com</email>
16
+ <phone nil="true"/>
17
+ <first-name>Ben</first-name>
18
+ <last-name>Crouse</last-name>
19
+ </customer>
20
+ <options>
21
+ <store-in-vault type="boolean">true</store-in-vault>
22
+ <submit-for-settlement nil="true"/>
23
+ <hold-in-escrow nil="true"/>
24
+ </options>
25
+ <custom-fields nil="true"/>
26
+ <merchant-account-id>weblinc</merchant-account-id>
27
+ <credit-card>
28
+ <number>4111111111111111</number>
29
+ <cvv>999</cvv>
30
+ <expiration-month>01</expiration-month>
31
+ <expiration-year>2020</expiration-year>
32
+ <cardholder-name>Ben Crouse</cardholder-name>
33
+ </credit-card>
34
+ <billing>
35
+ <street-address>22 S. 3rd St.</street-address>
36
+ <extended-address></extended-address>
37
+ <company nil="true"/>
38
+ <locality>Philadelphia</locality>
39
+ <region>PA</region>
40
+ <postal-code>19106</postal-code>
41
+ <country-code-alpha2>US</country-code-alpha2>
42
+ </billing>
43
+ <type>sale</type>
44
+ </transaction>
45
+ headers:
46
+ Accept-Encoding:
47
+ - gzip
48
+ Accept:
49
+ - application/xml
50
+ User-Agent:
51
+ - Braintree Ruby Gem 2.93.0 (ActiveMerchant 1.89.0)
52
+ X-Apiversion:
53
+ - '5'
54
+ Content-Type:
55
+ - application/xml
56
+ Authorization:
57
+ - Basic dzN2NmQ5eXRnajRqNG56ODplYjFmODliZTlmMzYzZjYxZmZmM2Y5MDI0NDQ1NmViMg==
58
+ response:
59
+ status:
60
+ code: 201
61
+ message: Created
62
+ headers:
63
+ Date:
64
+ - Fri, 18 Jan 2019 14:09:02 GMT
65
+ Content-Type:
66
+ - application/xml; charset=utf-8
67
+ Transfer-Encoding:
68
+ - chunked
69
+ X-Frame-Options:
70
+ - SAMEORIGIN
71
+ X-Xss-Protection:
72
+ - 1; mode=block
73
+ X-Content-Type-Options:
74
+ - nosniff
75
+ X-Authentication:
76
+ - basic_auth
77
+ X-User:
78
+ - nrkvc7nn7kyfbtm6
79
+ Vary:
80
+ - Accept-Encoding
81
+ Content-Encoding:
82
+ - gzip
83
+ Etag:
84
+ - W/"a432f995a101ee6a1e0037092c85e0e0"
85
+ Cache-Control:
86
+ - max-age=0, private, must-revalidate
87
+ X-Runtime:
88
+ - '0.638737'
89
+ X-Request-Id:
90
+ - 02-1547820541.192-173.161.162.1-8268671
91
+ Content-Security-Policy:
92
+ - frame-ancestors 'self'
93
+ X-Broxyid:
94
+ - 02-1547820541.192-173.161.162.1-8268671
95
+ Strict-Transport-Security:
96
+ - max-age=31536000; includeSubDomains
97
+ body:
98
+ encoding: ASCII-8BIT
99
+ string: !binary |-
100
+ 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
101
+ http_version:
102
+ recorded_at: Fri, 18 Jan 2019 14:09:02 GMT
103
+ - request:
104
+ method: get
105
+ uri: https://api.sandbox.braintreegateway.com/merchants/qwrbf4nrdzhy93zr/customers/684350523
106
+ body:
107
+ encoding: US-ASCII
108
+ string: ''
109
+ headers:
110
+ Accept-Encoding:
111
+ - gzip
112
+ Accept:
113
+ - application/xml
114
+ User-Agent:
115
+ - Braintree Ruby Gem 2.93.0 (ActiveMerchant 1.89.0)
116
+ X-Apiversion:
117
+ - '5'
118
+ Content-Type:
119
+ - application/xml
120
+ Authorization:
121
+ - Basic dzN2NmQ5eXRnajRqNG56ODplYjFmODliZTlmMzYzZjYxZmZmM2Y5MDI0NDQ1NmViMg==
122
+ response:
123
+ status:
124
+ code: 200
125
+ message: OK
126
+ headers:
127
+ Date:
128
+ - Fri, 18 Jan 2019 14:09:02 GMT
129
+ Content-Type:
130
+ - application/xml; charset=utf-8
131
+ Transfer-Encoding:
132
+ - chunked
133
+ X-Frame-Options:
134
+ - SAMEORIGIN
135
+ X-Xss-Protection:
136
+ - 1; mode=block
137
+ X-Content-Type-Options:
138
+ - nosniff
139
+ X-Authentication:
140
+ - basic_auth
141
+ X-User:
142
+ - nrkvc7nn7kyfbtm6
143
+ Vary:
144
+ - Accept-Encoding
145
+ Content-Encoding:
146
+ - gzip
147
+ Etag:
148
+ - W/"973cb6c007e696d9f0a2d6116154a087"
149
+ Cache-Control:
150
+ - max-age=0, private, must-revalidate
151
+ X-Runtime:
152
+ - '0.236579'
153
+ X-Request-Id:
154
+ - 02-1547820542.231-173.161.162.1-3560013
155
+ Content-Security-Policy:
156
+ - frame-ancestors 'self'
157
+ X-Broxyid:
158
+ - 02-1547820542.231-173.161.162.1-3560013
159
+ Strict-Transport-Security:
160
+ - max-age=31536000; includeSubDomains
161
+ body:
162
+ encoding: ASCII-8BIT
163
+ string: !binary |-
164
+ H4sIAP7dQVwAA6RUy27bMBC85ysM3WlJ8SN2IDNFWyS3XtqkQC7BSlxZhClSISk/8vUlZevhODkU0Uk7M7tacYeb3O1LMdqiNlzJVRCPo2CEMlOMy/UqePxzTxbBHb1KstpYVaKmV6NRwhmdL6aTWTS7niShizzoyKwAaYmLX3c6zadSs7fisJy86SQcsl6dc20skVAi/Y4yCQexpwW00Q+taoNJ2COez1RZgTyMJBerwOoag7DBsQQuKFSVVlv8littUY+dOAmPjNdUhZJ4kZnD/gLbYWq4vdRmGsEiI2BH9lDhKmAutLzEgF5H8ZJEMYkXf+LpbbS8jeLnJOwTmvy6Yv+X3yccv98Mg+QcBTNdS4xbkoFm5lQUtIZD4Nlz/og4LOWSTmP/JKF/b3EvIr4GfeIGXPddPFQUSjDU3QhH7aDec12OKr0JOAj6KDdS7dzUB1gvq6XVB6Jywo2pQWY41F+SXeLXhnKscXI5OXf4EL6QCpWBdZeHPv4eKDu01TNMue3/5Bj2ZA61aBtPlRIIMqDecl7akL241m5aROO6Fv4HBkXfM20K7iuum35IqaQtaORGfgF+oD4gaHd819GZvEHP1Mje956D8G44sZ16LVQKwh9k9nA/S/8+1ewhFuyh2D7fL9XzpFC/fmZJ2MvaxAJB2MKZa2CHAdbKeAlrJLUWtLC2MrdhCMagNeNUA3feQVy7k9nBwW+FsIJDidK+lGgLxV6EWqtw6zw/ruT6DuWWayW9YGVAslTt3bLr6ndfdEZ0y5KkIDd9a2doK2122JQeb9wpaDnXilZicDdaoBNorIAPpt0CvUCxOms27EDTYa3M1KnJNK/8JM9XRdhprNqgpMV6X0xvkvAYtVwt+WuNRNZl2twIdzzcbSJNo8k0mi1uIJ9k8QQm80Wa5ssMb27mLJ5P07lbY5+ldrW/thibGluUpSKGbT5xZMcPMrRr43hfPzyRZlcM1+cZYBoEGNPorHZRoF8K9OofAAAA//8DAKwDkIJuBwAA
165
+ http_version:
166
+ recorded_at: Fri, 18 Jan 2019 14:09:02 GMT
167
+ - request:
168
+ method: get
169
+ uri: https://api.sandbox.braintreegateway.com/merchants/qwrbf4nrdzhy93zr/customers/684350523
170
+ body:
171
+ encoding: US-ASCII
172
+ string: ''
173
+ headers:
174
+ Accept-Encoding:
175
+ - gzip
176
+ Accept:
177
+ - application/xml
178
+ User-Agent:
179
+ - Braintree Ruby Gem 2.93.0 (ActiveMerchant 1.89.0)
180
+ X-Apiversion:
181
+ - '5'
182
+ Content-Type:
183
+ - application/xml
184
+ Authorization:
185
+ - Basic dzN2NmQ5eXRnajRqNG56ODplYjFmODliZTlmMzYzZjYxZmZmM2Y5MDI0NDQ1NmViMg==
186
+ response:
187
+ status:
188
+ code: 200
189
+ message: OK
190
+ headers:
191
+ Date:
192
+ - Fri, 18 Jan 2019 14:09:03 GMT
193
+ Content-Type:
194
+ - application/xml; charset=utf-8
195
+ Transfer-Encoding:
196
+ - chunked
197
+ X-Frame-Options:
198
+ - SAMEORIGIN
199
+ X-Xss-Protection:
200
+ - 1; mode=block
201
+ X-Content-Type-Options:
202
+ - nosniff
203
+ X-Authentication:
204
+ - basic_auth
205
+ X-User:
206
+ - nrkvc7nn7kyfbtm6
207
+ Vary:
208
+ - Accept-Encoding
209
+ Content-Encoding:
210
+ - gzip
211
+ Etag:
212
+ - W/"2cbb00bb6604ebfd9833e53037e25be7"
213
+ Cache-Control:
214
+ - max-age=0, private, must-revalidate
215
+ X-Runtime:
216
+ - '0.103681'
217
+ X-Request-Id:
218
+ - 02-1547820542.835-173.161.162.1-8268767
219
+ Content-Security-Policy:
220
+ - frame-ancestors 'self'
221
+ X-Broxyid:
222
+ - 02-1547820542.835-173.161.162.1-8268767
223
+ Strict-Transport-Security:
224
+ - max-age=31536000; includeSubDomains
225
+ body:
226
+ encoding: ASCII-8BIT
227
+ string: !binary |-
228
+ H4sIAP/dQVwAA6RUy27bMBC85ysM3WlJ8SN2IDNFWyS3XtqkQC7BSlxZhClSISk/8vUlZevhODkU0Uk7M7tacYeb3O1LMdqiNlzJVRCPo2CEMlOMy/UqePxzTxbBHb1KstpYVaKmV6NRwhmdL6aTWTS7niShizzoyKwAaYmLX3c6zadSs7fisJy86SQcsl6dc20skVAi/Y4yCQexpwW00Q+taoNJ2COez1RZgTyMJBerwOoag7DBsQQuKFSVVlv8littUY+dOAmPjNdUhZJ4kZnD/gLbYWq4vdRmGsEiI2BH9lDhKmAutLzEgF5H8ZJEMYkXf+LpbbS8jeLnJOwTmvy6Yv+X3yccv98Mg+QcBTNdS4xbkoFm5lQUtIZD4Nlz/og4LOWSTmP/JKF/b3EvIr4GfeIGXPddPFQUSjDU3QhH7aDec12OKr0JOAj6KDdS7dzUB1gvq6XVB6Jywo2pQWY41F+SXeLXhnKscXI5OXf4EL6QCpWBdZeHPv4eKDu01TNMue3/5Bj2ZA61aBtPlRIIMqDecl7akL241m5aROO6Fv4HBkXfM20K7iuum35IqaQtaORGfgF+oD4gaHd819GZvEHP1Mje956D8G44sZ16LVQKwh9k9nA/S/8+1ewhFuyh2D7fL9XzpFC/fmZJ2MvaxAJB2MKZa2CHAdbKeAlrJLUWtLC2MrdhCMagNeNUA3feQVy7k9nBwW+FsIJDidK+lGgLxV6EWqtw6zw/ruT6DuWWayW9YGVAslTt3bLr6ndfdEZ0y5KkIDd9a2doK2122JQeb9wpaDnXilZicDdaoBNorIAPpt0CvUCxOms27EDTYa3M1KnJNK/8JM9XRdhprNqgpMV6X0xvkvAYtVwt+WuNRNZl2twIdzzcbSJNo8k0mi1uIJ9k8QQm80Wa5ssMb27mLJ5P07lbY5+ldrW/thibGluUpSKGbT5xZMcPMrRr43hfPzyRZlcM1+cZYBoEGNPorHZRoF8K9OofAAAA//8DAKwDkIJuBwAA
229
+ http_version:
230
+ recorded_at: Fri, 18 Jan 2019 14:09:03 GMT
231
+ - request:
232
+ method: post
233
+ uri: https://api.forter-secure.com/v2/orders/578D07B017
234
+ body:
235
+ encoding: UTF-8
236
+ string: '{"orderId":"578D07B017","orderType":"WEB","timeSentToForter":1547820543000,"checkoutTime":0,"primaryRecipient":{"personalDetails":{"firstName":"Ben","lastName":"Crouse"},"address":{"address1":"22
237
+ S. 3rd St.","city":"Philadelphia","country":"US","address2":"","zip":"19106","region":"PA"},"phone":[{"phone":"2159251800"}]},"totalAmount":{"amountUSD":"12.84"},"connectionInformation":{"customerIP":"127.0.0.1","userAgent":"Mozilla/5.0
238
+ (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko)
239
+ HeadlessChrome/71.0.3578.98 Safari/537.36","forterTokenCookie":null},"primaryDeliveryDetails":{"deliveryType":"PHYSICAL","deliveryMethod":"Ground","deliveryPrice":{"amountUSD":"7.00"},"carrier":null},"cartItems":[{"basicItemData":{"name":"Integration
240
+ Product","quantity":1,"type":"TANGIBLE","price":{"amountUSD":"5.00"},"productId":"INT_PRODUCT"}}],"payment":[{"tokenizedCard":{"token":"hgxh47","lastFourDigits":"1111","expirationMonth":"01","expirationYear":"2020","cardBrand":"Visa","nameOnCard":"Ben
241
+ Crouse"},"billingDetails":{"personalDetails":{"firstName":"Ben","lastName":"Crouse"},"address":{"address1":"22
242
+ S. 3rd St.","address2":"","city":"Philadelphia","country":"US","zip":"19106","region":"PA"},"phone":[{"phone":"2159251800"}]}}],"accountOwner":{"firstName":"Ben","lastName":"Crouse","email":"approve@forter.com"},"totalDiscount":null}'
243
+ headers:
244
+ Content-Type:
245
+ - application/json
246
+ X-Forter-Siteid:
247
+ - 4d12ac5d794c
248
+ Api-Version:
249
+ - '2.3'
250
+ User-Agent:
251
+ - Faraday v0.15.4
252
+ Authorization:
253
+ - Basic a
254
+ Accept-Encoding:
255
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
256
+ Accept:
257
+ - "*/*"
258
+ response:
259
+ status:
260
+ code: 200
261
+ message: OK
262
+ headers:
263
+ Date:
264
+ - Fri, 18 Jan 2019 14:09:03 GMT
265
+ Content-Type:
266
+ - application/json; charset=utf-8
267
+ Content-Length:
268
+ - '164'
269
+ Connection:
270
+ - keep-alive
271
+ Server:
272
+ - openresty
273
+ Strict-Transport-Security:
274
+ - max-age=86400; includeSubDomains
275
+ Surrogate-Control:
276
+ - no-store
277
+ Cache-Control:
278
+ - no-store, no-cache, must-revalidate, proxy-revalidate
279
+ Pragma:
280
+ - no-cache
281
+ Expires:
282
+ - '0'
283
+ Etag:
284
+ - W/"a4-+JVw3qnakMxcCzFkczAQG8nHENo"
285
+ Vary:
286
+ - Accept-Encoding
287
+ body:
288
+ encoding: UTF-8
289
+ string: '{"status":"success","transaction":"578D07B017","action":"approve","message":"
290
+ | Link in portal: https://portal.forter.com/dashboard/578D07B017","reasonCode":"Test"}'
291
+ http_version:
292
+ recorded_at: Fri, 18 Jan 2019 14:09:03 GMT
293
+ recorded_with: VCR 2.9.3