Javascript 集成braintree导致的问题
我第一次在Braintree上工作,第一步就解决了问题。我无法访问dropin功能和其他。。 我需要帮助来解决这个问题 我遵循这里给出的步骤: 第一步是Javascript客户端我按照上面提到的,添加了脚本Javascript 集成braintree导致的问题,javascript,php,braintree,Javascript,Php,Braintree,我第一次在Braintree上工作,第一步就解决了问题。我无法访问dropin功能和其他。。 我需要帮助来解决这个问题 我遵循这里给出的步骤: 第一步是Javascript客户端我按照上面提到的,添加了脚本 <script src="https://js.braintreegateway.com/v2/braintree.js"></script> 我已使用从服务器获取的客户端令牌密钥进行了检查 对于下一步,我添加了前面提到的配置 Braintree_Configur
<script src="https://js.braintreegateway.com/v2/braintree.js"></script>
我已使用从服务器获取的客户端令牌密钥进行了检查
对于下一步,我添加了前面提到的配置
Braintree_Configuration::environment('sandbox');
Braintree_Configuration::merchantId('use_your_merchant_id'); //updated with our merchant id
Braintree_Configuration::publicKey('use_your_public_key'); // updated with our public key
Braintree_Configuration::privateKey('use_your_private_key'); //updated with our private key
然后补充说
$clientToken = Braintree_ClientToken::generate(array(
"customerId" => $aCustomerId
));
现在,我收到的问题-
当我用我们的客户id更新$aCustomerId时,我在Braintree\u ClientToken中得到了一个致命错误,即“客户id”字段未定义。因此,删除了数组(“客户”=>$aCustomerId)并获得了客户端令牌
该客户端令牌在brantree.setup('token_KEY','dropin',{container:'checkout'})中使用
并获得
Error: Unable to find valid container. -braintree.js(line 18)
我还提到过一次var braintree=braintree.create(“客户机令牌密钥”)代码>以上brantree.setup('TOKEN_KEY','dropin',{container:'checkout'})
当时我得到了TypeError:braintree.setup不是一个函数
我试图把这两天的情况整理出来,但仍然并没有得到演示中显示的dropin屏幕
希望有好的帮助。我在Braintree工作。如果您有更多问题,请随时联系
如果JavaScript找不到您提供的容器,将抛出您看到的第一个错误,找不到有效容器。
。容器的可接受值是ID字符串、DOM节点或jQuery对象。您的示例代码应该可以工作,但如果不能工作,您可以尝试以不同的格式传递,例如,{container:$('#dropin')}
一旦确定传递的容器正确,我还建议确保正确插入客户端令牌。如果在页面上查看源代码,则客户端令牌应为base64编码字符串。将所有脚本放在html
/页脚
部分之后,这将起作用:
<?php
require_once 'braintree-php-2.30.0/lib/Braintree.php';
Braintree_Configuration::environment('sandbox');
Braintree_Configuration::merchantId('-----------');
Braintree_Configuration::publicKey('-----------');
Braintree_Configuration::privateKey('-----------');
if(isset($_POST['submit'])){
/* process transaction */
$result = Braintree_Transaction::sale(array(
'amount' => '234.00',
'creditCard' => array(
'number' => '30569309025904',
'expirationDate' => '05/14'
)
));
if ($result->success) {
print_r("success!: " . $result->transaction->id);
} else if ($result->transaction) {
print_r("Error processing transaction:");
print_r("\n code: " . $result->transaction->processorResponseCode);
print_r("\n text: " . $result->transaction->processorResponseText);
} else {
print_r("Validation errors: \n");
print_r($result->errors->deepAll());
}
}
$clientToken = Braintree_ClientToken::generate();
?>
<html>
<head>
</head>
<body>
<div id="checkout" method="post" action="/checkout">
<div id="dropin"></div>
<input data-braintree-name="number" value="4111111111111111">
<input data-braintree-name="expiration_date" value="10/20">
<input type="submit" id="submit" value="Pay">
<div id="paypal-button"></div>
</div>
<!-- Scripts -->
<script src="https://code.jquery.com/jquery-2.1.1.js"></script>
<script src="https://js.braintreegateway.com/v2/braintree.js"></script>
<script>
braintree.setup("<?php print $clientToken; ?>", "dropin", { container:
jQuery("#dropin") , form: jQuery("#checkout") ,
paymentMethodNonceReceived: function (event, nonce) {
// do something
}
});
</script>
</body>
</html>
braintree.setup(“,”dropin“,{容器:
jQuery(“dropin”),形式:jQuery(“checkout”),
paymentMethodNonceReceived:函数(事件,nonce){
//做点什么
}
});
我遇到了这个问题,通过将javascript放在页面末尾解决了这个问题。另一种方法是将其封装在一个准备好文档的测试中
出现此问题的原因是braintree代码在加载脚本后立即尝试查找容器。但是,如果您的代码位于文档的头部,那么容器将不会被加载,因此它将找不到容器,您将得到一个错误
有关base64_编码的注释不正确。如果在加载容器后触发代码,而不重新编码已编码的字符串,则代码将非常有效。您希望确保
尽可能靠近页面底部。如果可能的话,就在您的标签上方。这使浏览器有时间加载DOM,然后加载Braintree SDK
接下来,您希望通过将container
属性传递给setup()方法来指定“container”。大概是这样的:
let结帐;
braintree.setup('CLIENT\u TOKEN\u KEY'、'dropin'{
container:document.getElementById('dropin'),//感谢您的回复,我也尝试了{container:$('dropin')}
,但有相同的问题。我从Braintree站点的演示复制时没有任何打字错误。。
Error: Unable to find valid container. -braintree.js(line 18)
<?php
require_once 'braintree-php-2.30.0/lib/Braintree.php';
Braintree_Configuration::environment('sandbox');
Braintree_Configuration::merchantId('-----------');
Braintree_Configuration::publicKey('-----------');
Braintree_Configuration::privateKey('-----------');
if(isset($_POST['submit'])){
/* process transaction */
$result = Braintree_Transaction::sale(array(
'amount' => '234.00',
'creditCard' => array(
'number' => '30569309025904',
'expirationDate' => '05/14'
)
));
if ($result->success) {
print_r("success!: " . $result->transaction->id);
} else if ($result->transaction) {
print_r("Error processing transaction:");
print_r("\n code: " . $result->transaction->processorResponseCode);
print_r("\n text: " . $result->transaction->processorResponseText);
} else {
print_r("Validation errors: \n");
print_r($result->errors->deepAll());
}
}
$clientToken = Braintree_ClientToken::generate();
?>
<html>
<head>
</head>
<body>
<div id="checkout" method="post" action="/checkout">
<div id="dropin"></div>
<input data-braintree-name="number" value="4111111111111111">
<input data-braintree-name="expiration_date" value="10/20">
<input type="submit" id="submit" value="Pay">
<div id="paypal-button"></div>
</div>
<!-- Scripts -->
<script src="https://code.jquery.com/jquery-2.1.1.js"></script>
<script src="https://js.braintreegateway.com/v2/braintree.js"></script>
<script>
braintree.setup("<?php print $clientToken; ?>", "dropin", { container:
jQuery("#dropin") , form: jQuery("#checkout") ,
paymentMethodNonceReceived: function (event, nonce) {
// do something
}
});
</script>
</body>
</html>