Из вашей ошибки консоли я могу сделать вывод, что эта строка неверна:
var client_token = "<?php echo($gateway->ClientToken()->generate()); ?>";
Вместо того, чтобы использовать блок php внутри вашего javascript, вы должны сделать AJAX-запрос к вашему бэкэнду, который вернет клиентский токен, который вы затем сможете использовать в своей форме.
Рассмотрим этот пример:
// Set up our HTTP request
var xhr = new XMLHttpRequest();
// Setup our listener to process completed requests
xhr.onload = function () {
// Process our return data
if (xhr.status >= 200 && xhr.status < 300) {
var client_token = xhr.response.client_token; // Set your client token and use it later
} else {
// What do when the request fails
console.log('The request failed!');
}
// Code that should run regardless of the request status
console.log('This always runs...');
};
// Create and send a GET request
// The first argument is the post type (GET, POST, PUT, DELETE, etc.)
// The second argument is the endpoint URL
xhr.open('GET', '/route/to/braintree/controller'); // Create a Symfony route which will use `BraintreeService` and return generated client token.
xhr.send();
Это скорее псевдокод, но он должен дать вам общее представление о том, что вы должны делать. Судя по вашему коду, вы должны сначала получить этот client_token, а затем визуализировать форму.
Если это не проблема, продолжайте искать эту консольную ошибку, это определенно причина, по которой вы не можете отобразить форму. Может быть, посетите документы Braintree еще раз, у них есть отличные примеры, не зависящие от структуры и структуры.