未知付款方式随机数
Unknown Payment Method Nonce
我的设置是:
- Laravel 4.2
- Braintreepayments JS + PHP
- Laravel Braintree
我尝试添加一个新客户 as showed in the tutorial,效果很好。但是,当我尝试使用 JavaScript SDK 中的给定代码从前端添加付款方式时。我使用了 Drop-In-UI,它为我生成了一个 Payment Method Nonce,这是我的问题的一部分。
我使用沙盒凭据配置了 PHP 后端并粘贴了文档中给出的示例代码。
当我尝试创建用户时,一切正常:
$result = Braintree_Customer::create(array(
'id' => Auth::id(),
'firstName' => 'Mike',
'lastName' => 'Jones',
'company' => 'Jones Co.',
'email' => 'mike.jones@example.com',
'phone' => '281.330.8004',
'fax' => '419.555.1235',
'website' => 'http://example.com'
));
一提到付款随机数,就什么都不管用了:
$result = Braintree_Transaction::sale(array(
'amount' => '10.00',
'paymentMethodNonce' => Input::get('payment_method_nonce'),
'customer' => array(
'id' => Auth::id()
),
'options' => array(
'storeInVaultOnSuccess' => true,
)
));
服务器一直说93108: Unknown paymentMethodNonce
。这对我来说似乎有点令人困惑和奇怪,因为 Input::get('payment_method_nonce')
代表一个有效的字符串。
经过漫长的一天深入研究文档后,我终于找到了问题所在。
您需要将 PHP 库生成的 Client Token 传递给 Braintree 提供的 JavaScript 片段:
braintree.setup(
"{{ Braintree_ClientToken::generate(['customerId' => Auth::id()]) }}",
'dropin', {
container: 'dropin'
}
);
Drop-In-UI 代码是从文档中复制+粘贴的。
<form id="checkout" method="post" action="/checkout">
{!! csrf_field() !!}
<div id="dropin"></div>
<input type="submit" value="Pay ">
</form>
希望提供此答案的人可以节省很多时间。
编辑:
在 Laravel 5 你需要手动添加 csrf-field(我已经更新了代码),否则你会从 Laravel.
得到一个 TokenMismatchException
我的设置是:
- Laravel 4.2
- Braintreepayments JS + PHP
- Laravel Braintree
我尝试添加一个新客户 as showed in the tutorial,效果很好。但是,当我尝试使用 JavaScript SDK 中的给定代码从前端添加付款方式时。我使用了 Drop-In-UI,它为我生成了一个 Payment Method Nonce,这是我的问题的一部分。
我使用沙盒凭据配置了 PHP 后端并粘贴了文档中给出的示例代码。
当我尝试创建用户时,一切正常:
$result = Braintree_Customer::create(array(
'id' => Auth::id(),
'firstName' => 'Mike',
'lastName' => 'Jones',
'company' => 'Jones Co.',
'email' => 'mike.jones@example.com',
'phone' => '281.330.8004',
'fax' => '419.555.1235',
'website' => 'http://example.com'
));
一提到付款随机数,就什么都不管用了:
$result = Braintree_Transaction::sale(array(
'amount' => '10.00',
'paymentMethodNonce' => Input::get('payment_method_nonce'),
'customer' => array(
'id' => Auth::id()
),
'options' => array(
'storeInVaultOnSuccess' => true,
)
));
服务器一直说93108: Unknown paymentMethodNonce
。这对我来说似乎有点令人困惑和奇怪,因为 Input::get('payment_method_nonce')
代表一个有效的字符串。
经过漫长的一天深入研究文档后,我终于找到了问题所在。
您需要将 PHP 库生成的 Client Token 传递给 Braintree 提供的 JavaScript 片段:
braintree.setup(
"{{ Braintree_ClientToken::generate(['customerId' => Auth::id()]) }}",
'dropin', {
container: 'dropin'
}
);
Drop-In-UI 代码是从文档中复制+粘贴的。
<form id="checkout" method="post" action="/checkout">
{!! csrf_field() !!}
<div id="dropin"></div>
<input type="submit" value="Pay ">
</form>
希望提供此答案的人可以节省很多时间。
编辑: 在 Laravel 5 你需要手动添加 csrf-field(我已经更新了代码),否则你会从 Laravel.
得到一个TokenMismatchException