2016-04-10 4 views
2

Нужно интегрировать laravel/cashier-braintree в мое приложение Laravel. Практически не имея опыта интеграции с Braintree, очень сложно заставить его работать. Может кто-нибудь объяснить в шагах, как это работает, или какой-то учебник, который был бы хорош для этого? Пытались следовать интеграции для Stripe, потому что они похожи, но не имеют успеха.Подписки в Braintree с laravel/cashier-braintree/Laravel 5.2

Это как мой код выглядит как прямо сейчас

SubscriptionController.php

public function createToken() 
    { 
     $clientToken = \Braintree_ClientToken::generate(array('customerId' => "")); 
     return $clientToken; 
    } 

    public function checkout() 
    { 
     $creditCardToken = $this->createToken(); 
     $data = [ 
      'paymentMethodNonce' => $creditCardToken, 
      'creditCard' => [ 
       'number' => Input::get('number'), 
       'expirationDate' => Input::get('expiration_date'), 
       'cvv' => Input::get('cvv') 
      ], 
     ]; 
     $this->user->newSubscription(Input::get('plan'), Input::get('plan'))->create($creditCardToken, $data); 

     if ($this->user->subscribed('Small')) { 
      return 'Done!'; 
     } 

     var_dump($this->user); 
    } 

Таким образом, я получаю

Unable to create Braintree customer: Unknown payment_method_nonce. 
Expiration date is required. 
Credit card number is required. 
Credit card must include number, payment_method_nonce, or venmo_sdk_payment_method_code. 

Если я ставлю в моей форме name="" I 'm получение Unable to create Braintree customer: Unknown payment_method_nonce. Итак, с именем это проходит, но что-то не так с payme nt_method_nonce. Не могу понять, почему оплата не будет работать с именем data-braintree, потому что просто имя не является вариантом из-за безопасности. И если кто-то знает, почему я получаю неизвестный payment_method_nonce?

ответ

2

Решение:

subscription.blade.php

{!! Form::open(['route' => 'subscription', 'method' => 'post', 'id' => 'checkout'])!!} 

<h5>Choose:</h5> 

<select name="plan" id="plan" class="form-control"> 
    <option value="sm">Small</option> 
    <option value="lg">Large</option> 
</select> 

<div class="form-group"> 
    <h5>Card number:</h5> 

    <div id="number" class="form-control"></div> 

</div> 

<div class="row"> 
    <div class="col-md-6 col-sm-6"> 
     <div class="form-group"> 
      <h5>Date:</h5> 

      <div id="expiration-date" class="form-control"></div> 

     </div> 
    </div> 

    <div class="col-md-6 col-sm-6"> 
     <div class="form-group"> 

      <div id="cvv" class="form-control"></div> 

     </div> 
    </div> 
</div> 

{!! Form::close() !!} 

SubscriptionsController.php

public function join() 
    { 
     $data = [ 
      'paymentMethodNonce' => Input::get('payment_method_nonce'), 
     ]; 
     $this->user->newSubscription('main', Input::get('plan'))->create(Input::get('payment_method_nonce'), $data); 

     return redirect('/'); 
    } 

скрипты

<script src="https://js.braintreegateway.com/v2/braintree.js"></script> 
<script> 
    var colorTransition = 'color 100ms ease-out'; 

    braintree.setup("@braintreeClientToken", "custom", { 
     id: "checkout", 
     hostedFields: { 

      number: { 
       selector: "#number" 
      }, 

      expirationDate: { 
       selector: "#expiration-date" 
      }, 

      cvv: { 
       selector: "#cvv" 
      } 
     } 
    }); 
</script> 
Смежные вопросы