未知的支付方式随机码

4

我的设置是:

我尝试添加一个新客户,按照教程操作,一切正常。但当我尝试使用 JavaScript SDK 提供的代码从前端添加付款方式时,出现了问题。我使用了 Drop-In-UI,它生成了一个付款方法 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:未知的paymentMethodNonce”。这对我来说有点令人困惑和奇怪,因为“Input::get('payment_method_nonce')”代表一个有效的字符串。
1个回答

5

经过一整天对文档的密集研究,我终于找到了问题所在。

你需要将由PHP库生成的客户端令牌(Client Token)(而不是沙盒中的CSE令牌)传递到由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 $10">
</form>

希望这个答案能够为大家节省很多时间。
编辑: 在 Laravel 5 中,你需要手动添加 csrf-field(我已更新代码),否则你将会从 Laravel 得到一个 TokenMismatchException。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接