Последуйте за этим ответом. { ссылка }
Я хочу передать объектную переменную-шаблон в функцию на стороне сервера в GAS. Я ожидаю увидеть кнопки рендеринга, а затем после заполнения реквизитов платежа и нажатия кнопки оплаты, я ожидаю увидеть, что функция handleTxn()
успешно выполняется с использованием объекта content
в качестве одного из аргументов.
Но вместо этого ничего не происходит, потому что кнопки даже не отображаются. Он молча завершается сбоем.
var content = <?!= content ?>;
google.script.run.handleTxn(data, details, content);
Как мне теперь получить доступ к объекту content
, чтобы передать его функции сервера?
Code.gs
[...]
var template = HtmlService.createTemplateFromFile(HTML_FILENAME);
template.content = values;
var htmlOutput = template.evaluate();
[...]
function handleTxn(data, details, content) {
// do stuff
}
index. html
<!DOCTYPE html>
<!-- source: https://developer.paypal.com/docs/checkout/integrate/ -->
<html>
<body>
<div class="container">
Price: $<?= content.price ?></td>
<div id="paypal-button-container"></div>
</div>
<script
src="https://www.paypal.com/sdk/js?client-id=SB_CLIENT_ID">
</script>
<script>
// This function displays Smart Payment Buttons on your web page.
paypal.Buttons({
createOrder: function(data, actions) {
// This function sets up the details of the transaction, including the amount and line item details.
return actions.order.create({
purchase_units: [{
amount: {
value: <?!= content.price ?>
}
}]
});
},
onApprove: function(data, actions) {
// This function captures the funds from the transaction.
return actions.order.capture().then(function(details) {
var alertText = (
'\nWe charged you: $'
+
<?!= content.price ?>
);
alert( alertText );
var content = <?!= content ?>;
google.script.run.handleTxn(data, details, content);
});
}
}).render('#paypal-button-container');
</script>
</body>
</html>