首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mpesa集成中ngrok中的POST /api/mpesa/callbackurl 502坏网关

mpesa集成中ngrok中的POST /api/mpesa/callbackurl 502坏网关
EN

Stack Overflow用户
提问于 2022-05-19 07:26:36
回答 2查看 444关注 0票数 2

我正在将姆比萨集成到我的Laravel应用程序中。我模拟了一个交易,用户可以成功地支付。付款后,我希望通过回调URL将支付细节存储在数据库中。我已经创建了一个API路由,它调用了在DB中编码和保存数据的函数。我使用ngrok将本地主机隧道到回调URL。每当我在postman中执行该函数并成功支付时,我就会在ngrok "POST /api/mpesa/callbackurl 502坏网关“上出错。我已经研究并发现它是一个服务器错误,但是我已经很好地在ngrok..how中引导了本地主机,我能修复这个问题吗?

这是我的stkpush函数

代码语言:javascript
复制
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路由

路线:post(‘/mpesa/callbackurl’,MpesatransactionController::class,'mpesaresponse')->name('mpesaresponse');

mpesa响应函数

代码语言:javascript
复制
public function mpesaresponse(Request $request)
{
    $response=$request->getContent();

    $transaction=new mpesatransaction;
    $transaction->response=json_encode($response);
    $transaction->save();

}

ngrok面板

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-21 09:05:13

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

正确的语法应该是没有ngrok http 127.0.0.1:8000端口的:80

票数 4
EN

Stack Overflow用户

发布于 2022-08-03 06:53:53

尝试将函数中的回调URL更改为如下所示:

代码语言:javascript
复制
public function stkpush(Request $request)
{
    $url='https://sandbox.safaricom.co.ke/mpesa/stkpush/v1/processrequest';

    $curl_post_data=[
        ...
        'CallBackURL'=>'https://89af-196-202-210-53.eu.ngrok.io/api/mpesaresponse',
        ...
    ]
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72300328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档