QuarkChain adlı üyeden alıntı: mesajı görüntüle
Kart bilgileri vs. geliyor mu bilmiyorum, umarım sizin geliştirmeniz için bu örnek yeterli olacaktır.

<?php
// Gelen yapı
$orderData = json_decode(file_get_contents('test.json'));

$data = array();

foreach ($orderData->order as $order) {
    $detail = $order->{'@attributes'};

    $name = trim($detail->CustomerName);
    $last_name = (strpos($name, ' ') === false) ? '' : preg_replace('#.*\s([\w-]*)$#', '$1', $name);
    $first_name = trim( preg_replace('#'.preg_quote($last_name,'#').'#', '', $name ) );

    $input = array(
        'customer' => array(
            'first_name' => $first_name,
            'last_name' => $last_name
        ),
        'order' => array(
            'id' => $detail->Id,
            'detail' => array()
        ),
        'pay' => array(
            'card_name' => NULL
        )
    );

    foreach ($order->product as $product) {
        $product = $product->{'@attributes'};
        $input['order']['detail'][] = array(
            'id' => $product->id,
            'name' => $product->Name,
            'price' => $product->Price
        );
    }

    array_push($data, $input);
}

echo json_encode($data);

Hocam gerçekten teşekkür ederim ilgi alakanız için. Bir ricam olacak bu çıktıyı orders arrayına atıp 0. indis de 1. sipariş, 1. indis de 2. sipariş şekline çevirebilir miyiz. Önr: orders [0] şeklinde veriyi çektiğimde sadece ilk siparişin customer, order ve pay bilgileri gelsin. Baştan örnek kodu ben eksik istemişim kusura bakmayın lütfen.

Edit: Zaten istediğim şekilde yapmışsınız hocam, kodu uygulayınca gördüm. Emeğiniz için teşekkür ederim.