//= require “vendor/braintree”
Spree.routes.payment_client_token_api = Spree.pathFor(“api/payment_client_token”)
var braintreeDropinIntegration; var paymentForm = “#new_payment”; var cardSelector = “#new_payment [name=card]”;
var getClientToken = function(onSuccess) {
return Spree.ajax({ url: Spree.routes.payment_client_token_api, type: "POST", data: { payment_method_id: $('form input[type=radio]:checked').val() }, error: function(xhr, status) { show_flash("error", xhr.responseJSON.message); }, success: function(data) { onSuccess(data); } });
};
var attachDropIn = function(data) {
braintree.setup(data.client_token, "dropin", { container: "braintree-dropin", form: "new_payment", onReady: function (integration) { braintreeDropinIntegration = integration; }, onError: function(type, message) { show_flash("error", message); }, onPaymentMethodReceived: function(obj) { $("#payment_method_nonce").val(obj.nonce); $("#new_payment").submit(); return; } });
};
$(document).ready(function() {
if ($(paymentForm).length) { if ($(cardSelector).length) { $(cardSelector).on("change", function() { if ($(cardSelector + ":checked").val() === "new") { getClientToken(attachDropIn); } else { if (braintreeDropinIntegration) { braintreeDropinIntegration.teardown(); } } }); } else { getClientToken(attachDropIn); } }
});