workarea-kount 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 +7 -0
- data/.editorconfig +20 -0
- data/.eslintrc +24 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
- data/.github/ISSUE_TEMPLATE/documentation-request.md +17 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/workflows/ci.yml +58 -0
- data/.gitignore +14 -0
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +212 -0
- data/CODE_OF_CONDUCT.md +3 -0
- data/CONTRIBUTING.md +3 -0
- data/Gemfile +17 -0
- data/LICENSE.md +3 -0
- data/README.md +98 -0
- data/Rakefile +53 -0
- data/app/controllers/workarea/admin/orders_controller.decorator +5 -0
- data/app/controllers/workarea/storefront/checkout/place_order_controller.decorator +11 -0
- data/app/controllers/workarea/storefront/kount_controller.rb +19 -0
- data/app/controllers/workarea/storefront/kount_orders_controller.rb +40 -0
- data/app/lib/active_shipping/rate_estimate.decorator +10 -0
- data/app/mailers/workarea/storefront/order_mailer.decorator +14 -0
- data/app/models/workarea/checkout.decorator +37 -0
- data/app/models/workarea/checkout/fraud/kount_analyzer.rb +71 -0
- data/app/models/workarea/kount/ens_event.rb +13 -0
- data/app/models/workarea/kount/order.rb +14 -0
- data/app/models/workarea/order.decorator +62 -0
- data/app/models/workarea/order/fraud_decision.decorator +9 -0
- data/app/models/workarea/order/item.decorator +8 -0
- data/app/models/workarea/order/status/review.rb +13 -0
- data/app/models/workarea/payment/credit_card.decorator +13 -0
- data/app/models/workarea/payment/payment.decorator +11 -0
- data/app/models/workarea/payment/status/kount_declined.rb +13 -0
- data/app/models/workarea/payment/status/kount_review.rb +13 -0
- data/app/models/workarea/payment/tender/credit_card.decorator +10 -0
- data/app/models/workarea/search/admin.decorator +12 -0
- data/app/models/workarea/search/admin/order.decorator +7 -0
- data/app/models/workarea/shipping/rate_lookup.decorator +26 -0
- data/app/models/workarea/shipping/service.decorator +9 -0
- data/app/models/workarea/shipping/service_selection.decorator +7 -0
- data/app/models/workarea/shipping_option.decorator +27 -0
- data/app/services/workarea/kount/cancel_order_under_review.rb +28 -0
- data/app/services/workarea/kount/event.rb +43 -0
- data/app/services/workarea/kount/event/dmc_event.rb +9 -0
- data/app/services/workarea/kount/event/risk_change_event.rb +21 -0
- data/app/services/workarea/kount/event/special_alert_event.rb +21 -0
- data/app/services/workarea/kount/event/workflow_event.rb +25 -0
- data/app/services/workarea/kount/event_batch.rb +37 -0
- data/app/services/workarea/kount/order_fraud_update_service.rb +42 -0
- data/app/services/workarea/kount/ris_inquiry.rb +120 -0
- data/app/services/workarea/kount/ris_inquiry/product.rb +53 -0
- data/app/services/workarea/kount/ris_request.rb +84 -0
- data/app/services/workarea/kount/ris_update.rb +39 -0
- data/app/view_models/workarea/admin/order_view_model.decorator +35 -0
- data/app/view_models/workarea/storefront/order_view_model.decorator +11 -0
- data/app/views/workarea/admin/orders/_kount.html.haml +28 -0
- data/app/views/workarea/admin/orders/kount.html.haml +46 -0
- data/app/views/workarea/storefront/checkouts/_kount_data_collector.html.haml +4 -0
- data/app/views/workarea/storefront/order_mailer/hold_denial.html.haml +14 -0
- data/app/workers/workarea/kount/process_review_order.rb +75 -0
- data/app/workers/workarea/kount/update_ris_inquiry.rb +31 -0
- data/bin/rails +18 -0
- data/config/initializers/appends.rb +11 -0
- data/config/initializers/workarea.rb +26 -0
- data/config/locales/en.yml +26 -0
- data/config/routes.rb +14 -0
- data/doc/Kount Technical Specification Guide 5.5.5.pdf +0 -0
- data/lib/workarea/kount.rb +87 -0
- data/lib/workarea/kount/address.rb +39 -0
- data/lib/workarea/kount/bogus_gateway.rb +415 -0
- data/lib/workarea/kount/engine.rb +8 -0
- data/lib/workarea/kount/errors.rb +2 -0
- data/lib/workarea/kount/gateway.rb +50 -0
- data/lib/workarea/kount/mappings.rb +195 -0
- data/lib/workarea/kount/payment_types.rb +50 -0
- data/lib/workarea/kount/response.rb +141 -0
- data/lib/workarea/kount/security_mash.rb +79 -0
- data/lib/workarea/kount/user_defined_fields.rb +16 -0
- data/lib/workarea/kount/version.rb +5 -0
- data/lib/workarea/mailer_previews/storefront/order_mailer_preview.rb +10 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/config/manifest.js +4 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/jobs/application_job.rb +2 -0
- data/test/dummy/app/mailers/application_mailer.rb +4 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
- data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +34 -0
- data/test/dummy/bin/update +29 -0
- data/test/dummy/config.ru +5 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/cable.yml +9 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +56 -0
- data/test/dummy/config/environments/production.rb +86 -0
- data/test/dummy/config/environments/test.rb +44 -0
- data/test/dummy/config/initializers/application_controller_renderer.rb +6 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/new_framework_defaults.rb +21 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/workarea.rb +5 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/puma.rb +47 -0
- data/test/dummy/config/routes.rb +6 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config/spring.rb +6 -0
- data/test/dummy/db/seeds.rb +2 -0
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/log/.keep +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
- data/test/dummy/public/apple-touch-icon.png +0 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/factories/kount.rb +164 -0
- data/test/integration/workarea/api/admin/payment_transactions_integration_test.decorator +29 -0
- data/test/integration/workarea/kount_moneris_integration_test.rb +37 -0
- data/test/integration/workarea/storefront/kount_integration_test.rb +37 -0
- data/test/integration/workarea/storefront/kount_orders_integration_test.rb +89 -0
- data/test/lib/workarea/kount/response_test.rb +95 -0
- data/test/lib/workarea/kount/security_mash_test.rb +62 -0
- data/test/models/workarea/checkout/fraud/kount_analyzer_test.rb +44 -0
- data/test/models/workarea/checkout_test.decorator +22 -0
- data/test/models/workarea/order/queries_test.decorator +28 -0
- data/test/models/workarea/order_test.decorator +25 -0
- data/test/models/workarea/payment/payment_test.rb +106 -0
- data/test/models/workarea/payment/saved_credit_card_test.rb +24 -0
- data/test/models/workarea/payment_test.decorator +54 -0
- data/test/models/workarea/shipping_option_test.rb +29 -0
- data/test/services/workarea/kount/event_batch_test.rb +95 -0
- data/test/services/workarea/kount/event_test.rb +51 -0
- data/test/services/workarea/kount/order_fraud_update_service_test.rb +48 -0
- data/test/support/workarea/kount_api_config.rb +27 -0
- data/test/system/workarea/kount_system_test.rb +72 -0
- data/test/system/workarea/storefront/kount_guest_checkout_system_test.rb +32 -0
- data/test/system/workarea/storefront/kount_logged_in_checkout_system_test.rb +102 -0
- data/test/test_helper.rb +16 -0
- data/test/vcr_cassettes/kount/basic_fraud_test.yml +43 -0
- data/test/vcr_cassettes/kount/integration/moneris_new_credit_card.yml +84 -0
- data/test/vcr_cassettes/kount/integration/moneris_saved_credit_card.yml +84 -0
- data/test/vcr_cassettes/kount/order_fraud_update.yml +82 -0
- data/test/workers/workarea/kount/clean_orders_test.rb +40 -0
- data/test/workers/workarea/kount/process_review_order_test.rb +100 -0
- data/workarea-kount.gemspec +17 -0
- metadata +238 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
http_interactions:
|
|
3
|
+
- request:
|
|
4
|
+
method: post
|
|
5
|
+
uri: https://esqa.moneris.com/gateway2/servlet/MpgRequest
|
|
6
|
+
body:
|
|
7
|
+
encoding: UTF-8
|
|
8
|
+
string: "<request><store_id>monca02501</store_id><api_token>YSI4CKbdvgSbr6is4JMZ</api_token><res_add_cc><pan>4111111111111111</pan><expdate>2101</expdate><crypt_type>7</crypt_type></res_add_cc></request>"
|
|
9
|
+
headers:
|
|
10
|
+
Content-Type:
|
|
11
|
+
- application/x-www-form-urlencoded
|
|
12
|
+
Connection:
|
|
13
|
+
- close
|
|
14
|
+
Accept-Encoding:
|
|
15
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
16
|
+
Accept:
|
|
17
|
+
- "*/*"
|
|
18
|
+
User-Agent:
|
|
19
|
+
- Ruby
|
|
20
|
+
response:
|
|
21
|
+
status:
|
|
22
|
+
code: 200
|
|
23
|
+
message: OK
|
|
24
|
+
headers:
|
|
25
|
+
Date:
|
|
26
|
+
- Mon, 21 Sep 2020 18:36:55 GMT
|
|
27
|
+
X-Ua-Compatible:
|
|
28
|
+
- IE=Edge
|
|
29
|
+
Connection:
|
|
30
|
+
- close
|
|
31
|
+
Content-Type:
|
|
32
|
+
- text/html
|
|
33
|
+
Set-Cookie:
|
|
34
|
+
- TS019df888=015d06d254a632752c749840557162f63baf7d0861476031f3a8e57658bdc65a7e4ed402703d8960f9e921a20a172ce1b78bc9e8f0;
|
|
35
|
+
Path=/; Domain=.esqa.moneris.com; Secure
|
|
36
|
+
Transfer-Encoding:
|
|
37
|
+
- chunked
|
|
38
|
+
body:
|
|
39
|
+
encoding: UTF-8
|
|
40
|
+
string: <?xml version="1.0"?><response><receipt><DataKey>890xonL55b8sZrm5TqqoT1Tr1</DataKey><ReceiptId>null</ReceiptId><ReferenceNum>null</ReferenceNum><ResponseCode>001</ResponseCode><ISO>null</ISO><AuthCode>null</AuthCode><Message>Successfully
|
|
41
|
+
registered CC details.</Message><TransTime>14:36:55</TransTime><TransDate>2020-09-21</TransDate><TransType>null</TransType><Complete>true</Complete><TransAmount>null</TransAmount><CardType>null</CardType><TransID>null</TransID><TimedOut>false</TimedOut><CorporateCard>null</CorporateCard><RecurSuccess>null</RecurSuccess><AvsResultCode>null</AvsResultCode><CvdResultCode>null</CvdResultCode><ResSuccess>true</ResSuccess><PaymentType>cc</PaymentType><IsVisaDebit>null</IsVisaDebit><ResolveData><cust_id></cust_id><phone></phone><email></email><note></note><avs_street_number></avs_street_number><avs_street_name></avs_street_name><avs_zipcode></avs_zipcode><masked_pan>4111***1111</masked_pan><expdate>2101</expdate><crypt_type>7</crypt_type></ResolveData></receipt></response>
|
|
42
|
+
http_version:
|
|
43
|
+
recorded_at: Mon, 21 Sep 2020 18:36:55 GMT
|
|
44
|
+
- request:
|
|
45
|
+
method: post
|
|
46
|
+
uri: https://esqa.moneris.com/gateway2/servlet/MpgRequest
|
|
47
|
+
body:
|
|
48
|
+
encoding: UTF-8
|
|
49
|
+
string: "<request><store_id>monca02501</store_id><api_token>YSI4CKbdvgSbr6is4JMZ</api_token><res_preauth_cc><data_key>890xonL55b8sZrm5TqqoT1Tr1</data_key><order_id>CF60471F69_2020_09_21_14_36_57</order_id><amount>11.00</amount><crypt_type>7</crypt_type></res_preauth_cc></request>"
|
|
50
|
+
headers:
|
|
51
|
+
Content-Type:
|
|
52
|
+
- application/x-www-form-urlencoded
|
|
53
|
+
Connection:
|
|
54
|
+
- close
|
|
55
|
+
Accept-Encoding:
|
|
56
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
57
|
+
Accept:
|
|
58
|
+
- "*/*"
|
|
59
|
+
User-Agent:
|
|
60
|
+
- Ruby
|
|
61
|
+
response:
|
|
62
|
+
status:
|
|
63
|
+
code: 200
|
|
64
|
+
message: OK
|
|
65
|
+
headers:
|
|
66
|
+
Date:
|
|
67
|
+
- Mon, 21 Sep 2020 18:36:57 GMT
|
|
68
|
+
X-Ua-Compatible:
|
|
69
|
+
- IE=Edge
|
|
70
|
+
Connection:
|
|
71
|
+
- close
|
|
72
|
+
Content-Type:
|
|
73
|
+
- text/html
|
|
74
|
+
Set-Cookie:
|
|
75
|
+
- TS019df888=015d06d254b203887d231a7ac51a1b2445052a677fda5bf375851a2912d0d63f45e46b044740d1e4edd8f7455955dad77b9ee01035;
|
|
76
|
+
Path=/; Domain=.esqa.moneris.com; Secure
|
|
77
|
+
Transfer-Encoding:
|
|
78
|
+
- chunked
|
|
79
|
+
body:
|
|
80
|
+
encoding: UTF-8
|
|
81
|
+
string: <?xml version="1.0"?><response><receipt><DataKey>890xonL55b8sZrm5TqqoT1Tr1</DataKey><ReceiptId>CF60471F69_2020_09_21_14_36_57</ReceiptId><ReferenceNum>660189810010090020</ReferenceNum><ResponseCode>027</ResponseCode><ISO>01</ISO><AuthCode>628516</AuthCode><Message>APPROVED * =</Message><TransTime>14:36:57</TransTime><TransDate>2020-09-21</TransDate><TransType>01</TransType><Complete>true</Complete><TransAmount>11.00</TransAmount><CardType>V</CardType><TransID>160-0_15</TransID><TimedOut>false</TimedOut><CorporateCard>false</CorporateCard><RecurSuccess>null</RecurSuccess><AvsResultCode>null</AvsResultCode><CvdResultCode>null</CvdResultCode><ResSuccess>true</ResSuccess><PaymentType>cc</PaymentType><IsVisaDebit>false</IsVisaDebit><ResolveData><cust_id></cust_id><phone></phone><email></email><note></note><expdate>2101</expdate><masked_pan>4111***1111</masked_pan><crypt_type>7</crypt_type><avs_street_number></avs_street_number><avs_street_name></avs_street_name><avs_zipcode></avs_zipcode></ResolveData></receipt></response>
|
|
82
|
+
http_version:
|
|
83
|
+
recorded_at: Mon, 21 Sep 2020 18:36:58 GMT
|
|
84
|
+
recorded_with: VCR 2.9.3
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
http_interactions:
|
|
3
|
+
- request:
|
|
4
|
+
method: post
|
|
5
|
+
uri: https://risk.test.kount.net/
|
|
6
|
+
body:
|
|
7
|
+
encoding: UTF-8
|
|
8
|
+
string: MACK=Y&AUTH=A&SESS=12345666&MODE=Q&SITE=DEFAULT&S2A1=22+S.+3rd+St.&S2A2=Second+Floor&S2CI=Philadelphia&S2ST=PA&S2PC=19106&S2CC=US&S2PN&B2A1=22+S.+3rd+St.&B2A2=Second+Floor&B2CI=Philadelphia&B2ST=PA&B2PC=19106&B2CC=US&B2PN&PTYP=CARD&PTOK=411111WMS5YA6FUZA1KC&PENC=KHASH&SHTP=ST&TOTL=1100&CURR=USD&EMAL=bcrouse-new%40workarea.com&NAME=Ben+Crouse&IPAD=170.115.187.68&ORDR=3E50D97E53&PROD_TYPE[]=Test+Product&PROD_DESC[]=Test+Product+-+&PROD_ITEM[]=SKU&PROD_PRICE[]=500&PROD_QUANT[]=2&VERS=0630&MERC=200755&FRMT=JSON
|
|
9
|
+
headers:
|
|
10
|
+
Accept:
|
|
11
|
+
- "*/*"
|
|
12
|
+
Accept-Encoding:
|
|
13
|
+
- gzip, deflate
|
|
14
|
+
User-Agent:
|
|
15
|
+
- rest-client/2.0.2 (darwin17.4.0 x86_64) ruby/2.4.4p296
|
|
16
|
+
X-Kount-Api-Key:
|
|
17
|
+
- eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIyMDA3NTUiLCJhdWQiOiJLb3VudC4xIiwiaWF0IjoxNTAwNDA3NTE1LCJzY3AiOnsia2EiOm51bGwsImtjIjpudWxsLCJhcGkiOnRydWUsInJpcyI6dHJ1ZX19.1YwTR1G8qBQ_TDK8MBYxDB2EhpUD0IlwWdvqHVOnm0o
|
|
18
|
+
Content-Length:
|
|
19
|
+
- '512'
|
|
20
|
+
Content-Type:
|
|
21
|
+
- application/x-www-form-urlencoded
|
|
22
|
+
Host:
|
|
23
|
+
- risk.test.kount.net
|
|
24
|
+
response:
|
|
25
|
+
status:
|
|
26
|
+
code: 200
|
|
27
|
+
message: OK
|
|
28
|
+
headers:
|
|
29
|
+
Date:
|
|
30
|
+
- Fri, 01 Jun 2018 12:44:26 GMT
|
|
31
|
+
Server:
|
|
32
|
+
- Apache
|
|
33
|
+
Content-Length:
|
|
34
|
+
- '941'
|
|
35
|
+
Content-Type:
|
|
36
|
+
- text/plain;charset=UTF-8
|
|
37
|
+
body:
|
|
38
|
+
encoding: UTF-8
|
|
39
|
+
string: '{"VERS":"0630","MODE":"Q","TRAN":"7J1X0SCK4V8D","MERC":"200755","SESS":"12345666","ORDR":"3E50D97E53","AUTO":"A","SCOR":"34","GEOX":"US","BRND":"VISA","REGN":"US_PA","NETW":"N","KAPT":"N","CARDS":"1","DEVICES":"1","EMAILS":"1","VELO":"0","VMAX":"0","SITE":"DEFAULT","DEVICE_LAYERS":"....","FINGERPRINT":null,"TIMEZONE":null,"LOCALTIME":"
|
|
40
|
+
","REGION":null,"COUNTRY":null,"PROXY":null,"JAVASCRIPT":null,"FLASH":null,"COOKIES":null,"HTTP_COUNTRY":null,"LANGUAGE":null,"MOBILE_DEVICE":null,"MOBILE_TYPE":null,"MOBILE_FORWARDER":null,"VOICE_DEVICE":null,"PC_REMOTE":null,"RULES_TRIGGERED":0,"COUNTERS_TRIGGERED":0,"REASON_CODE":null,"MASTERCARD":"","DDFS":null,"DSR":null,"UAS":null,"BROWSER":null,"OS":null,"PIP_IPAD":null,"PIP_LAT":null,"PIP_LON":null,"PIP_COUNTRY":null,"PIP_REGION":null,"PIP_CITY":null,"PIP_ORG":null,"IP_IPAD":null,"IP_LAT":null,"IP_LON":null,"IP_COUNTRY":null,"IP_REGION":null,"IP_CITY":null,"IP_ORG":null,"WARNING_COUNT":0}'
|
|
41
|
+
http_version:
|
|
42
|
+
recorded_at: Fri, 01 Jun 2018 12:44:26 GMT
|
|
43
|
+
- request:
|
|
44
|
+
method: post
|
|
45
|
+
uri: https://risk.test.kount.net/
|
|
46
|
+
body:
|
|
47
|
+
encoding: UTF-8
|
|
48
|
+
string: MACK=Y&AUTH=A&SESS=12345666&MODE=U&TRAN=7J1X0SCK4V8D&VERS=0630&MERC=200755&FRMT=JSON
|
|
49
|
+
headers:
|
|
50
|
+
Accept:
|
|
51
|
+
- "*/*"
|
|
52
|
+
Accept-Encoding:
|
|
53
|
+
- gzip, deflate
|
|
54
|
+
User-Agent:
|
|
55
|
+
- rest-client/2.0.2 (darwin17.4.0 x86_64) ruby/2.4.4p296
|
|
56
|
+
X-Kount-Api-Key:
|
|
57
|
+
- eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIyMDA3NTUiLCJhdWQiOiJLb3VudC4xIiwiaWF0IjoxNTAwNDA3NTE1LCJzY3AiOnsia2EiOm51bGwsImtjIjpudWxsLCJhcGkiOnRydWUsInJpcyI6dHJ1ZX19.1YwTR1G8qBQ_TDK8MBYxDB2EhpUD0IlwWdvqHVOnm0o
|
|
58
|
+
Content-Length:
|
|
59
|
+
- '84'
|
|
60
|
+
Content-Type:
|
|
61
|
+
- application/x-www-form-urlencoded
|
|
62
|
+
Host:
|
|
63
|
+
- risk.test.kount.net
|
|
64
|
+
response:
|
|
65
|
+
status:
|
|
66
|
+
code: 200
|
|
67
|
+
message: OK
|
|
68
|
+
headers:
|
|
69
|
+
Date:
|
|
70
|
+
- Fri, 01 Jun 2018 12:44:26 GMT
|
|
71
|
+
Server:
|
|
72
|
+
- Apache
|
|
73
|
+
Content-Length:
|
|
74
|
+
- '178'
|
|
75
|
+
Content-Type:
|
|
76
|
+
- text/plain;charset=UTF-8
|
|
77
|
+
body:
|
|
78
|
+
encoding: UTF-8
|
|
79
|
+
string: '{"VERS":"0630","MODE":"U","TRAN":"7J1X0SCK4V8D","MERC":"200755","SESS":"12345666","RULES_TRIGGERED":0,"COUNTERS_TRIGGERED":0,"REASON_CODE":null,"MASTERCARD":"","WARNING_COUNT":0}'
|
|
80
|
+
http_version:
|
|
81
|
+
recorded_at: Fri, 01 Jun 2018 12:44:27 GMT
|
|
82
|
+
recorded_with: VCR 2.9.3
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Workarea
|
|
4
|
+
module Kount
|
|
5
|
+
class CleanOrdersTest < TestCase
|
|
6
|
+
include SearchIndexing
|
|
7
|
+
|
|
8
|
+
def test_perform_with_review_orders
|
|
9
|
+
checkout = create_purchasable_checkout(order: { kount_decision: :review, checkout_started_at: 1.year.ago })
|
|
10
|
+
order = checkout.order
|
|
11
|
+
order.update_attributes(updated_at: 1.year.ago)
|
|
12
|
+
|
|
13
|
+
_kount_order = Kount::Order.create(id: order.id)
|
|
14
|
+
checkout.handle_kount_review
|
|
15
|
+
|
|
16
|
+
CleanOrders.new.perform
|
|
17
|
+
|
|
18
|
+
orders = Workarea::Order.unscoped.all.to_a
|
|
19
|
+
assert_includes orders, order
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_perform_with_kount_declined_orders
|
|
23
|
+
checkout = create_purchasable_checkout(order: { kount_decision: :review, checkout_started_at: 1.year.ago })
|
|
24
|
+
order = checkout.order
|
|
25
|
+
|
|
26
|
+
_kount_order = Kount::Order.create(id: order.id)
|
|
27
|
+
checkout.handle_kount_review
|
|
28
|
+
|
|
29
|
+
event_string = "<event><name>WORKFLOW_STATUS_EDIT</name><key order_number=\"D58470FCF0\" site=\"DEFAULT\">7JG1075ML345</key><old_value>R</old_value><new_value>A</new_value><agent>SYSTEM@KOUNT.NET</agent><occurred>2018-05-18 06:47:47.413756</occurred></event>"
|
|
30
|
+
ProcessReviewOrder.new.perform(order.id, false, event_string)
|
|
31
|
+
order.reload.update_attributes(updated_at: 1.year.ago)
|
|
32
|
+
|
|
33
|
+
CleanOrders.new.perform
|
|
34
|
+
|
|
35
|
+
orders = Workarea::Order.unscoped.all.to_a
|
|
36
|
+
assert_includes orders, order
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Workarea
|
|
4
|
+
module Kount
|
|
5
|
+
class ProcessReviewOrderTest < Workarea::TestCase
|
|
6
|
+
include TestCase::SearchIndexing
|
|
7
|
+
include TestCase::Mail
|
|
8
|
+
|
|
9
|
+
def test_perform_when_the_order_is_declined
|
|
10
|
+
checkout = create_purchasable_checkout(order: { kount_decision: :review })
|
|
11
|
+
order = checkout.order
|
|
12
|
+
_kount_order = Kount::Order.create(id: order.id)
|
|
13
|
+
checkout.handle_kount_review
|
|
14
|
+
|
|
15
|
+
ProcessReviewOrder.new.perform(order.id, false, event_string)
|
|
16
|
+
|
|
17
|
+
order.reload
|
|
18
|
+
refute(order.placed_at.present?)
|
|
19
|
+
assert(order.canceled_at.present?)
|
|
20
|
+
|
|
21
|
+
cancelation_email = ActionMailer::Base.deliveries.last
|
|
22
|
+
assert_equal(
|
|
23
|
+
t('workarea.storefront.email.hold_denial.subject', order_id: order.id),
|
|
24
|
+
cancelation_email.subject
|
|
25
|
+
)
|
|
26
|
+
assert_match(
|
|
27
|
+
t('workarea.storefront.email.hold_denial.info_html'),
|
|
28
|
+
cancelation_email.html_part.to_s
|
|
29
|
+
)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_perform_when_the_order_is_approved_but_payment_is_declined
|
|
33
|
+
checkout = create_purchasable_checkout(order: { kount_decision: :review })
|
|
34
|
+
order = checkout.order
|
|
35
|
+
|
|
36
|
+
_kount_order = Kount::Order.create(id: order.id)
|
|
37
|
+
checkout.handle_kount_review
|
|
38
|
+
|
|
39
|
+
Workarea.config.gateways.credit_card.expects(:authorize).returns(
|
|
40
|
+
ActiveMerchant::Billing::Response.new(
|
|
41
|
+
false,
|
|
42
|
+
ActiveMerchant::Billing::BogusGateway::FAILURE_MESSAGE,
|
|
43
|
+
{
|
|
44
|
+
paid_amount: 1.to_m.cents,
|
|
45
|
+
error: ActiveMerchant::Billing::BogusGateway::FAILURE_MESSAGE
|
|
46
|
+
},
|
|
47
|
+
{ test: true,
|
|
48
|
+
error_code: ActiveMerchant::Billing::BogusGateway::STANDARD_ERROR_CODE[:processing_error] }
|
|
49
|
+
)
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
ProcessReviewOrder.new.perform(order.id, true, event_string)
|
|
53
|
+
|
|
54
|
+
order.reload
|
|
55
|
+
refute(order.placed_at.present?)
|
|
56
|
+
assert(order.canceled_at.present?)
|
|
57
|
+
assert_equal(1, order.comments.length)
|
|
58
|
+
|
|
59
|
+
cancelation_email = ActionMailer::Base.deliveries.last
|
|
60
|
+
assert_equal(
|
|
61
|
+
t('workarea.storefront.email.hold_denial.subject', order_id: order.id),
|
|
62
|
+
cancelation_email.subject
|
|
63
|
+
)
|
|
64
|
+
assert_match(
|
|
65
|
+
t('workarea.storefront.email.hold_denial.info_html'),
|
|
66
|
+
cancelation_email.html_part.to_s
|
|
67
|
+
)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def test_perform_when_the_order_is_approved_and_payment_is_successful
|
|
71
|
+
checkout = create_purchasable_checkout(order: { kount_decision: :review })
|
|
72
|
+
order = checkout.order
|
|
73
|
+
_kount_order = Kount::Order.create(id: order.id)
|
|
74
|
+
checkout.handle_kount_review
|
|
75
|
+
|
|
76
|
+
ProcessReviewOrder.new.perform(order.id, true, event_string)
|
|
77
|
+
|
|
78
|
+
order.reload
|
|
79
|
+
refute(order.canceled_at.present?)
|
|
80
|
+
assert(order.placed_at.present?)
|
|
81
|
+
|
|
82
|
+
confirmation_email = ActionMailer::Base.deliveries.last
|
|
83
|
+
assert_equal(
|
|
84
|
+
t('workarea.storefront.email.order_confirmation.subject', order_id: order.id),
|
|
85
|
+
confirmation_email.subject
|
|
86
|
+
)
|
|
87
|
+
assert_match(
|
|
88
|
+
t('workarea.storefront.email.order_confirmation.heading', order_id: order.id),
|
|
89
|
+
confirmation_email.html_part.to_s
|
|
90
|
+
)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
private
|
|
94
|
+
|
|
95
|
+
def event_string
|
|
96
|
+
"<event><name>WORKFLOW_STATUS_EDIT</name><key order_number=\"D58470FCF0\" site=\"DEFAULT\">7JG1075ML345</key><old_value>R</old_value><new_value>A</new_value><agent>SYSTEM@KOUNT.NET</agent><occurred>2018-05-18 06:47:47.413756</occurred></event>"
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
$:.push File.expand_path('../lib', __FILE__)
|
|
2
|
+
|
|
3
|
+
require 'workarea/kount/version'
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |s|
|
|
6
|
+
s.name = 'workarea-kount'
|
|
7
|
+
s.version = Workarea::Kount::VERSION
|
|
8
|
+
s.authors = ['Jake Beresford']
|
|
9
|
+
s.email = ['jberesford@workarea.com']
|
|
10
|
+
s.homepage = 'https://github.com/workarea-commerce/workarea-kount'
|
|
11
|
+
s.summary = 'Kount for the Workarea ecommerce platform.'
|
|
12
|
+
s.description = 'Kount’s award-winning anti-fraud technology. Boost Sales, Beat Fraud with Kount.'
|
|
13
|
+
s.files = `git ls-files`.split("\n")
|
|
14
|
+
|
|
15
|
+
s.add_dependency 'workarea', '~> 3.x', ">= 3.5"
|
|
16
|
+
s.add_dependency 'rest-client', '~> 2.0'
|
|
17
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: workarea-kount
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 3.3.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Jake Beresford
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2020-09-25 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: workarea
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 3.x
|
|
20
|
+
- - ">="
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: '3.5'
|
|
23
|
+
type: :runtime
|
|
24
|
+
prerelease: false
|
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
+
requirements:
|
|
27
|
+
- - "~>"
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: 3.x
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '3.5'
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: rest-client
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '2.0'
|
|
40
|
+
type: :runtime
|
|
41
|
+
prerelease: false
|
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '2.0'
|
|
47
|
+
description: Kount’s award-winning anti-fraud technology. Boost Sales, Beat Fraud
|
|
48
|
+
with Kount.
|
|
49
|
+
email:
|
|
50
|
+
- jberesford@workarea.com
|
|
51
|
+
executables: []
|
|
52
|
+
extensions: []
|
|
53
|
+
extra_rdoc_files: []
|
|
54
|
+
files:
|
|
55
|
+
- ".editorconfig"
|
|
56
|
+
- ".eslintrc"
|
|
57
|
+
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
|
58
|
+
- ".github/ISSUE_TEMPLATE/documentation-request.md"
|
|
59
|
+
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
|
60
|
+
- ".github/workflows/ci.yml"
|
|
61
|
+
- ".gitignore"
|
|
62
|
+
- ".rubocop.yml"
|
|
63
|
+
- CHANGELOG.md
|
|
64
|
+
- CODE_OF_CONDUCT.md
|
|
65
|
+
- CONTRIBUTING.md
|
|
66
|
+
- Gemfile
|
|
67
|
+
- LICENSE.md
|
|
68
|
+
- README.md
|
|
69
|
+
- Rakefile
|
|
70
|
+
- app/controllers/workarea/admin/orders_controller.decorator
|
|
71
|
+
- app/controllers/workarea/storefront/checkout/place_order_controller.decorator
|
|
72
|
+
- app/controllers/workarea/storefront/kount_controller.rb
|
|
73
|
+
- app/controllers/workarea/storefront/kount_orders_controller.rb
|
|
74
|
+
- app/lib/active_shipping/rate_estimate.decorator
|
|
75
|
+
- app/mailers/workarea/storefront/order_mailer.decorator
|
|
76
|
+
- app/models/workarea/checkout.decorator
|
|
77
|
+
- app/models/workarea/checkout/fraud/kount_analyzer.rb
|
|
78
|
+
- app/models/workarea/kount/ens_event.rb
|
|
79
|
+
- app/models/workarea/kount/order.rb
|
|
80
|
+
- app/models/workarea/order.decorator
|
|
81
|
+
- app/models/workarea/order/fraud_decision.decorator
|
|
82
|
+
- app/models/workarea/order/item.decorator
|
|
83
|
+
- app/models/workarea/order/status/review.rb
|
|
84
|
+
- app/models/workarea/payment/credit_card.decorator
|
|
85
|
+
- app/models/workarea/payment/payment.decorator
|
|
86
|
+
- app/models/workarea/payment/status/kount_declined.rb
|
|
87
|
+
- app/models/workarea/payment/status/kount_review.rb
|
|
88
|
+
- app/models/workarea/payment/tender/credit_card.decorator
|
|
89
|
+
- app/models/workarea/search/admin.decorator
|
|
90
|
+
- app/models/workarea/search/admin/order.decorator
|
|
91
|
+
- app/models/workarea/shipping/rate_lookup.decorator
|
|
92
|
+
- app/models/workarea/shipping/service.decorator
|
|
93
|
+
- app/models/workarea/shipping/service_selection.decorator
|
|
94
|
+
- app/models/workarea/shipping_option.decorator
|
|
95
|
+
- app/services/workarea/kount/cancel_order_under_review.rb
|
|
96
|
+
- app/services/workarea/kount/event.rb
|
|
97
|
+
- app/services/workarea/kount/event/dmc_event.rb
|
|
98
|
+
- app/services/workarea/kount/event/risk_change_event.rb
|
|
99
|
+
- app/services/workarea/kount/event/special_alert_event.rb
|
|
100
|
+
- app/services/workarea/kount/event/workflow_event.rb
|
|
101
|
+
- app/services/workarea/kount/event_batch.rb
|
|
102
|
+
- app/services/workarea/kount/order_fraud_update_service.rb
|
|
103
|
+
- app/services/workarea/kount/ris_inquiry.rb
|
|
104
|
+
- app/services/workarea/kount/ris_inquiry/product.rb
|
|
105
|
+
- app/services/workarea/kount/ris_request.rb
|
|
106
|
+
- app/services/workarea/kount/ris_update.rb
|
|
107
|
+
- app/view_models/workarea/admin/order_view_model.decorator
|
|
108
|
+
- app/view_models/workarea/storefront/order_view_model.decorator
|
|
109
|
+
- app/views/workarea/admin/orders/_kount.html.haml
|
|
110
|
+
- app/views/workarea/admin/orders/kount.html.haml
|
|
111
|
+
- app/views/workarea/storefront/checkouts/_kount_data_collector.html.haml
|
|
112
|
+
- app/views/workarea/storefront/order_mailer/hold_denial.html.haml
|
|
113
|
+
- app/workers/workarea/kount/process_review_order.rb
|
|
114
|
+
- app/workers/workarea/kount/update_ris_inquiry.rb
|
|
115
|
+
- bin/rails
|
|
116
|
+
- config/initializers/appends.rb
|
|
117
|
+
- config/initializers/workarea.rb
|
|
118
|
+
- config/locales/en.yml
|
|
119
|
+
- config/routes.rb
|
|
120
|
+
- doc/Kount Technical Specification Guide 5.5.5.pdf
|
|
121
|
+
- lib/workarea/kount.rb
|
|
122
|
+
- lib/workarea/kount/address.rb
|
|
123
|
+
- lib/workarea/kount/bogus_gateway.rb
|
|
124
|
+
- lib/workarea/kount/engine.rb
|
|
125
|
+
- lib/workarea/kount/errors.rb
|
|
126
|
+
- lib/workarea/kount/gateway.rb
|
|
127
|
+
- lib/workarea/kount/mappings.rb
|
|
128
|
+
- lib/workarea/kount/payment_types.rb
|
|
129
|
+
- lib/workarea/kount/response.rb
|
|
130
|
+
- lib/workarea/kount/security_mash.rb
|
|
131
|
+
- lib/workarea/kount/user_defined_fields.rb
|
|
132
|
+
- lib/workarea/kount/version.rb
|
|
133
|
+
- lib/workarea/mailer_previews/storefront/order_mailer_preview.rb
|
|
134
|
+
- test/dummy/Rakefile
|
|
135
|
+
- test/dummy/app/assets/config/manifest.js
|
|
136
|
+
- test/dummy/app/assets/images/.keep
|
|
137
|
+
- test/dummy/app/assets/javascripts/application.js
|
|
138
|
+
- test/dummy/app/assets/stylesheets/application.css
|
|
139
|
+
- test/dummy/app/controllers/application_controller.rb
|
|
140
|
+
- test/dummy/app/controllers/concerns/.keep
|
|
141
|
+
- test/dummy/app/helpers/application_helper.rb
|
|
142
|
+
- test/dummy/app/jobs/application_job.rb
|
|
143
|
+
- test/dummy/app/mailers/application_mailer.rb
|
|
144
|
+
- test/dummy/app/models/concerns/.keep
|
|
145
|
+
- test/dummy/app/views/layouts/application.html.erb
|
|
146
|
+
- test/dummy/app/views/layouts/mailer.html.erb
|
|
147
|
+
- test/dummy/app/views/layouts/mailer.text.erb
|
|
148
|
+
- test/dummy/bin/bundle
|
|
149
|
+
- test/dummy/bin/rails
|
|
150
|
+
- test/dummy/bin/rake
|
|
151
|
+
- test/dummy/bin/setup
|
|
152
|
+
- test/dummy/bin/update
|
|
153
|
+
- test/dummy/config.ru
|
|
154
|
+
- test/dummy/config/application.rb
|
|
155
|
+
- test/dummy/config/boot.rb
|
|
156
|
+
- test/dummy/config/cable.yml
|
|
157
|
+
- test/dummy/config/environment.rb
|
|
158
|
+
- test/dummy/config/environments/development.rb
|
|
159
|
+
- test/dummy/config/environments/production.rb
|
|
160
|
+
- test/dummy/config/environments/test.rb
|
|
161
|
+
- test/dummy/config/initializers/application_controller_renderer.rb
|
|
162
|
+
- test/dummy/config/initializers/assets.rb
|
|
163
|
+
- test/dummy/config/initializers/backtrace_silencers.rb
|
|
164
|
+
- test/dummy/config/initializers/cookies_serializer.rb
|
|
165
|
+
- test/dummy/config/initializers/filter_parameter_logging.rb
|
|
166
|
+
- test/dummy/config/initializers/inflections.rb
|
|
167
|
+
- test/dummy/config/initializers/mime_types.rb
|
|
168
|
+
- test/dummy/config/initializers/new_framework_defaults.rb
|
|
169
|
+
- test/dummy/config/initializers/session_store.rb
|
|
170
|
+
- test/dummy/config/initializers/workarea.rb
|
|
171
|
+
- test/dummy/config/initializers/wrap_parameters.rb
|
|
172
|
+
- test/dummy/config/locales/en.yml
|
|
173
|
+
- test/dummy/config/puma.rb
|
|
174
|
+
- test/dummy/config/routes.rb
|
|
175
|
+
- test/dummy/config/secrets.yml
|
|
176
|
+
- test/dummy/config/spring.rb
|
|
177
|
+
- test/dummy/db/seeds.rb
|
|
178
|
+
- test/dummy/lib/assets/.keep
|
|
179
|
+
- test/dummy/log/.keep
|
|
180
|
+
- test/dummy/public/404.html
|
|
181
|
+
- test/dummy/public/422.html
|
|
182
|
+
- test/dummy/public/500.html
|
|
183
|
+
- test/dummy/public/apple-touch-icon-precomposed.png
|
|
184
|
+
- test/dummy/public/apple-touch-icon.png
|
|
185
|
+
- test/dummy/public/favicon.ico
|
|
186
|
+
- test/factories/kount.rb
|
|
187
|
+
- test/integration/workarea/api/admin/payment_transactions_integration_test.decorator
|
|
188
|
+
- test/integration/workarea/kount_moneris_integration_test.rb
|
|
189
|
+
- test/integration/workarea/storefront/kount_integration_test.rb
|
|
190
|
+
- test/integration/workarea/storefront/kount_orders_integration_test.rb
|
|
191
|
+
- test/lib/workarea/kount/response_test.rb
|
|
192
|
+
- test/lib/workarea/kount/security_mash_test.rb
|
|
193
|
+
- test/models/workarea/checkout/fraud/kount_analyzer_test.rb
|
|
194
|
+
- test/models/workarea/checkout_test.decorator
|
|
195
|
+
- test/models/workarea/order/queries_test.decorator
|
|
196
|
+
- test/models/workarea/order_test.decorator
|
|
197
|
+
- test/models/workarea/payment/payment_test.rb
|
|
198
|
+
- test/models/workarea/payment/saved_credit_card_test.rb
|
|
199
|
+
- test/models/workarea/payment_test.decorator
|
|
200
|
+
- test/models/workarea/shipping_option_test.rb
|
|
201
|
+
- test/services/workarea/kount/event_batch_test.rb
|
|
202
|
+
- test/services/workarea/kount/event_test.rb
|
|
203
|
+
- test/services/workarea/kount/order_fraud_update_service_test.rb
|
|
204
|
+
- test/support/workarea/kount_api_config.rb
|
|
205
|
+
- test/system/workarea/kount_system_test.rb
|
|
206
|
+
- test/system/workarea/storefront/kount_guest_checkout_system_test.rb
|
|
207
|
+
- test/system/workarea/storefront/kount_logged_in_checkout_system_test.rb
|
|
208
|
+
- test/test_helper.rb
|
|
209
|
+
- test/vcr_cassettes/kount/basic_fraud_test.yml
|
|
210
|
+
- test/vcr_cassettes/kount/integration/moneris_new_credit_card.yml
|
|
211
|
+
- test/vcr_cassettes/kount/integration/moneris_saved_credit_card.yml
|
|
212
|
+
- test/vcr_cassettes/kount/order_fraud_update.yml
|
|
213
|
+
- test/workers/workarea/kount/clean_orders_test.rb
|
|
214
|
+
- test/workers/workarea/kount/process_review_order_test.rb
|
|
215
|
+
- workarea-kount.gemspec
|
|
216
|
+
homepage: https://github.com/workarea-commerce/workarea-kount
|
|
217
|
+
licenses: []
|
|
218
|
+
metadata: {}
|
|
219
|
+
post_install_message:
|
|
220
|
+
rdoc_options: []
|
|
221
|
+
require_paths:
|
|
222
|
+
- lib
|
|
223
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
224
|
+
requirements:
|
|
225
|
+
- - ">="
|
|
226
|
+
- !ruby/object:Gem::Version
|
|
227
|
+
version: '0'
|
|
228
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
229
|
+
requirements:
|
|
230
|
+
- - ">="
|
|
231
|
+
- !ruby/object:Gem::Version
|
|
232
|
+
version: '0'
|
|
233
|
+
requirements: []
|
|
234
|
+
rubygems_version: 3.0.3
|
|
235
|
+
signing_key:
|
|
236
|
+
specification_version: 4
|
|
237
|
+
summary: Kount for the Workarea ecommerce platform.
|
|
238
|
+
test_files: []
|