Redirection après validation paiement
Bonjour à tous,
J'essaye en vain d'effectuer une redirection après une validation de paiement.
La validation fait appel à un callback de type POST.
La page de paiement génère un QR code qui sera scanné à l'aide de son smartphone.
J'arrive bien à traiter l'url de callback et générer un enregistrement en BDD.
Par contre il m'est impossible de rediriger la validation du paiement vers la page d'origine.
Dans la méthode "verifyPayment" de mon controlleur j'effectue une redirection vers la page d'origine "payment".
Sur "papier" tout semble correct, je n'ai pas d'erreur dans la console, mais la page ne se redirige pas.
Savez-vous me dire comment m'y prendre ?
Merci pour l'aide ;)
voici ma page html "payment"
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
<!-- Alert Content -->
@if ($message = Session::get('success'))
<div class="alert alert-success">
<p>{{ $message }}</p>
</div>
@endif
<div id="results">
<img src="{{ $customizedQRLink }}">
</div> |
le fichier route (web.php)
Code:
1 2 3
|
Route::get('/api/payconiq-webhook',[PaymentController::class, 'requestPayment'])->name('payment');
Route::post('/api/payconiq-webhook',[PaymentController::class, 'verifyPayment'])->name('verify'); |
Mon controlleur
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Optios\Payconiq\PayconiqApiClient;
use Optios\Payconiq\Request\RequestPayment;
use Optios\Payconiq\PayconiqQrCodeGenerator;
use Optios\Payconiq\PayconiqCallbackSignatureVerifier;
use App\Models\Transactions;
class PaymentController extends Controller
{
public function requestPayment()
{
$apiKey = env('PAYCONIQ_KEY');
$client = new PayconiqApiClient($apiKey, null, false);
$requestPayment = new RequestPayment(
100 // = 1
);
$requestPayment->setCallbackUrl('https://machin.ngrok-free.app/api/payconiq-webhook');
$requestPayment->setReference('ref123456');
$requestPayment->setPosId('POS00001');
$payment = $client->requestPayment($requestPayment);
$qrLink = $payment->getQrLink();
$customizedQRLink = PayconiqQrCodeGenerator::customizePaymentQrLink(
$qrLink,
PayconiqQrCodeGenerator::FORMAT_PNG,
PayconiqQrCodeGenerator::SIZE_SMALL,
PayconiqQrCodeGenerator::COLOR_BLACK
);
//var_dump($customizedQRLink);
return view('payment',compact('customizedQRLink'));
}
public function verifyPayment(Request $request)
{
$paymentProfileId = env('PAYCONIQ_PROFIL_ID'); //your payconiq payment profile id
// When Payconiq sends a POST to your webhook endpoint (callbackUrl), take the signature from the request header
$signature = $request->header('signature');
//var_dump($signature);
//POST body (payload)
$paymentId = null;
$status = null;
$payload = $request->getContent();
var_dump($payload);
if (!empty($payload)) {
$payloadData = json_decode($payload);
if ($payloadData !== null) {
// Accéder aux valeurs du payload
$paymentId = $payloadData->paymentId;
//$transferAmount = $payloadData->transferAmount;
// $reference = $payloadData->reference;
$status = $payloadData->status;
// ... autres traitements avec les données du payload ...
} else {
// Le décodage JSON a échoué
// Gérer l'erreur ou renvoyer une réponse appropriée
}
} else {
// Le contenu de la demande est vide
// Gérer l'erreur ou renvoyer une réponse appropriée
}
$transaction = Transactions::create([
'value' => $paymentId
]);
// $response = array('status' => $status);
// Renvoyer la réponse au format JSON
//header('Content-Type: application/json');
//echo json_encode($response);
/*$payconiqCallbackSignatureVerifier = new PayconiqCallbackSignatureVerifier($paymentProfileId, null, null, false);
echo $payconiqCallbackSignatureVerifier->isValid($signature, $payload) ? 'valid' : 'invalid';
var_dump($payconiqCallbackSignatureVerifier->loadAndVerifyJWS($signature, $payload));
*/
return redirect()->route('payment')->with('success', 'Transaction success');
}
} |