2016-04-10 9 views
2

Ich brauche Laravel/Cashier-Braintree in meiner Laravel App zu integrieren. Da Braintree kaum Erfahrung mit der Integration von Braintree hat, ist es wirklich schwierig, es zum Laufen zu bringen. Kann jemand in Schritten erklären, wie es funktioniert, oder ein Tutorial, das dafür gut wäre? Versuchte, der Integration für Stripe zu folgen, weil sie ähnlich, aber nicht erfolgreich sind. DieseAbonnements in Braintree mit Laravel/Cashier-Braintree/Laravel 5.2

ist, wie mein Code sieht aus wie gerade jetzt

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); 
    } 

Also, ich bin

immer
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. 

Wenn ich in meiner Form name="" Ich habe Ich bekomme Unable to create Braintree customer: Unknown payment_method_nonce. Also, mit Namen wird es durch, aber etwas wird falsch mit Payme nt_method_nonce. Kann nicht verstehen, warum die Zahlung nicht mit dem Daten-Braintree-Namen funktioniert, da nur der Name aus Sicherheitsgründen nicht angezeigt wird. Und wenn jemand weiß, warum ich unbekannt payment_method_nonce bekomme?

Antwort

2

Lösung:

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('/'); 
    } 

Skripte

<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>