Paystack Payment Initialization using PHP Laravel Backend
Noble Okechi
Posted on September 12, 2022
Initializing paystack transaction from your backend is safer way of building a secured payment integration.
For this content, I will be using postman for my testing. If you are new to postman, check my post on how to setup postman with laravel backend.
Create a Route
Create a route on api.php
file with any preferred name.
Route::post('initialize_paystack', [PaystackController::class, 'initialize_paystack'])->name('api.initialize_paystack');
Create a Controller
For this solution, I have a controller called PaystackController
and a function inside the controller called initialize_paystack
.
To initialize payment, see the code below.
private $initialize_url = "https://api.paystack.co/transaction/initialize";
public function initialize_paystack(Request $request)
{
// $amount = number_format($request->amount,2);
$fields = [
'email' => $request->user()->email,
'amount' => $request->amount * 100,
];
$fields_string = http_build_query($fields);
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $this->initialize_url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Authorization: Bearer ".env('PAYSTACK_SECRET_KEY'),
"Cache-Control: no-cache",
));
//So that curl_exec returns the contents of the cURL; rather than echoing it
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
//execute post
$result = curl_exec($ch);
$response = json_decode($result);
return json_encode([
'data' => $response,
'metadata' => [
'payment_for' => 'token'
]
]);
}
Send data from postman
To trigger the initialization, I will send the amount
from postman which can also be sent from your frontend.
Your response will return payment link, which you can use to make a payment or return back to the frontend.
"data": {
"status": true,
"message": "Authorization URL created",
"data": {
"authorization_url": "https://checkout.paystack.com/zbm34791mm5t9wk",
"access_code": "zbm34791mm5t9wk",
"reference": "dod8hghbhc"
}
},
The image above is response gotten after clicking the payment link.
Posted on September 12, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 29, 2024