I created an ecommerce site by laravel, I want to integrate payment by paypal, I installed package braintree/braintree_php by command compose require braintree/braintree_php, I add the form paypal by code javascript but it is not displayed.
I have already integrated paypal in another website, in the same way but now I can not. I do not know if the version changes or what.
CheckoutController.php
$gateway = new \Braintree\Gateway([
'environment' => config('services.braintree.environment'),
'merchantId' => config('services.braintree.merchantId'),
'publicKey' => config('services.braintree.publicKey'),
'privateKey' => config('services.braintree.privateKey')
]);
try {
$paypalToken = $gateway->ClientToken()->generate();
} catch (\Exception $e) {
$paypalToken = null;
}
checkout.blade.php
<form method="post" id="paypal-payment-form" action="{{ route('checkout.paypal') }}">
@csrf
<section>
<div class="bt-drop-in-wrapper">
<div id="bt-dropin"></div>
</div>
</section>
<input id="nonce" name="payment_method_nonce" type="hidden" />
<button class="button-primary" type="submit"><span>Pay with PayPal</span></button>
</form>
<script src="https://js.braintreegateway.com/web/dropin/1.13.0/js/dropin.min.js"></script>
<script>
var form = document.querySelector('#paypal-payment-form');
var client_token = "{{ $paypalToken }}";
braintree.dropin.create({
authorization: client_token,
selector: '#bt-dropin',
paypal: {
flow: 'vault'
}
}, function (createErr, instance) {
if (createErr) {
console.log('Create Error', createErr);
return;
}
// remove credit card option
var elem = document.querySelector('.braintree-option__card');
elem.parentNode.removeChild(elem);
form.addEventListener('submit', function (event) {
event.preventDefault();
instance.requestPaymentMethod(function (err, payload) {
if (err) {
console.log('Request Payment Method Error', err);
return;
}
// Add the nonce to the form and submit
document.querySelector('#nonce').value = payload.nonce;
form.submit();
});
});
});
</script>