提问人:Ivan Raposo 提问时间:11/17/2023 最后编辑:matiaslauritiIvan Raposo 更新时间:11/17/2023 访问量:44
Laravel 10:获取完整的 JSON API 响应(未截断)
Laravel 10: Get the full JSON API Response (not truncated)
问:
我已将我的应用程序与第三方应用程序集成以进行支付,关于成功付款,该应用程序能够接收完整的 API 响应(在下面共享)并成功插入数据库表,该问题被注意到不成功的付款,其中响应与成功的付款响应不同,我无法正确格式化 API 响应并插入数据库表,因为它发生在付款成功。所以,我想做的是:
- 在 Laravel 日志上获取完全不成功的 API 响应;
- 删除反斜杠,使响应结构成为成功的结构;
- 将不成功的响应插入到数据库表中。
成功的 API 响应
{"output_ResponseCode":"INS-0","output_ResponseDesc":"Request processed successfully","output_TransactionID":"vmo3kg298v4l","output_ConversationID":"99b0efe0007648eb96fd03aa1b2a4e1f","output_ThirdPartyReference":"FT15112023131748"}
API 响应失败
{\"output_ResponseCode\":\"INS-10\",\"output_ResponseDesc\":\"Duplicate Transaction\",\"output_TransactionID\":\"N/A\",\"output_Conve (truncated...)
"}
我已经尝试更改 Laravel 日志记录配置以将“max”选项设置为“5000”,删除反斜杠,但似乎我实现的方法无法正常工作,所以我没有想法。如果有人能分享一些光,我将不胜感激。
格式化不成功的 API 响应的方法
private function formatApiResponse($originalResponse)
{
// Remove backslashes from the original response
$formattedResponse = stripslashes($originalResponse);
// Decode the formatted JSON response
$decodedResponse = json_decode($formattedResponse, true);
if (json_last_error() !== JSON_ERROR_NONE) {
Log::channel('logs')->info('Failed to decode formatted API response JSON');
throw new \Exception('Failed to decode formatted API response JSON');
}
return json_encode($decodedResponse);
}
将不成功的 API 响应插入数据库表的方法
private function insertUnsuccessfulApiResponse($response, $apiResponse, $id)
{
// Insert API response into the database for unsuccessful transactions
ApiResponsesMpesa::create([
'status_code' => $response->getStatusCode(),
'output_ConversationID' => 'N/A',
'output_TransactionID' => 'N/A',
'output_ResponseDesc' => $apiResponse['output_ResponseDesc'],
'output_ResponseCode' => $apiResponse['output_ResponseCode'],
'output_ThirdPartyReference' => 'N/A',
'transformed_request_id' => $id,
]);
Log::channel('logs')->info('API Response for Unsuccessful Transaction inserted successfully');
}
答: 暂无答案
评论