2016-04-10 33 views
2

Laravel uygulamasında laravel/cashier-braintree'yi entegre etmeniz gerekiyor. Braintree entegrasyonu ile hemen hemen hiç deneyim sahibi olmak, onu işe yaratabilmek gerçekten çok zor. Birisi nasıl çalıştığını adım adım açıklayabilir mi, ya da bunun için iyi olabilecek bir öğretici mi? Stripe için entegrasyonu takip etmeye çalıştım, çünkü onlar benzer ama başarılı değiller.Braintree'deki aboneler lavelle/kasiyer-braintree/Laravel 5.2

Bu benim kod benim formu name="" I koyarsanız ben

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. 

alıyorum,

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

Yani şu anda böyle

SubscriptionController.php böyle görünüyor Unable to create Braintree customer: Unknown payment_method_nonce. Alıyorum, adı geçiyor ama maaşla bir şeyler ters gidiyor nt_method_nonce. Güvenliğinden dolayı adın bir seçenek olmaması nedeniyle, ödemenin veri-braintree-adıyla neden işe yaramayacağını anlayamıyorum. Ve eğer birisi bilinmeyen ödeme neden elde ettiğimi biliyorsa, ödeme_method_nonce?

cevap

2

Çözüm:

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

komut

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