Подписки в Брейнтри с Laravel / Кассир-Брейнтри / Laravel 5.2

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

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

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="" я собираюсь Unable to create Braintree customer: Unknown payment_method_nonce.
Таким образом, с именем это проходит, но что-то не так с payment_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>
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]