2015-02-15 3 views
4

Моя установка:Неизвестный метод оплаты Нонс

Я пытался добавить новый клиент as showed in the tutorial, который работает отлично. Но когда я попытался добавить метод оплаты из Front-End с данным кодом из SDK JavaScript. Я использовал Drop-In-UI, который генерирует мне Метод оплаты Nonce, который является частью моего вопроса.

Я настроил PHP Backend с учетными данными Sandbox и вставил пример кода, указанный в документах.

При попытке создать пользователя, все в порядке:

$result = Braintree_Customer::create(array(
    'id' => Auth::id(), 
    'firstName' => 'Mike', 
    'lastName' => 'Jones', 
    'company' => 'Jones Co.', 
    'email' => '[email protected]', 
    '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') представляет действительную строку.

ответ

5

После очень длительного дня с интенсивными исследованиями Документации я наконец нашел проблему.

Вам нужно пройти Client Token, который генерируется с помощью PHP библиотеки (не CSE маркеров из песочницы!) В JavaScript фрагмент кода предоставленный Брейнтри:

braintree.setup(
     "{{ Braintree_ClientToken::generate(['customerId' => Auth::id()]) }}", 
     'dropin', { 
      container: 'dropin' 
     } 
); 

Капля-In-UI кодекс скопируйте + вставить из документа.

<form id="checkout" method="post" action="/checkout"> 
    {!! csrf_field() !!} 
    <div id="dropin"></div> 
    <input type="submit" value="Pay $10"> 
</form> 

Надеюсь, кто-то сэкономит много времени с предоставленным ответом.

Edit: В Laravel 5 необходимо вручную добавить CSRF-поле (я обновил код), в противном случае вы получите TokenMismatchException от Laravel.

Смежные вопросы