Can not get FulfillmentOrders

When querying order details, if the order status is paid but not shipped, I cannot obtain fulfillmentOrders information.

In order to create fulfillment information, I need to first obtain the FulfillmentOrderId.

{
  "order": {
    "id": "gid://shopify/Order/5583905423444",
    "name": "#1019",
    "createdAt": "2025-08-23T09:06:17Z",
    "updatedAt": "2025-08-23T09:06:18Z",
    "note": null,
    "totalPriceSet": {
      "shopMoney": {
        "amount": "19.88",
        "currencyCode": "USD"
      }
    },
    "customer": {
      "id": "gid://shopify/Customer/7987241123924",
      "phone": "+16786000130"
    },
    "clientIp": "119.237.255.186",
    "currencyCode": "USD",
    "customerLocale": "en",
    "billingAddress": {
      "id": "gid://shopify/MailingAddress/14665773940820?model_name=Address",
      "name": "Cindy Ruiz",
      "company": null,
      "phone": "+16786000130",
      "country": "United States",
      "province": "Georgia",
      "provinceCode": "GA",
      "city": "Marietta",
      "address1": "221 Merritt St SE",
      "address2": null,
      "formattedArea": "Marietta GA, United States",
      "zip": "30060"
    },
    "shippingAddress": {
      "id": "gid://shopify/MailingAddress/14665773908052?model_name=Address",
      "name": "Cindy Ruiz",
      "company": null,
      "phone": "+16786000130",
      "country": "United States",
      "province": "Georgia",
      "provinceCode": "GA",
      "city": "Marietta",
      "address1": "221 Merritt St SE",
      "address2": null,
      "formattedArea": "Marietta GA, United States",
      "zip": "30060"
    },
    "displayAddress": {
      "id": "gid://shopify/MailingAddress/14665773908052?model_name=Address",
      "name": "Cindy Ruiz",
      "company": null,
      "phone": "+16786000130",
      "country": "United States",
      "province": "Georgia",
      "provinceCode": "GA",
      "city": "Marietta",
      "address1": "221 Merritt St SE",
      "address2": null,
      "formattedArea": "Marietta GA, United States",
      "zip": "30060"
    },
    "displayFulfillmentStatus": "UNFULFILLED",
    "lineItems": {
      "edges": [
        {
          "node": {
            "id": "gid://shopify/LineItem/13794159919188",
            "title": "120Pcs Seed Pod Kit Hydroponic Garden Growing Containers Grow Anything Kit with 30Pcs Baskets 30Pcs Lids 30Pcs Sponged 30Pcs Stickers",
            "quantity": 1,
            "variant": {
              "id": "gid://shopify/ProductVariant/42024745435220",
              "title": "White / One Size",
              "sku": "SKM103017722",
              "price": "19.32"
            },
            "product": {
              "id": "gid://shopify/Product/7669502115924",
              "handle": "120pcs-seed-pod-kit-hydroponic-garden-growing-containers-grow-anything-kit-with-30pcs-baskets-30pcs-lids-30pcs-sponged-30pcs-stickers-3"
            }
          }
        }
      ]
    },
    "fulfillments": [],
    "fulfillmentOrders": {
      "edges": []
    },
    "refunds": []
  }
}

Thanks for help!

Perhaps share a little more info, the full query you’re using, which version of the Admin API?

Thanks for your help!
The API version is 2025-04

$this->httpClient = new HttpClient([
            'base_uri' => "https://{$this->shopUrl}/admin/api/2025-04/",
            'headers' => [
                'X-Shopify-Access-Token' => $this->accessToken,
                'Content-Type' => 'application/json',
                'Accept' => 'application/json'
            ],
            'verify' => true,  // 启用 SSL 验证
            'curl' => [
                CURLOPT_SSL_VERIFYPEER => true,  // 验证对等证书
                CURLOPT_SSL_VERIFYHOST => 2      // 验证主机名
            ]
        ]);

Query is:

