2016-04-10 5 views
2

Laravel/cashier-braintreeをLaravelアプリに統合する必要があります。 Braintreeの統合に関する経験がほとんどないので、それを機能させることは本当に難しいです。誰かがステップごとにどのように動作するか、またはこれに適したチュートリアルを説明できますか?ストライプの統合に従おうとしましたが、それは似ていますが成功しなかったからです。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); 
    } 

だから私は、私は自分のフォームでname=""を入れた場合、私は

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. 

を取得していますだから、Unable to create Braintree customer: Unknown payment_method_nonce. だから、それは通り抜けますが、何かがpaymeで間違っていますnt_method_nonce。なぜなら、名前は安全のためにオプションではないので、支払いがdata-braintree-nameで機能しない理由を理解できません。誰かがなぜ私が未知の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> 
関連する問題