我正在使用 Drop-in UI 集成 Braintree。这是在经典 ASP 中完成的,所以我必须手写,而不是使用 SDK。
我已成功收到来自 Braintree 的客户端令牌,但不确定要将什么传递给 Drop-in UI。这是我从 Braintree 得到的信息(“clientToken”为简洁起见缩短):
{"data":{"createClientToken":{"clientToken":"eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpGVXpJMU5pSXNJbXRwWkNJNklqSXdNVGd3TkRJMk1UWXRjMkZ1WkdKdmVDSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllYQnBMbk5oYm1SaWIzZ3VZbkpoYVc1MGNtVmxaMkYwWlhkaGVTNWpiMjBpZlEuZXlKbGVIQWlPakUyT0RBNE1EQXhPRGtzSW1wMGFTSTZJbUl4TlRrM05Ea3pMVEUxT0VU0QifX0="}},"extensions":{"requestId":"169e6a8e-20a1-4105-8740-7d8461d7dd26"}}
然后我base64解码得到:
{ "version":2, "authorizationFingerprint":"eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IjIwMTgwNDI2MTYtc2FuZGJveCIsImlzcyI6Imh0dHBzOi8vYXBpLnNhbmRib3guYnJhaW50cmVlZ2F0ZXdheS5jb20ifQ.eyJleHAiOjE2ODA4MDA5NTksImp0aSI6ImY0MjdkMGQ4LWM5NzUtNDAwNy1hOTk5LWJhZWQ2ZjNlM2QxZiIsInN1YiI6IjJxMjQyZHZyeHBkNnFoZjMiLCJpc3MiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tIiwibWVyY2hhbnQiOnsicHVibGljX2lkIjoiMnEyNDJkdnJ4cGQ2cWhmMyIsInZlcmlmeV9jYXJkX2J5X2RlZmF1bHQiOmZhbHNlfSwicmlnaHRzIjpbIm1hbmFnZV92YXVsdCJdLCJzY29wZSI6WyJCcmFpbnRyZWU6VmF1bHQiXSwib3B0aW9ucyI6eyJtZXJjaGFudF9hY2NvdW50X2lkIjoicHJvZHVjdGNhcnQifX0.STt-mLKt2VD-0LfzQbwxoEoIkUMOG5lyW1zdgU5kJfwaTKHAbPwiTB5p1EGrJQpZoj6hXl1zCSlubaQ2pvFKHQ", "configUrl":"https://api.sandbox.braintreegateway.com:443/merchants/xxxxxxxxx/client_api/v1/configuration", "merchantAccountId":"xxxxxxxx", "graphQL":{ "url":"https://example.com/graphql", "date":"2018-05-08", "features":[ "tokenize_credit_cards" ] } ...
从文档看来,我应该将“authorizationFingerprint”传递给 Drop-in UI,但我不确定。这应该按原样传递、解码等吗?还是别的?
客户代码是:
<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%>',
container: '#dropin-container'
}, function (createErr, instance) {
button.addEventListener('click', function () {
instance.requestPaymentMethod(function (err, payload) {
// Submit payload.nonce to your server
});
});
});
})
</script>
无论传递何种形式/部分的客户端令牌,Drop-in UI 都不会加载/出现。