Classic ASP集成Braintree Drop-in UI:Client Token传递及加载问题
Classic ASP集成Braintree Drop-in UI:Client Token传递问题解决
核心结论
直接传递从Braintree接口返回的完整Base64格式clientToken字符串即可,无需解码,也不需要单独提取authorizationFingerprint。
步骤说明
正确提取Client Token
从你获取的返回数据中,取data.createClientToken.clientToken对应的值,也就是这段Base64字符串:eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpGVXpJMU5pSXNJbXRwWkNJNklqSXdNVGd3TkRJMk1UWXRjMkZ1WkdKdmVDSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllYQnBMbk5oYm1SaWIzZ3VZbkpoYVc1MGNtVmxaMkYwWlhkaGVTNWpiMjBpZlEuZXlKbGVIQWlPakUyT0RBNE1EQXhPRGtzSW1wMGFTSTZJbUl4TlRrM05Ea3pMVEUxT0VU0QifX0=把这个值完整赋值给Drop-in配置的
authorization参数。排查代码问题
- 检查
<%=braintreeClientToken%>输出的内容:确保它是上述完整的Base64字符串,没有被截断、HTML转义或者添加额外字符。 - 查看浏览器控制台错误:打开F12开发者工具,切换到Console标签,查看是否有Braintree相关的报错信息(如授权无效、网络请求失败),这是定位加载失败的关键。
- 检查
修正后的客户端代码示例
<script src="https://js.braintreegateway.com/web/dropin/1.36.0/js/dropin.min.js"></script> <!-- Step one: add an empty container to your page --> <form id="payment-form" action="/route/on/your/server" method="post"> <div id="dropin-container"></div> <button id="submit-button" class="button button--small button--green">Purchase</button> </form> <script type="text/javascript"> $(document).ready(function () { var button = document.querySelector('#submit-button'); braintree.dropin.create({ authorization: '<%=braintreeClientToken%>', // 确保这里输出完整Base64格式的clientToken container: '#dropin-container' }, function (createErr, instance) { // 先检查实例创建错误 if (createErr) { console.error('Drop-in 创建失败:', createErr); return; } button.addEventListener('click', function () { instance.requestPaymentMethod(function (err, payload) { if (err) { console.error('获取支付方式失败:', err); return; } // 将payload.nonce提交到你的服务器 }); }); }); }) </script>
额外排查点
- 确认Drop-in版本兼容性:你使用的1.36.0版本支持v2版本的Client Token,无版本兼容问题。
- 检查域名白名单:在Braintree后台(沙箱/生产环境)确认当前页面域名已添加到允许列表中。
- 环境一致性:确保Client Token是从对应环境获取的(沙箱用sandbox接口,生产用production接口)。
内容的提问来源于stack exchange,提问作者nuclearsiloman
相关产品推荐
相关产品推荐