public function getOrderDetail($orderId)
    {
        try {
            $query = '
            query ($id: ID!) {
                order(id: $id) {
                    id
                    name
                    createdAt
                    updatedAt
                    note
                    totalPriceSet {
                        shopMoney {
                            amount
                            currencyCode
                        }
                    }
                    customer {
                        id
                        phone
                    }
                    clientIp
                    currencyCode
                    customerLocale
                    billingAddress {
                        id
                        name
                        company
                        phone
                        country
                        province
                        provinceCode
                        city
                        address1
                        address2
                        formattedArea
                        zip
                    }
                    shippingAddress {
                        id
                        name
                        company
                        phone
                        country
                        province
                        provinceCode
                        city
                        address1
                        address2
                        formattedArea
                        zip
                    }
                    displayAddress {
                        id
                        name
                        company
                        phone
                        country
                        province
                        provinceCode
                        city
                        address1
                        address2
                        formattedArea
                        zip
                    }
                    lineItems(first: 100) {
                        edges {
                            node {
                                id
                                title
                                quantity
                                variant {
                                    id
                                    title
                                    sku
                                    price
                                }
                                product {
                                    id
                                    handle
                                }
                            }
                        }
                    }
                    displayFulfillmentStatus
                    fulfillments {
                        id
                        status
                        trackingInfo {
                            company
                            number
                            url
                        }
                    }
                    fulfillmentOrders(first: 15) {
                        edges {
                            node {
                                id
                            }
                        }
                    }
                    refunds {
                        totalRefundedSet {
                            shopMoney {
                                amount
                                currencyCode
                            }
                        }
                    }
                }
            }
            ';

            $response = $this->client->query($query, ['id' => $orderId]);

            $order = $response['order'] ?? [];

            $totalPrice = $order['totalPriceSet']['shopMoney']['amount'] ?? '0.00';
            $currency = $order['totalPriceSet']['shopMoney']['currencyCode'] ?? '';

            return [
                'id' => $order['id'],
                'order_number' => $order['name'],
                'created_at' => $order['createdAt'],
                'total_price' => $totalPrice,
                'currency' => $currency,
                'client_ip' => $order['clientIp'] ?? '',
                'currency_code' => $order['currencyCode'] ?? '',
                'customer_locale' => $order['customerLocale'] ?? '',
                'note' => $order['note'] ?? null,
                'customer' => [
                    'id' => $order['customer']['id'] ?? null,
                    'name' => $order['customer']['displayName'] ?? '',
                    'email' => $order['customer']['email'] ?? '',
                    'phone' => $order['customer']['phone'] ?? ''
                ],
                'billingAddress' => [
                    'id' => $order['billingAddress']['id'] ?? null,
                    'company' => $order['billingAddress']['company'] ?? '',
                    'phone' => $order['billingAddress']['phone'] ?? '',
                    'country' => $order['billingAddress']['country'] ?? '',
                    'province' => $order['billingAddress']['province'] ?? '',
                    'city' => $order['billingAddress']['city'] ?? '',
                    'address1' => $order['billingAddress']['address1'] ?? '',
                    'address2' => $order['billingAddress']['address2'] ?? '',
                    'formattedArea' => $order['billingAddress']['formattedArea'] ?? '',
                ],
                'shipping_address' => [
                    'recipient' => $order['shippingAddress']['name'] ?? '',
                    'phone' => $order['shippingAddress']['phone'] ?? '',
                    'address' => trim(($order['shippingAddress']['address1'] ?? '') . ' ' . ($order['shippingAddress']['address2'] ?? '')),
                    'city' => $order['shippingAddress']['city'] ?? '',
                    'province' => $order['shippingAddress']['province'] ?? '',
                    'country' => $order['shippingAddress']['country'] ?? '',
                    'address_format' => $order['shippingAddress']['formattedArea'] ?? '',
                    'postal_code' => $order['shippingAddress']['zip'] ?? ''
                ],
                'display_address' => [
                    'id' => $order['displayAddress']['id'] ?? null,
                    'company' => $order['displayAddress']['company'] ?? '',
                    'country' => $order['displayAddress']['country'] ?? '',
                    'province' => $order['displayAddress']['province'] ?? '',
                    'city' => $order['displayAddress']['city'] ?? '',
                    'address' => trim(($order['displayAddress']['address1'] ?? '') . ' ' . ($order['displayAddress']['address2'] ?? '')),
                    'formattedArea' => $order['displayAddress']['formattedArea'] ?? '',
                ],
                'line_items' => array_map(function($item) {
                    return [
                        'id' => $item['node']['id'],
                        'title' => $item['node']['title'],
                        'quantity' => $item['node']['quantity'],
                        'variant' => [
                            'id' => $item['node']['variant']['id'] ?? null,
                            'title' => $item['node']['variant']['title'] ?? '',
                            'sku' => $item['node']['variant']['sku'] ?? '',
                            'price' => $item['node']['variant']['price'] ?? '0.00'
                        ],
                        'product_id' => $item['node']['product']['id'] ?? null
                    ];
                }, $order['lineItems']['edges'] ?? []),
                'displayFulfillmentStatus' => $order['displayFulfillmentStatus'],
                'fulfillments' => array_map(function($fulfillment) {
                    return [
                        'id' => $fulfillment['id'],
                        'status' => strtoupper($fulfillment['status']),
                        'tracking' => [
                            'company' => $fulfillment['trackingInfo']['company'] ?? '',
                            'number' => $fulfillment['trackingInfo']['number'] ?? '',
                            'url' => $fulfillment['trackingInfo']['url'] ?? ''
                        ]
                    ];
                }, $order['fulfillments'] ?? []),
                'refund_amount' => $order['refunds'][0]['totalRefundedSet']['shopMoney']['amount'] ?? '0.00'
            ];

        } catch (\Exception $e) {
            throw new \Exception("获取订单详情失败:" . $e->getMessage());
        }
    }

More information has been provided above. Thank you for your response.