Closed salman-007 closed 3 years ago
Hi @salman-007 Expose your callback URL using ngrok if you are testing locally. Ngrok has an inspection page where you can check if callback is hitting your URL.
i checked it there and it's showing 200 ok response and nothing else. does the callback is working directly or how the process in mpesa working, i am getting 200 ok response but it's not redirecting to the callback url.
i can see this message on success:
"MerchantRequestID":"326XX-978XXX-1", "CheckoutRequestID":"ws_CO_1612202011111XXXX", "ResponseCode": "0", "ResponseDescription":"Success. Request accepted for processing", "CustomerMessage":"Success. Request accepted for processing"
it's not redirecting to callback URL
@salman explain how you are doing it with code snippet. There's no redirection Daraja will make a POST resquest to the callback url you have provided. You will just ensure your callback url is reachable.
i created one route for calling a method which has express method in the controller as below:
public function mpesa() { $expressResponse=Mpesa::express(100,'254723341580','24242524','Testing Payment'); }
and in config folder i have used below callback url in mpesa.php
'lnmocallback' => ' https://bb54f21ef6cd.ngrok.io/smartschol/mpesaReturn',
in my web.php
Route::post('/mpesaReturns','paymentController@mpesaReturn')->name('mpesaReturn');
but it is not redirecting to this method after callback.
@salman-007
With Callback
'lnmocallback' => ' https://bb54f21ef6cd.ngrok.io/api/smartschool/mpesaReturn',
Try adding the route in api.php
Route::post('smartschool/mpesaReturns','paymentController@mpesaReturn')->name('mpesaReturn');
or
Route::post('smartschool/mpesaReturns', function(Request $request){
\Log::info($request->getContent());
});
What you have should also work but the route is wrong, should be
Route::post('/smartschool/mpesaReturns','paymentController@mpesaReturn')->name('mpesaReturn');
Also, ensure you have the right port exposed
./ngrok http 8000
if you are running laravel development server on port 8000
the smartschol is actually the folder name which is coming with every route by default so we don't need to add it in web.php
i want the user to redirect to a new view.
when i add Route::post('mpesaReturns','paymentController@mpesaReturn')->name('mpesaReturn');
to api.php
it gives me an error on nrgrok that POST /api/smartschol/mpesaReturns | 404 Not Found
you need to include smartschool
in your route path or else you remove it in your callback URL
i am implementing this package in sandbox for testing so why is it saying insufficient balance `{ "Body": {
"stkCallback": {
"MerchantRequestID": "25XXX-32XXXXX-X",
"CheckoutRequestID": "ws_CO_181220201625XXXXXX",
"ResultCode": 1,
"ResultDesc": "The balance is insufficient for the transaction"
}
}
}`
Maybe you don't have sufficient balance in your mpesa. Test with less amount 1
or 10
Or try again sometimes it can be issued on their side
Hi,
thank you for the package and for the easy interface. i am facing some issue in it.
i get success message from
$expressResponse=Mpesa::express(100,'254723341580','24242524','Testing Payment');
but it is not redirecting to the callback url which i defined in the
mpesa.php
file located in config folder.i am using this payment gateway for first time. am i doing something wrong?
any help would be really appreciated.
thank you