无法在 Braintree 结帐按钮中获得响应
Posted
技术标签:
【中文标题】无法在 Braintree 结帐按钮中获得响应【英文标题】:Not able to get response in braintree checkout button 【发布时间】:2018-03-01 01:14:24 【问题描述】:我正在使用braintree paypal 结帐付款,付款工作正常,但无法得到响应,这是我的代码
<script type="text/javascript">
var form = document.querySelector('#payment-form');
var client_token = "<?php echo \Braintree\ClientToken::generate(); ?>";
braintree.dropin.create(
authorization: client_token,
selector: '#bt-dropin',
paypal:
flow: 'vault',
onSuccess: function (nonce, email)
alert('sdsdsd123');
console.log(JSON.stringify(nonce));
,
,
, function (createErr, instance)
if (createErr)
console.log('Error', createErr);
return;
form.addEventListener('submit', function (event)
event.preventDefault();
instance.requestPaymentMethod(function (err, payload)
if (err)
console.log('Error', err);
return;
else
console.log("Payment confirmation");
console.log(payload);
// Add the nonce to the form and submit
document.querySelector('#nonce').value = payload.nonce;
form.submit();
);
);
,
);
var checkout = new Demo(
formID: 'payment-form'
);
但无法在 onsuccess 函数中得到响应,谁能告诉我如何才能得到这个成功响应,
【问题讨论】:
【参考方案1】:全面披露:我在 Braintree 工作。如果您还有任何问题,请随时联系support。
您似乎将Braintree JSv2 Drop-In UI 中的PayPal 实现与Braintree JSv3 Drop-In UI 混淆了。 JSv3 不支持 onSuccess
选项。 JSv3 中 PayPal 对象的完整配置选项列表是available here。
根据您提供的代码,我建议您删除您的 onSuccess
回调函数。您应该仍然可以通过将该代码放在您的 instance.requestPaymentMethod
回调函数中来实现您想要的结果,如下所示:
<script type="text/javascript">
var form = document.querySelector('#payment-form');
var client_token = "<?php echo \Braintree\ClientToken::generate(); ?>";
braintree.dropin.create(
authorization: client_token,
selector: '#bt-dropin',
paypal:
flow: 'vault'
, function (createErr, instance)
if (createErr)
console.log('Error', createErr);
return;
form.addEventListener('submit', function (event)
event.preventDefault();
instance.requestPaymentMethod(function (err, payload)
if (err)
console.log('Error', err);
return;
console.log("Payment confirmation");
console.log(payload);
alert('sdsdsd123');
console.log(payload.nonce);
// Add the nonce to the form and submit
document.querySelector('#nonce').value = payload.nonce;
form.submit();
);
);
);
</script>
【讨论】:
感谢您的帮助,requestPaymentMethod 仅在我们使用信用卡付款时有效,它不适用于贝宝结帐 @NikulPanchal 你能用脚本发布你的完整 html 表单,以便我可以在本地运行它吗?是否记录了任何错误?提交表单后,上面的代码对我有效。以上是关于无法在 Braintree 结帐按钮中获得响应的主要内容,如果未能解决你的问题,请参考以下文章
Braintree PayPal 结帐组件抛出“e.client.getVersion 不是函数”