Hi team,
I’m creating the order refund request on rest API using curl in PHP. and getting an error
{ “errors”: { “transactions”: “expected Hash to be a Array” } }
This is my order refund function
function orderRefund($shopify, $order_id, $reason) {
$refundcalarray = array(
"currency" => "INR",
"shipping" => array("full_refund")
);
$datarefundcal = array("refund"=>$refundcalarray);
$datarefundcal = $shopify->rest_api('/admin/api/2024-01/orders/'.$order_id .'/refunds/calculate.json', $datarefundcal, 'POST');
$apioutputrefundcal = json_decode($datarefundcal['body'],true);
$transactiondata = $apioutputrefundcal['refund']['transactions'];
$refundtransactionarray = array();
$refundtransactionarray['parent_id'] = $transactiondata[0]['parent_id'];
$refundtransactionarray['amount'] = (float)$transactiondata[0]['maximum_refundable'];
$refundtransactionarray['kind'] = 'refund';
$refundtransactionarray['gateway'] = $transactiondata[0]['gateway'];
$refundarray = array(
"currency" => "INR",
"notify" => true,
"note" => (string)$reason,
"shipping" => array("full_refund" => true),
"transactions" => array($refundtransactionarray)
);
$datarefund = array("refund"=>$refundarray);
echo json_encode($datarefund, JSON_PRETTY_PRINT); echo "\n";
$refund = $shopify->rest_api('/admin/api/2024-01/orders/'.$order_id .'/refunds.json', $datarefund, 'POST');
$refund = json_decode($refund['body'], true);
echo json_encode($refund, JSON_PRETTY_PRINT); echo "\n";
return $response = array( "message" => $refund['refund'] );
}
This is my $datarefund Responce in json
{
"refund": {
"currency": "INR",
"notify": true,
"note": "test",
"shipping": {
"full_refund": true
},
"transactions": [
{
"parent_id": 7050521444583,
"amount": 474.05,
"kind": "refund",
"gateway": "Gokwik UPI"
}
]
}
}
And this is the $response Error
{
"errors": {
"transactions": "expected Hash to be a Array"
}
}
Where i’m doing mistakes?