Javascript 如何基于环境渲染Paypal智能按钮?

Javascript 如何基于环境渲染Paypal智能按钮?,javascript,paypal,paypal-sandbox,Javascript,Paypal,Paypal Sandbox,我可以使用live client id在我的站点中添加paypal按钮,效果很好,但是出于开发目的,我在本地测试时使用我的沙盒客户端id,这意味着总是在src中更改客户端id: <script src="https://www.paypal.com/sdk/js?client-id=AYw0JC4IjiptK8Dyv--SPi98ze5My9hgTOmD_ckO8u197I56tpOtinZAu7p2flNCPGk5ZezoYSNS-U4Z&currency=GBP&dis

我可以使用live client id在我的站点中添加paypal按钮,效果很好,但是出于开发目的,我在本地测试时使用我的沙盒客户端id,这意味着总是在src中更改客户端id:

<script src="https://www.paypal.com/sdk/js?client-id=AYw0JC4IjiptK8Dyv--SPi98ze5My9hgTOmD_ckO8u197I56tpOtinZAu7p2flNCPGk5ZezoYSNS-U4Z&currency=GBP&disable-funding=credit,card">
    </script>

然而,paypal智能按钮在渲染方面非常不一致,因为它能工作7/8次中的1次。是否有一种稳定的方法可以动态加载脚本?

您的代码看起来好像可以工作,我认为您已经为这种基于URL的动态环境加载创建了一种正确的方法,尽管我以前从未见过这样做。通常情况下,人们在环境之间切换的速度要慢得多,每天最多切换几次,因此在页面顶部注释掉和取消注释两行,即:

    <script>for sandbox...(currently uncommented)</script>
<!--
    <script>for live...(currently commented out)</script>
-->
沙盒…(当前未注释) …对于我迄今为止观察到的所有开发用例来说已经足够了



如果没有更多的数据,就无法查看您的问题“7/8次中有1次有效”,例如完整的可运行代码段,我们可以使用

测试并复制它,谢谢,但是如果您需要使用可运行代码段,您可以在单独的js文件
paypal.Buttons().render(“#paypal button container”)中创建并添加它
也将这一行添加到html文件
中,然后将上面的代码段添加到单独的js文件中,然后在html中加载这两个代码段,您可以重现相同的问题。那么,您的paypal.Buttons().render()调用是否没有等待document.head.appendChild()和paypal脚本加载完成?那可能是你的问题。这就是为什么我们需要一个完整的示例来测试的原因。我明白了,但是我希望在document.head.appendChild()之后调用我的paypal.Buttons().render()函数,因为脚本添加在顶部。追加一个新的DOM元素并完全加载paypal JS附带到该标记中的所有元素需要时间。同时,文档的JS仍在执行…将按钮渲染放在类似以下内容中可能会有所帮助:
    <script>for sandbox...(currently uncommented)</script>
<!--
    <script>for live...(currently commented out)</script>
-->