【问题标题】:POST /api/mpesa/callbackurl 502 Bad Gateway in ngrok in mpesa integrationPOST /api/mpesa/callbackurl 502 Bad Gateway in ngrok in mpesa integration
【发布时间】: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();

}

ngrok 面板

【问题讨论】:

  • 嘿斯蒂芬,你找到解决办法了吗
  • @RaymondGitonga 还没有..我在网上上传了项目,而不是在本地主机上工作..我会在几天后回来找到解决方案,但如果你有解决方案,请在此处发布它可以帮助别人

标签: laravel ngrok mpesa


【解决方案1】:

您在 ngrok 终端上输入了错误的地址。您在上传的图片中输入了ngrok http 127.0.0.1:8000:80

正确的语法应该是ngrok http 127.0.0.1:8000,不带:80 端口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-17
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2019-08-24
    • 2015-11-26
    • 2020-11-12
    相关资源
    最近更新 更多