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');
}
} |
Partager