【发布时间】:2022-07-21 17:05:13
【问题描述】:
我正在将 mpesa 集成到 m laravel 应用程序中。我已经能够模拟交易并且用户可以完美地进行付款。付款后,我希望通过回调 url 将付款的详细信息存储在数据库中。我创建了一个 api 路由,该路由调用了对数据进行编码并将数据保存在 db 中的函数。我正在使用 ngrok 来隧道我的本地主机到回调 url。每当我在邮递员中执行函数并成功付款时,我都会在 ngrok "POST /api/mpesa/callbackurl 502 Bad Gateway" 上收到错误。我已经研究并发现这是一个服务器错误,但我已经在 ngrok 中很好地引导了本地主机。我该如何解决这个问题..
这是我的 stkpush 函数
public function stkpush(Request $request)
{
$url='https://sandbox.safaricom.co.ke/mpesa/stkpush/v1/processrequest';
$curl_post_data=[
'BusinessShortCode'=>174379,
'Password'=>$this->lipanampesapassword(),
'Timestamp'=>Carbon::rawParse('now')->format('YmdHms'),
'TransactionType'=> "CustomerPayBillOnline",
'Amount'=>1,
'PartyA'=>254712345678,
'PartyB'=>174379,
'PhoneNumber'=>254712345678,
'CallBackURL'=>'https://89af-196-202-210-53.eu.ngrok.io/api/mpesa/callbackurl',
'AccountReference'=>'Waweru Enterprises',
'TransactionDesc'=>'Paying for Products Bought'
];
$data_string=json_encode($curl_post_data);
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type:application/json','Authorization:Bearer '.$this->newaccesstoken()));
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_POSTFIELDS,$data_string);
$curl_response=curl_exec($curl);
return $curl_response;
}
api.php中的回调url路由
Route::post('/mpesa/callbackurl', [MpesatransactionController::class,'mpesaresponse'])->name('mpesaresponse');
mpesa 响应函数
public function mpesaresponse(Request $request)
{
$response=$request->getContent();
$transaction=new mpesatransaction;
$transaction->response=json_encode($response);
$transaction->save();
}
【问题讨论】:
-
嘿斯蒂芬,你找到解决办法了吗
-
@RaymondGitonga 还没有..我在网上上传了项目,而不是在本地主机上工作..我会在几天后回来找到解决方案,但如果你有解决方案,请在此处发布它可以帮助别人