Je suis nouveau à Laravel. J'ai eu du mal à mettre en œuvre Paypal Express Checkout sur mon site Web pendant quelques jours afin de permettre des dons à une organisation à but non lucratif. Merci à these explanations J'ai pu installer Omnipay, laisser l'utilisateur entrer le montant qu'il veut donner et aller à Paypal. Mais, lorsque j'essaie de mettre fin à la transaction (Payer), je ne suis pas redirigé vers mon message de réussite. Mon compte bac à sable ne montre aucune transaction non plus, il semble donc que le paiement n'est pas terminé correctement. Je devine qu'il ya quelque chose de mal avec ma fonction « getSuccessPayment », mais je ne peux pas comprendre ce qu'il est ...Laravel 5.3 - Omnipay Paypal Express ne pas retourner le message de succès
Voici mon contrôleur jusqu'à présent:
<?php namespace App\Http\Controllers;
use Omnipay\Omnipay;
use Session;
use App\Http\Requests\PaymentRequest;
class PaymentController extends Controller {
public function postPayment(PaymentRequest $request)
{
$price = $request->get('price');
$items[] = array('name' => 'Don', 'quantity' => 1, 'price' => $price);
$params = array(
'cancelUrl'=>url('/donner'),
'returnUrl'=>url('/payment_success'),
'amount' => $price,
'currency' => 'EUR'
);
Session::put('params', $params);
Session::save();
$gateway = Omnipay::create('PayPal_Express');
$gateway->setUsername('my sandbox email');
$gateway->setPassword('my sandbox password');
$gateway->setSignature('my sandbox signature');
$gateway->setTestMode(true);
$response = $gateway->purchase($params)->setItems($items)->send();
if ($response->isSuccessful()) {
print_r($response);
} elseif ($response->isRedirect()) {
$response->redirect();
} else {
echo $response->getMessage();
}
}
public function getSuccessPayment()
{
$gateway = Omnipay::create('PayPal_Express');
$gateway->setUsername('my sandbox email');
$gateway->setPassword('my sandbox password');
$gateway->setSignature('my sandbox signature');
$gateway->setTestMode(true);
$params = Session::get('params');
$response = $gateway->completePurchase($params)->send();
$paypalResponse = $response->getData();
if(isset($paypalResponse['PAYMENTINFO_0_ACK']) && $paypalResponse['PAYMENTINFO_0_ACK'] === 'Success') {
return redirect('/payment_success');
} else {
//payment fails
return redirect('/payment_failure');
}
}
}
?>
Et mes routes:
Route::post('donner',
['as' => 'payment', 'uses' => '[email protected]']);
Route::get('payment_success', '[email protected]');
Route::get('payment_failure', '[email protected]');
Bonjour @mefimefi merci pour cela. J'ai passé toute la journée à essayer de faire quelque chose qu'ils ont dit qu'il était difficile d'installer omnipay/paypal sur ma version de laravel 5.3.30. J'ai finalement réussi à le craquer aujourd'hui. D'abord dans votre terminal: 'composer require symfony/event-dispatcher:^2.8'. après cette exécution dans le terminal: 'composer require omnipay/paypal:" 2.6.3 "'. Bien sûr, ma version de paypal est la version actuelle (vous pouvez aussi mettre composeur require omnipay/paypal: *). J'espère que cela aide quelqu'un. :) – Matija
J'ai oublié un dernier: 'composer require ignited/laravel-omnipay:" 2.3.0 "' et cela devrait le faire. Après cela, vous devez fournisseur de services: «Ignited \ LaravelOmnipay \ LaravelOmnipayServiceProvider», et Alias: «Omnipay» => «Allumé \ LaravelOmnipay \ Facades \ OmnipayFacade», 'dans * config/app.php * – Matija