Este es el código para renderizar los botones inteligentes de paypal:
<script src="https://www.paypal.com/sdk/js?client-id=test"></script> <script>paypal.Buttons().render('body');</script>Pero quiero representarlos a través del código, así que traté de hacer esto:
document.body.innerHTML='<script src="https://www.paypal.com/sdk/js?client-id=test"></script>'; paypal.Buttons().render('body');Pero no funcionó, ¿cómo logro esto?
Agregar elementos de secuencia de comandos al DOM hará que se carguen de forma asincrónica, no a tiempo para que el código que sigue inmediatamente los utilice. Debe usar una función de devolución de llamada para el evento de onload del script. Aquí hay una función auxiliar de ejemplo que lo hace.
//Helper function function loadAsync(url, callback) { var s = document.createElement('script'); s.setAttribute('src', url); s.onload = callback; document.head.insertBefore(s, document.head.firstElementChild); } // Usage -- callback is inlined here, but could be a named function loadAsync('https://www.paypal.com/sdk/js?client-id=test¤cy=USD', function() { paypal.Buttons({ // Set up the transaction createOrder: function(data, actions) { return actions.order.create({ purchase_units: [{ amount: { value: '0.01' } }] }); }, // Finalize the transaction onApprove: function(data, actions) { return actions.order.capture().then(function(details) { //... }); } }).render('body'); });