solidus_braintree 1.4.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +12 -0
- data/.gem_release.yml +5 -0
- data/.github_changelog_generator +2 -0
- data/.gitignore +20 -11
- data/.rspec +1 -1
- data/.rubocop.yml +79 -0
- data/CHANGELOG.md +178 -18
- data/Gemfile +31 -23
- data/LICENSE +26 -0
- data/README.md +387 -26
- data/Rakefile +4 -19
- data/app/assets/config/solidus_braintree_manifest.js +1 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_active_blue_button_280x48.svg +19 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_active_blue_button_320x48.svg +19 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_active_blue_button_375x48.svg +19 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_active_white_button_280x48.svg +19 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_active_white_button_320x48.svg +19 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_active_white_button_375x48.svg +19 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_blue_acceptance_mark.svg +15 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_blue_button_280x48.svg +19 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_blue_button_320x48.svg +19 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_blue_button_375x48.svg +19 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_blue_logo.svg +18 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_white_acceptance_mark.svg +20 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_white_button_280x48.svg +19 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_white_button_320x48.svg +19 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_white_button_375x48.svg +19 -0
- data/app/assets/images/solidus_braintree/venmo/venmo_white_logo.svg +18 -0
- data/app/assets/javascripts/solidus_braintree/apple_pay_button.js +179 -0
- data/app/assets/javascripts/solidus_braintree/checkout.js +108 -0
- data/app/assets/javascripts/solidus_braintree/client.js +239 -0
- data/app/assets/javascripts/solidus_braintree/constants.js +89 -0
- data/app/assets/javascripts/solidus_braintree/frontend.js +14 -0
- data/app/assets/javascripts/solidus_braintree/hosted_form.js +46 -0
- data/app/assets/javascripts/solidus_braintree/paypal_button.js +178 -0
- data/app/assets/javascripts/solidus_braintree/paypal_messaging.js +22 -0
- data/app/assets/javascripts/solidus_braintree/promise.js +20 -0
- data/app/assets/javascripts/solidus_braintree/venmo_button.js +86 -0
- data/app/assets/javascripts/spree/backend/solidus_braintree.js +96 -0
- data/app/assets/javascripts/spree/frontend/paypal_button.js +34 -0
- data/app/assets/javascripts/spree/frontend/solidus_braintree.js +1 -0
- data/app/assets/stylesheets/spree/backend/solidus_braintree.scss +28 -0
- data/app/assets/stylesheets/spree/frontend/solidus_braintree.scss +51 -0
- data/app/decorators/controllers/solidus_braintree/admin_payments_controller_decorator.rb +11 -0
- data/app/decorators/controllers/solidus_braintree/checkout_controller_decorator.rb +11 -0
- data/app/decorators/controllers/solidus_braintree/client_tokens_controller.rb +41 -0
- data/app/decorators/controllers/solidus_braintree/orders_controller_decorator.rb +11 -0
- data/app/decorators/models/solidus_braintree/spree/store_decorator.rb +20 -0
- data/app/decorators/models/solidus_braintree/spree/user_decorator.rb +13 -0
- data/app/helpers/solidus_braintree/braintree_admin_helper.rb +23 -0
- data/app/helpers/solidus_braintree/braintree_checkout_helper.rb +60 -0
- data/app/models/application_record.rb +5 -0
- data/app/models/solidus_braintree/address.rb +64 -0
- data/app/models/solidus_braintree/avs_result.rb +69 -0
- data/app/models/solidus_braintree/configuration.rb +39 -0
- data/app/models/solidus_braintree/customer.rb +8 -0
- data/app/models/solidus_braintree/gateway.rb +433 -0
- data/app/models/solidus_braintree/response.rb +80 -0
- data/app/models/solidus_braintree/source.rb +135 -0
- data/app/models/solidus_braintree/transaction.rb +31 -0
- data/app/models/solidus_braintree/transaction_address.rb +88 -0
- data/app/models/solidus_braintree/transaction_import.rb +98 -0
- data/app/overrides/spree/payments/payment/add_paypal_funding_source_to_payment.rb +9 -0
- data/app/views/spree/api/payments/source_views/_braintree.json.jbuilder +1 -1
- data/app/views/spree/checkout/existing_payment/_braintree.html.erb +10 -0
- data/app/views/spree/shared/_apple_pay_button.html.erb +27 -0
- data/app/views/spree/shared/_braintree_errors.html.erb +16 -0
- data/app/views/spree/shared/_braintree_head_scripts.html.erb +26 -0
- data/app/views/spree/shared/_braintree_hosted_fields.html.erb +43 -0
- data/app/views/spree/shared/_paypal_cart_button.html.erb +38 -0
- data/app/views/spree/shared/_paypal_messaging.html.erb +13 -0
- data/app/views/spree/shared/_venmo_button.html.erb +33 -0
- data/bin/console +4 -1
- data/bin/rails +5 -5
- data/bin/rails-engine +13 -0
- data/bin/rails-sandbox +16 -0
- data/bin/rake +7 -0
- data/bin/sandbox +103 -0
- data/bin/setup +5 -4
- data/config/locales/en.yml +94 -2
- data/config/locales/it.yml +56 -0
- data/config/routes.rb +12 -3
- data/db/migrate/20160830061749_create_solidus_paypal_braintree_sources.rb +16 -0
- data/db/migrate/20160906201711_create_solidus_paypal_braintree_customers.rb +13 -0
- data/db/migrate/20161114231422_create_solidus_paypal_braintree_configurations.rb +11 -0
- data/db/migrate/20161125172005_add_braintree_configuration_to_stores.rb +7 -0
- data/db/migrate/20170203191030_add_credit_card_to_braintree_configuration.rb +6 -0
- data/db/migrate/20170505193712_add_null_constraint_to_sources.rb +38 -0
- data/db/migrate/20170508085402_add_not_null_constraint_to_sources_payment_type.rb +14 -0
- data/db/migrate/20190705115327_add_paypal_button_preferences_to_braintree_configurations.rb +5 -0
- data/db/migrate/20190911141712_add_3d_secure_to_braintree_configuration.rb +5 -0
- data/db/migrate/20211222170950_add_paypal_funding_source_to_solidus_paypal_braintree_sources.rb +5 -0
- data/db/migrate/20220104150301_add_venmo_to_braintree_configuration.rb +5 -0
- data/db/migrate/20230109080950_rename_solidus_paypal_braintree_source_type.rb +31 -0
- data/lib/controllers/backend/solidus_braintree/configurations_controller.rb +48 -0
- data/lib/controllers/frontend/solidus_braintree/checkouts_controller.rb +31 -0
- data/lib/controllers/frontend/solidus_braintree/transactions_controller.rb +67 -0
- data/lib/generators/solidus_braintree/install/install_generator.rb +54 -18
- data/lib/generators/solidus_braintree/install/templates/initializer.rb +6 -0
- data/lib/solidus_braintree/country_mapper.rb +37 -0
- data/lib/solidus_braintree/engine.rb +55 -10
- data/lib/solidus_braintree/extension_configuration.rb +23 -0
- data/lib/solidus_braintree/request_protection.rb +21 -0
- data/lib/solidus_braintree/testing_support/factories.rb +53 -0
- data/lib/solidus_braintree/version.rb +3 -1
- data/lib/solidus_braintree.rb +14 -2
- data/lib/solidus_paypal_braintree.rb +6 -0
- data/lib/views/backend/solidus_braintree/configurations/list.html.erb +63 -0
- data/lib/views/backend/spree/admin/payments/source_forms/_braintree.html.erb +16 -0
- data/lib/views/backend/spree/admin/payments/source_views/_braintree.html.erb +39 -0
- data/lib/views/backend/spree/admin/shared/preference_fields/_preference_select.html.erb +13 -0
- data/lib/views/backend_v1.2/spree/admin/payments/source_forms/_braintree.html.erb +16 -0
- data/lib/views/backend_v2.4/spree/admin/shared/preference_fields/_hash.html.erb +12 -0
- data/lib/views/frontend/solidus_braintree/payments/_payment.html.erb +12 -0
- data/lib/views/frontend/spree/checkout/payment/_braintree.html.erb +23 -0
- data/lib/views/frontend/spree/shared/_paypal_checkout_button.html.erb +32 -0
- data/solidus_braintree.gemspec +39 -38
- data/spec/controllers/solidus_braintree/checkouts_controller_spec.rb +99 -0
- data/spec/controllers/solidus_braintree/client_tokens_controller_spec.rb +55 -0
- data/spec/controllers/solidus_braintree/configurations_controller_spec.rb +73 -0
- data/spec/controllers/solidus_braintree/transactions_controller_spec.rb +183 -0
- data/spec/features/backend/configuration_spec.rb +23 -0
- data/spec/features/backend/new_payment_spec.rb +137 -0
- data/spec/features/frontend/braintree_credit_card_checkout_spec.rb +191 -0
- data/spec/features/frontend/paypal_checkout_spec.rb +166 -0
- data/spec/features/frontend/venmo_checkout_spec.rb +194 -0
- data/spec/fixtures/cassettes/admin/invalid_credit_card.yml +63 -0
- data/spec/fixtures/cassettes/admin/resubmit_credit_card.yml +352 -0
- data/spec/fixtures/cassettes/admin/valid_credit_card.yml +412 -0
- data/spec/fixtures/cassettes/braintree/create_profile.yml +71 -0
- data/spec/fixtures/cassettes/braintree/generate_token.yml +63 -0
- data/spec/fixtures/cassettes/braintree/token.yml +63 -0
- data/spec/fixtures/cassettes/checkout/invalid_credit_card.yml +63 -0
- data/spec/fixtures/cassettes/checkout/resubmit_credit_card.yml +216 -0
- data/spec/fixtures/cassettes/checkout/update.yml +71 -0
- data/spec/fixtures/cassettes/checkout/valid_credit_card.yml +171 -0
- data/spec/fixtures/cassettes/checkout/valid_venmo_transaction.yml +599 -0
- data/spec/fixtures/cassettes/gateway/authorize/credit_card/address.yml +86 -0
- data/spec/fixtures/cassettes/gateway/authorize/merchant_account/EUR.yml +154 -0
- data/spec/fixtures/cassettes/gateway/authorize/paypal/EUR.yml +90 -0
- data/spec/fixtures/cassettes/gateway/authorize/paypal/address.yml +90 -0
- data/spec/fixtures/cassettes/gateway/authorize.yml +86 -0
- data/spec/fixtures/cassettes/gateway/authorized_transaction.yml +73 -0
- data/spec/fixtures/cassettes/gateway/cancel/missing.yml +63 -0
- data/spec/fixtures/cassettes/gateway/cancel/refunds.yml +272 -0
- data/spec/fixtures/cassettes/gateway/cancel/void.yml +201 -0
- data/spec/fixtures/cassettes/gateway/capture.yml +141 -0
- data/spec/fixtures/cassettes/gateway/complete.yml +157 -0
- data/spec/fixtures/cassettes/gateway/credit.yml +208 -0
- data/spec/fixtures/cassettes/gateway/customer.yml +79 -0
- data/spec/fixtures/cassettes/gateway/purchase.yml +87 -0
- data/spec/fixtures/cassettes/gateway/settled_transaction.yml +140 -0
- data/spec/fixtures/cassettes/gateway/void.yml +137 -0
- data/spec/fixtures/cassettes/source/bin.yml +295 -0
- data/spec/fixtures/cassettes/source/card_type.yml +267 -0
- data/spec/fixtures/cassettes/source/last4.yml +267 -0
- data/spec/fixtures/cassettes/transaction/import/valid/capture.yml +224 -0
- data/spec/fixtures/cassettes/transaction/import/valid.yml +71 -0
- data/spec/fixtures/views/spree/orders/edit.html.erb +50 -0
- data/spec/helpers/solidus_braintree/braintree_admin_helper_spec.rb +17 -0
- data/spec/helpers/solidus_braintree/braintree_checkout_helper_spec.rb +70 -0
- data/spec/models/solidus_braintree/address_spec.rb +71 -0
- data/spec/models/solidus_braintree/avs_result_spec.rb +317 -0
- data/spec/models/solidus_braintree/gateway_spec.rb +742 -0
- data/spec/models/solidus_braintree/response_spec.rb +280 -0
- data/spec/models/solidus_braintree/source_spec.rb +539 -0
- data/spec/models/solidus_braintree/transaction_address_spec.rb +235 -0
- data/spec/models/solidus_braintree/transaction_import_spec.rb +302 -0
- data/spec/models/solidus_braintree/transaction_spec.rb +86 -0
- data/spec/models/spree/store_spec.rb +14 -0
- data/spec/requests/spree/api/orders_controller_spec.rb +36 -0
- data/spec/spec_helper.rb +32 -0
- data/spec/support/capybara.rb +7 -0
- data/spec/support/gateway_helpers.rb +29 -0
- data/spec/support/order_ready_for_payment.rb +37 -0
- data/spec/support/vcr.rb +42 -0
- data/spec/support/views.rb +1 -0
- metadata +276 -224
- data/LICENSE.txt +0 -21
- data/app/controllers/spree/api/braintree_client_token_controller.rb +0 -13
- data/app/decorators/lib/solidus_braintree/spree/permitted_attributes_decorator.rb +0 -9
- data/app/decorators/models/solidus_braintree/spree/credit_card_decorator.rb +0 -11
- data/app/decorators/models/solidus_braintree/spree/payment_decorator.rb +0 -10
- data/app/helpers/braintree_view_helpers.rb +0 -20
- data/app/models/concerns/solidus_braintree/add_name_validation_concern.rb +0 -8
- data/app/models/concerns/solidus_braintree/inject_device_data_concern.rb +0 -18
- data/app/models/concerns/solidus_braintree/payment_braintree_nonce_concern.rb +0 -8
- data/app/models/concerns/solidus_braintree/permitted_attributes_concern.rb +0 -11
- data/app/models/concerns/solidus_braintree/skip_require_card_numbers_concern.rb +0 -14
- data/app/models/concerns/solidus_braintree/use_data_field_concern.rb +0 -23
- data/app/models/solidus/gateway/braintree_gateway.rb +0 -306
- data/app/overrides/spree/checkout/_confirm/braintree_security.html.erb.deface +0 -9
- data/app/views/spree/admin/payments/source_forms/_braintree.html.erb +0 -38
- data/app/views/spree/admin/payments/source_views/_braintree.html.erb +0 -30
- data/app/views/spree/checkout/payment/_braintree.html.erb +0 -55
- data/app/views/spree/checkout/payment/_braintree_initialization.html.erb +0 -12
- data/config/initializers/braintree.rb +0 -3
- data/db/migrate/20150910170527_add_data_to_credit_card.rb +0 -5
- data/db/migrate/20160426221931_add_braintree_device_data_to_order.rb +0 -5
- data/lib/assets/javascripts/spree/backend/braintree/solidus_braintree.js +0 -59
- data/lib/assets/javascripts/spree/frontend/braintree/solidus_braintree.js +0 -144
- data/lib/assets/javascripts/vendor/braintree.js +0 -8
- data/lib/assets/stylesheets/spree/frontend/solidus_braintree.scss +0 -26
@@ -1,144 +0,0 @@
|
|
1
|
-
//= require "vendor/braintree"
|
2
|
-
|
3
|
-
SolidusBraintree = {
|
4
|
-
getFrontendStyles: function(){
|
5
|
-
/* Emulation of inherited attributes through an iframe */
|
6
|
-
var $source = $('.braintree-hosted-field');
|
7
|
-
return {
|
8
|
-
input: {
|
9
|
-
"font-family": $source.css("font-family"),
|
10
|
-
"font-size": $source.css("font-size"),
|
11
|
-
"color": $source.css("color"),
|
12
|
-
}
|
13
|
-
};
|
14
|
-
}
|
15
|
-
}
|
16
|
-
|
17
|
-
Spree.routes.payment_client_token_api = Spree.pathFor("api/payment_client_token")
|
18
|
-
|
19
|
-
var braintreeDropinIntegration;
|
20
|
-
var cardSelector = "#payment-method-fields";
|
21
|
-
var confirmForm = "#checkout_form_confirm";
|
22
|
-
var paymentId;
|
23
|
-
|
24
|
-
var getClientToken = function(onSuccess) {
|
25
|
-
return Spree.ajax({
|
26
|
-
url: Spree.routes.payment_client_token_api,
|
27
|
-
type: "POST",
|
28
|
-
data: {
|
29
|
-
payment_method_id: paymentId
|
30
|
-
},
|
31
|
-
error: function(xhr, status) {
|
32
|
-
// If it fails it means the payment method was not a Braintree payment method
|
33
|
-
if (braintreeDropinIntegration) {
|
34
|
-
braintreeDropinIntegration.teardown();
|
35
|
-
braintreeDropinIntegration = null;
|
36
|
-
}
|
37
|
-
},
|
38
|
-
success: function(data) {
|
39
|
-
onSuccess(data);
|
40
|
-
}
|
41
|
-
});
|
42
|
-
};
|
43
|
-
|
44
|
-
var initializeBraintree = function(data) {
|
45
|
-
$("#card_expiry").on("keyup", function() {
|
46
|
-
// We need to format the braintree expiration without spaces
|
47
|
-
$("#braintree_expiration_date").val($(this).val().replace(/ /g,''));
|
48
|
-
})
|
49
|
-
braintree.setup(data.client_token, "custom", {
|
50
|
-
id: "checkout_form_payment",
|
51
|
-
hostedFields: {
|
52
|
-
styles: SolidusBraintree.getFrontendStyles(),
|
53
|
-
number: {
|
54
|
-
selector: "#braintree_card_number",
|
55
|
-
placeholder: braintree.placeholders["number"]
|
56
|
-
},
|
57
|
-
cvv: {
|
58
|
-
selector: "#braintree_card_code",
|
59
|
-
placeholder: braintree.placeholders["cvv"]
|
60
|
-
},
|
61
|
-
expirationDate: {
|
62
|
-
selector: "#braintree_card_expiry",
|
63
|
-
placeholder: braintree.placeholders["expirationDate"]
|
64
|
-
}
|
65
|
-
},
|
66
|
-
dataCollector: {
|
67
|
-
kount: {environment: braintree.environment},
|
68
|
-
paypal: true
|
69
|
-
},
|
70
|
-
paypal: {
|
71
|
-
container: "#braintree_paypal_container",
|
72
|
-
onSuccess: function() {
|
73
|
-
$(".braintree-cc-input").hide();
|
74
|
-
},
|
75
|
-
onCancelled: function() {
|
76
|
-
$(".braintree-cc-input").show();
|
77
|
-
}
|
78
|
-
},
|
79
|
-
onReady: function (integration) {
|
80
|
-
braintreeDropinIntegration = integration;
|
81
|
-
$('form').find("input#device_data").val(integration.deviceData);
|
82
|
-
},
|
83
|
-
onError: function(error) {
|
84
|
-
var text;
|
85
|
-
|
86
|
-
if (error.type === "VALIDATION") {
|
87
|
-
text = 'There was a problem with your payment information. Please check your information and try again.';
|
88
|
-
} else {
|
89
|
-
text = error.message;
|
90
|
-
}
|
91
|
-
|
92
|
-
$('#checkout_form_payment').find(':submit, :image').attr('disabled', false).removeClass('disabled');
|
93
|
-
var errorDiv = $("<div/>", {
|
94
|
-
class: 'flash error',
|
95
|
-
text: text
|
96
|
-
});
|
97
|
-
|
98
|
-
if (error.details) {
|
99
|
-
var list = $("<ul/>").appendTo(errorDiv);
|
100
|
-
$.each(error.details.invalidFieldKeys, function (idx) {
|
101
|
-
$('<li/>', {
|
102
|
-
text: error.details.invalidFieldKeys[idx] + " is required."
|
103
|
-
}).appendTo(list);
|
104
|
-
});
|
105
|
-
}
|
106
|
-
|
107
|
-
if ($('.flash.error').length == 0) {
|
108
|
-
errorDiv.prependTo("#content");
|
109
|
-
} else {
|
110
|
-
$('.flash.error').replaceWith(errorDiv);
|
111
|
-
}
|
112
|
-
},
|
113
|
-
onPaymentMethodReceived: function(obj) {
|
114
|
-
$("#payment_method_nonce").val(obj.nonce);
|
115
|
-
$("#checkout_form_payment").submit();
|
116
|
-
return;
|
117
|
-
}
|
118
|
-
});
|
119
|
-
};
|
120
|
-
|
121
|
-
var getDeviceDataConfirm = function(data) {
|
122
|
-
var collector = braintree.data.setup({
|
123
|
-
kount: {environment: braintree.environment}
|
124
|
-
});
|
125
|
-
$('form').find("input#device_data").val(collector.deviceData);
|
126
|
-
collector.teardown();
|
127
|
-
};
|
128
|
-
|
129
|
-
$(document).ready(function() {
|
130
|
-
if ($(cardSelector).find("input[type=radio][name='order[payments_attributes][][payment_method_id]']").length) {
|
131
|
-
$(cardSelector).find("input[type=radio][name='order[payments_attributes][][payment_method_id]']").on("change", function() {
|
132
|
-
paymentId = $(this).val();
|
133
|
-
getClientToken(initializeBraintree);
|
134
|
-
});
|
135
|
-
// Attempt to initialize braintree
|
136
|
-
paymentId = $("form input[type=radio][name='order[payments_attributes][][payment_method_id]']:checked").val();
|
137
|
-
getClientToken(initializeBraintree);
|
138
|
-
}
|
139
|
-
|
140
|
-
// Attempt to inject device_data to confirm form.
|
141
|
-
if ($(confirmForm).length && braintree.environment) {
|
142
|
-
getDeviceDataConfirm();
|
143
|
-
}
|
144
|
-
});
|