Midtrans/midtrans-php

Trying to get property 'status_code' of non-object

mamlzy opened this issue · 5 comments

Ada yang bisa bantu masalah ini?
error ketika mengambil status transaksi, padahal id didalam "$request->id" sudah sesuai dengan data transaksi yang sudah ada di midtrans

public function paymentHistory(Request $request)
{
$status = \Midtrans\Transaction::status($request->id);
dd($status);
$status = json_decode(json_encode($status), true);
$va_number = $status['va_numbers'][0]['va_number'];
$gross_amount = $status['gross_amount'];
$bank = $status['va_numbers'][0]['bank'];
$transaction_status = $status['transaction_status'];
$transaction_time = $status['transaction_time'];
$deadline = date('Y-m-d H:i:s', strtotime('+1 day', strtotime($transaction_time)));
}

error nya seperti ini

ErrorException: Trying to get property 'status_code' of non-object in file /opt/lampp/htdocs/api-spp/vendor/midtrans/midtrans-php/Midtrans/ApiRequestor.php on line 102

Hi @ImamAlfariziSyahputra silahkan pastikan kembali value isProduction, serverKey dan orderId sudah sesuai, pastikan pola struktur order-id anda tidak terdapat spesial karakter yang dapat mengakibatkan struktur URL invalid, jika terdapat spesial karakter pada order_id Anda, untuk mencegahnya Anda dapat menggunakan transaction_id Midtrans sebagai parameter untuk melakukan request API get status. Untuk pertanyaan spesifik silahkan tanyakan via email support@midtrans.com

Terima kasih

saya sudah coba untuk pakai id, order_id, dan transaction_id. Tetapi tetap mendapat error yang sama

ini request yang saya kirim ke backend

{
"bill_key": (...),
"biller_code": (...),
"finish_redirect_url": (...),
"fraud_status": (...),
"gross_amount": (...),
"order_id": "9994",
"payment_type": (...),
"pdf_url": (...),
"status_code": "201",
"status_message": "Transaksi sedang diproses",
"transaction_id": "05cac04f-e6bf-4d70-a4c2-56c46a5b6ded",
"transaction_status": "pending",
"transaction_time": "2021-03-26 14:24:41"
}

Hi @ImamAlfariziSyahputra pastikan paremeter $request->id pada object $request tidak bernilai null. Jika anda mengirimkan request body seperti diatas. Possible parameter yang dikirimkan saat melakukan get status melalui \Midtrans\Transaction::status($request->id); bernilai null, karena request diatas yang Anda kirim tidak terdapat key id

Saya pernah mengalami hal tersebut, saya sudah memastikan bahwa object $request tidak bernilai null dan lain sebagainya tetapi hasilnya tetap sama. Tetapi setelah diteliti lagi ternyata saya tidak mengonfigurasikan General Settings sebelum merequest ke Midtrans, seperti serverKey, isProduction, dan isSanitized.
Jadi akan seperti ini kodenya, kalau di Laravel dengan memanfaatkan konfigurasi midtrans yang sudah saya set sebelumnya di folder config:

use Midtrans\Config;
use Midtrans\Transaction;

public function paymentHistory(Request $request)
{
//General Settings
Config::$serverKey = config("midtrans.serverKey");
Config::$isProduction = config("midtrans.isProduction");
Config::$isSanitized = config("midtrans.isSanitized");
Config::$is3ds = config("midtrans.is3ds");

$status = Transaction::status($request->id);
dd($status);
$status = json_decode(json_encode($status), true);
$va_number = $status['va_numbers'][0]['va_number'];
$gross_amount = $status['gross_amount'];
$bank = $status['va_numbers'][0]['bank'];
$transaction_status = $status['transaction_status'];
$transaction_time = $status['transaction_time'];
$deadline = date('Y-m-d H:i:s', strtotime('+1 day', strtotime($transaction_time)));
}

//Ketika saya nonaktifkan konfigurasinya akan menjadi seperti ini
ss-notification-midtrans-1
ss-result

Terima Kasih @rplb1819-06-auliaelihzafarizrafiqi atas bantuannya...
Saya kira jika sudah membuat konfigurasi midtrans pada suatu function tidak perlu membuat konfigurasi lagi,
dalam kasus ini saya sudah melakukan konfigurasi pada function untuk mengambil Snap Token.
setelah saya membuat konfigurasi lagi untuk function "paymentHistory", saya berhasil mendapatkan status transaksinya.
terima kasih semua