EC-CUBE 至 Shopify + Next.js 遷移:日本電子商務指南 2026

如果您在日本運營 EC-CUBE 商店,並且一直在為維護自託管 PHP 單體應用而感到困擾,您並不孤單。過去兩年,我們幫助多家日本電子商務企業從 EC-CUBE(版本 2.x、3.x 和 4.x)遷移到使用 Next.js 構建的無頭 Shopify 店面。每一個都在事後說了同樣的話:「我們早就應該這樣做了。」

但這裡有個問題——這次遷移確實很複雜。EC-CUBE 在日本商務文化中根深蒂固。它處理諸如地址上的假名欄位、日本支付方式(便利店支付、運營商計費、通過 Pay-easy 的銀行轉帳)以及基於日本郵政區域的運費計算等事務。您無法只是轉個開關就遷移到 Shopify。您需要一個策略。

本指南是我在 2024 年進行第一次 EC-CUBE 遷移時希望擁有的策略文件。

EC-CUBE to Shopify + Next.js Migration: Japanese Ecommerce Guide 2026

目錄

為什麼在 2026 年從 EC-CUBE 遷移

EC-CUBE 近二十年來一直是日本電子商務的支柱。由 Lockon Co., Ltd.(現 EC-CUBE Co., Ltd.)開發,當選項有限時,它統治了日本市場。但形勢已經發生了巨大變化。

以下是推動企業遠離的原因:

安全維護是個噩夢。 EC-CUBE 2.x 多年前就已達到生命週期終止,但令人驚訝的是,仍有大量商店運行它。即使是 EC-CUBE 4.x 也需要持續修補。僅在 2024 年,EC-CUBE 4 就有三個重要安全公告,包括影響數千家商店的 SQL 注入漏洞 (CVE-2024-22345)。如果您是自託管,那就是您需要解決的問題。

PHP 託管成本不斷上升。 在日本運行 EC-CUBE(通常在 Sakura Internet、XSERVER 或 AWS Tokyo 上)意味著您要為基礎設施、SSL 證書、數據庫維護和服務器監控付費。一個典型的中等規模 EC-CUBE 商店每月僅在託管和維護上就花費 ¥50,000–¥200,000。

插件生態系統在萎縮。 EC-CUBE 插件市場一直在失去開發者。許多受歡迎的支付和運費插件尚未針對 EC-CUBE 4.2+ 進行更新。如果您的商店依賴第三方插件,您可能會發現自己被卡在舊版本上,沒有升級路徑。

移動性能很差。 大多數 EC-CUBE 主題是在響應式但臃腫的時代設計的。我們審計的 EC-CUBE 商店的平均 Lighthouse 分數在移動設備上徘徊在 25-40 之間。當核心網絡生命體徵直接影響您在日本的谷歌排名時,這還不夠好。

了解 EC-CUBE 架構

在進行遷移之前,您需要了解您正在遷移的內容。EC-CUBE 的架構因版本而異很大:

功能 EC-CUBE 2.x EC-CUBE 3.x EC-CUBE 4.x
框架 自定義 PHP Silex(Symfony 微框架) Symfony 4/5
數據庫 PostgreSQL/MySQL PostgreSQL/MySQL PostgreSQL/MySQL
模板引擎 Smarty Twig Twig
插件架構 鉤子/覆蓋 基於事件 Symfony 包
ORM 自定義 Doctrine Doctrine
API 無(自定義構建) 有限的 REST REST + 有限的 GraphQL

數據庫架構是真正有趣(和痛苦)的地方。EC-CUBE 將產品數據、客戶數據和訂單歷史存儲在規範化但 EC-CUBE 特定的架構中。dtb_productdtb_product_classdtb_customerdtb_order 表是您需要提取的核心表。

EC-CUBE 4.x 使用 Doctrine 實體,這使數據提取變得相對清晰。但如果您使用 2.x,請為原始 SQL 導出準備編碼問題(Shift-JIS 或 EUC-JP 遺留數據仍然很常見)。

EC-CUBE to Shopify + Next.js Migration: Japanese Ecommerce Guide 2026 - architecture

為什麼選擇 Shopify Plus + Next.js 進行日本電子商務

我想坦白說:Shopify 不是唯一的選擇。您可以遷移到其他平台,如 commercetools、Medusa,或甚至更新的日本平台,如 BASE 或 STORES.jp。但對於中到大型日本電子商務運營,Shopify Plus 與無頭 Next.js 前端相結合達到了甜蜜點。

Shopify 在日本的存在已經成熟。 自從開設東京辦公室並推出完整日語支持以來,Shopify 已解決了大多數日本特定的空白。Shopify Payments 現在原生支持 JCB 卡。管理界面已完全本地化。至關重要的是,Shopify Plus 支持日本稅收計算,包括 軽減税率(食品和飲料的減稅率)系統。

Next.js 提供了性能優勢。 使用 Next.js(使用 Shopify Storefront API 或 Hydrogen 的基礎數據層)構建的無頭店面允許您從邊緣提供靜態和服務器渲染的頁面。我們經常在 Next.js Shopify 構建中看到移動設備上的 Lighthouse 性能分數達到 90+。這是對 EC-CUBE 典型 30 多分的巨大飛躍。

Storefront API 處理複雜性。 Shopify 的 Storefront API(本文編寫時為 2025-04 版本)支持元字段、本地化內容、多貨幣和自定義產品選項——複製 EC-CUBE 靈活性所需的一切。

如果您正在評估基於 Next.js 的無頭架構是否對您的特定商店有意義,答案幾乎總是歸結為您的目錄大小和自定義需求。不到 100 個產品具有簡單變體?標準 Shopify 主題可能就可以了。複雜的產品配置、大量自定義或多個店面?選擇無頭。

遷移前審計和規劃

在接觸一行代碼之前,請先完成此審計:

1. 目錄複雜性映射

記錄 EC-CUBE 商店中的每個產品類型、變體結構和自定義字段。EC-CUBE 的 dtb_product_class 表可以保存不能 1:1 映射到 Shopify 變體模型(每個產品限制 100 個變體,3 個選項限制)的複雜變體組合。

如果您的產品超過 3 種選項類型(例如,尺寸、顏色、材料、刻字),您需要使用 Shopify 的組合清單功能(2024 年推出)或使用元字段和行項目屬性重新構造您的產品架構。

2. 客戶數據清單

EC-CUBE 存儲豐富的客戶數據,包括:

  • 姓名(姓氏/名字,分開的欄位)
  • フリガナ(姓名的假名)
  • 郵便番号(郵遞區號,帶自動地址填充)
  • 每個客戶多個送貨地址
  • 積分餘額(ポイント)
  • 帶有詳細訂單狀態跟蹤的購買歷史

Shopify 的客戶模型原生處理名稱欄位和多個地址。但積分/忠誠度計劃需要第三方解決方案,如 Smile.io 或基於自定義元字段的系統。

3. 集成清單

列出您的 EC-CUBE 商店連接的每個外部系統:

  • 支付閘道(GMO Payment Gateway、SB Payment Service、PAY.JP)
  • 運費 API(Yamato Transport、Sagawa Express、Japan Post)
  • 會計軟件(弥生会計、freee、MoneyForward)
  • 庫存/ERP 系統
  • 電子郵件營銷(Mailchimp、SendGrid 或日本服務如 Benchmark Email)

4. URL 結構文檔

從 EC-CUBE 商店導出每個 URL。這對 SEO 遷移至關重要。EC-CUBE 的默認 URL 模式如下所示:

/products/detail/{product_id}
/products/list?category_id={id}
/mypage/
/cart/

您需要為所有這些提供重定向映射。

數據遷移策略

以下是我們使用的遷移管道:

產品數據導出

對於 EC-CUBE 4.x,您可以使用 Doctrine 的 CLI 工具或編寫 Symfony 命令將產品導出為 JSON:

// EC-CUBE 4.x 產品導出命令
$products = $this->productRepository->findAll();
$exportData = [];

foreach ($products as $product) {
    $variants = [];
    foreach ($product->getProductClasses() as $class) {
        $variants[] = [
            'sku' => $class->getCode(),
            'price' => $class->getPrice02IncTax(),
            'stock' => $class->getStock(),
            'class_category1' => $class->getClassCategory1()?->getName(),
            'class_category2' => $class->getClassCategory2()?->getName(),
        ];
    }
    
    $exportData[] = [
        'id' => $product->getId(),
        'name' => $product->getName(),
        'description' => $product->getDescriptionDetail(),
        'variants' => $variants,
        'images' => array_map(fn($img) => $img->getFileName(), $product->getProductImages()->toArray()),
    ];
}

對於 EC-CUBE 2.x,您正在查看原始 SQL:

SELECT 
    p.product_id,
    p.name,
    p.main_comment,
    pc.product_code,
    pc.price02,
    pc.stock
FROM dtb_product p
JOIN dtb_product_class pc ON p.product_id = pc.product_id
WHERE p.del_flg = 0 AND pc.del_flg = 0;

注意字符編碼。如果您的 EC-CUBE 2.x 數據庫使用 EUC-JP,在導入任何地方之前轉換為 UTF-8:

mysqldump --default-character-set=eucjpms your_db | iconv -f EUC-JP -t UTF-8 > export_utf8.sql

導入到 Shopify

使用 Shopify 的 Admin API(REST 或 GraphQL)以編程方式創建產品。GraphQL 中的 productCreate 突變是您最好的朋友:

mutation productCreate($input: ProductInput!) {
  productCreate(input: $input) {
    product {
      id
      title
      variants(first: 100) {
        edges {
          node {
            id
            sku
          }
        }
      }
    }
    userErrors {
      field
      message
    }
  }
}

在 Node.js 或 Python 中構建遷移腳本,讀取導出的 EC-CUBE 數據並創建 Shopify 產品。包括速率限制——Shopify 的 API 對 REST 有 2 請求/秒限制,對 GraphQL 有基於成本的限制。

客戶遷移

通過 API 進行 Shopify 客戶導入效果很好,但要注意您無法遷移密碼。所有客戶在遷移後都需要重置密碼。發送一份精心編寫的電子郵件(當然要用日語)解釋遷移並提供密碼重置鏈接。

對於客戶數據本身,將 EC-CUBE 欄位映射到 Shopify:

EC-CUBE 欄位 Shopify 欄位 備註
name01(姓) last_name 對於日語反轉
name02(名) first_name 對於日語反轉
kana01(セイ) 元字段 無原生假名欄位
kana02(メイ) 元字段 無原生假名欄位
email email 直接映射
point 元字段或忠誠度應用 需要自定義處理
addr01(都道府県) province 映射到 Shopify 省份代碼
addr02(市区町村) city + address1 可能需要連接

訂單歷史

遷移歷史訂單是可選的,但建議用於客戶服務連續性。使用 Shopify 的 Order API,以 "financial_status": "paid""fulfillment_status": "fulfilled" 為已完成訂單創建訂單。

處理日本支付方式

這是事情變得棘手的地方。日本消費者期望特定的支付選項在西方電子商務中並不標準。

Shopify Payments 現在在日本支持信用卡,包括 JCB、Visa、Mastercard 和 American Express。Shopify Plus 的處理費為 3.25%–3.4% + ¥0 每筆交易。

對於其他支付方式:

支付方式 Shopify 上的解決方案 備註
コンビニ決済(便利店) KOMOJU、GMO Payment Gateway 應用 日本在線訂單的約 15% 必不可少
代引き(貨到付款) Shopify 原生 COD 內置,效果很好
銀行振込(銀行轉帳) 手動支付方式 Shopify 原生支持
キャリア決済(運營商計費) KOMOJU docomo、au、SoftBank
PayPay PayPay for Shopify 應用 日本最受歡迎的二維碼支付
Amazon Pay Amazon Pay 應用 日本採用率高
後払い(先買後付) Paidy、atone 在日本非常受歡迎

KOMOJU 值得特別提及。它已成為 Shopify 日本商店的事實上的支付閘道,通過單一集成支持便利店支付、銀行轉帳、運營商計費等。他們的 Shopify Plus 集成是可靠的,我們沒有遇到重大問題。

運費和履行映射

EC-CUBE 通常使用 Yamato Transport(ヤマト運輸)、Sagawa Express(佐川急便)和 Japan Post(日本郵便)的插件。這些插件處理運費標籤生成、追蹤號碼集成以及交貨時間段選擇(配達時間指定)。

在 Shopify 上,您有幾個選擇:

  • Ship&co ——日本開發的運費應用,與所有主要日本運營商集成。以正確的格式處理標籤打印。
  • Shopify Shipping ——截至 2025 年,日本運營商支持有限,但正在改進。
  • 自定義 Carrier Service API ——如果您有複雜的基於區域的定價,請構建您自己的運費計算器。

交貨時間段選擇(午前中、12-14時、14-16時 等)對日本客戶至關重要。這需要 Shopify Plus 上的自定義結帳擴展或第三方應用,如 配送日時指定。

構建 Next.js 店面

對於前端,我們使用 Next.js 15 與 App Router 和 Server Components。以下是我們的典型堆棧:

Next.js 15(App Router)
├── Shopify Storefront API(GraphQL)
├── next-intl(用於日語 i18n)
├── Tailwind CSS 4
├── Framer Motion(動畫)
└── Vercel(部署,東京區域邊緣)

構建使用 Next.js 的日本店面時我們學到的一些東西:

字體優化

日本網絡字體很重。Noto Sans JP 常規字重單獨就有 ~1.8MB。使用帶有 subsetsnext/font 並考慮可變字體:

import { Noto_Sans_JP } from 'next/font/google';

const notoSansJP = Noto_Sans_JP({
  subsets: ['latin'],
  weight: ['400', '500', '700'],
  display: 'swap',
  preload: true,
});

更好的是,為非關鍵文本使用 font-display: optional 並提供系統字體堆棧作為後備:"Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif

產品頁面的 Server Components

在 Server Components 中獲取產品數據以消除客戶端加載狀態:

// app/products/[handle]/page.tsx
export default async function ProductPage({ params }: { params: { handle: string } }) {
  const product = await shopifyFetch({
    query: PRODUCT_QUERY,
    variables: { handle: params.handle },
  });

  return (
    <div>
      <ProductGallery images={product.images} />
      <ProductDetails product={product} />
      <AddToCartButton variantId={product.variants[0].id} />
    </div>
  );
}

我們使用此模式構建所有無頭 Shopify 店面,與傳統 Liquid 主題甚至 Hydrogen 相比,性能差異是明顯的。

SEO 遷移和 URL 保留

這是讓我在遷移項目中夜不能寐的部分。日本電子商務商店通常積累了多年的 SEO 股權,遷移不當可能會導致有機流量下降數月。

重定向策略

創建完整的重定向映射。每一個。單一。URL。在 next.config.js 中為靜態模式使用重定向:

// next.config.js
module.exports = {
  async redirects() {
    return [
      {
        source: '/products/detail/:id',
        destination: '/products/:handle',
        permanent: true,
      },
      {
        source: '/products/list',
        destination: '/collections/:collection',
        permanent: true,
      },
    ];
  },
};

對於動態重定向(將 EC-CUBE 產品 ID 映射到 Shopify 句柄),使用中間件或存儲在數據庫或 KV 存儲中的重定向查詢表。

結構化數據

EC-CUBE 商店很少有適當的結構化數據。利用此機會實施 ProductBreadcrumbListOrganizationFAQPage 架構。日本谷歌 SERP 大量提供豐富結果。

日本 SEO 特定事項

  • 將標題標籤保持在日語中 30 個字符以下(不是英語中的 60)
  • 元描述:80-120 日語字符
  • 確保適當的 hreflang 標籤(如果您有多語言頁面)
  • 將站點地圖提交到 Google Search Console 和 Bing Webmaster Tools(Bing 在日本具有有意義的市場份額)

日本特定的用戶體驗考慮

日本電子商務用戶體驗具有西方開發者經常忽視的文化差異:

  • 信息密度 ——日本消費者期望在頁面上看到更多產品信息。不要過度最小化。
  • 信任信號 ——突出顯示運費政策、退貨政策和公司信息。日本購物者進行深入研究。
  • 郵遞區號自動填充 ——使用日本郵政 API 或 zipaddress.js 等庫實施 郵便番号 → 地址自動完成。
  • 敬語 ——在 UI 文案中使用適當的敬語(敬語)。非正式語言會顯得不尊重。
  • Line 消息集成 ——LINE 在日本有 9600 萬月活躍用戶。集成 LINE Login 和 LINE 通知。

性能基準:EC-CUBE vs 無頭 Shopify

以下是我們在 2025 年第一季度為日本時尚零售商(~3,000 個 SKU)完成的遷移的真實數據:

指標 EC-CUBE 4.2(之前) Next.js + Shopify(之後) 改進
Lighthouse 性能(移動) 34 92 +170%
LCP 4.8s 1.2s -75%
FID/INP 380ms 45ms -88%
CLS 0.24 0.02 -92%
首字節時間 1.8s 0.18s -90%
頁面重量(產品頁面) 3.2MB 680KB -79%
轉化率 1.8% 2.9% +61%
月託管成本 ¥180,000 ¥45,000 -75%

單是轉化率的改進就在三個月內支付了整個遷移的費用。並非每個項目都能看到如此劇烈的數字,但這種量級的性能改進始終會推動轉化。

時間表和成本預期

讓我們對這次遷移需要多少時間進行現實的評估:

商店規模 產品 時間表 預算範圍(¥)
<500 8-12 週 ¥3,000,000-5,000,000
500-5,000 12-20 週 ¥5,000,000-12,000,000
5,000+ 20-32 週 ¥12,000,000-25,000,000+

這些範圍包括設計、開發、數據遷移、QA 和啟動支持。它們假設您與有經驗的團隊合作。如果您的團隊以前沒有進行過日本電子商務遷移,請為學習曲線將時間表和預算增加 30-50%。

我們通過無頭 CMS 和商務開發實踐來處理跨越此光譜的項目。如果您想了解具體情況,請與我們聯繫,我們會給您一個誠實的評估。

遷移後的月度持續成本通常如下所示:

  • Shopify Plus:$2,300/月(~¥345,000)
  • Vercel Pro:$20/月 每位團隊成員
  • KOMOJU:僅交易費
  • Ship&co:¥2,000/月基費
  • 總計:~¥380,000-450,000/月 vs. 具有同等功能的自託管 EC-CUBE 的 ¥400,000-800,000/月

有關我們如何構造項目定價的透明說明,請查看我們的定價頁面

常見問題

我可以直接從 EC-CUBE 2.x 遷移到 Shopify + Next.js 嗎? 可以,但 EC-CUBE 2.x 遷移由於舊數據庫架構、潛在的 Shift-JIS/EUC-JP 編碼問題以及缺乏現代 ORM 而更複雜。預留額外時間進行數據清理和轉換。我們建議先導出為中性格式(UTF-8 中的 CSV 或 JSON),然後為 Shopify 構建導入腳本。

遷移 EC-CUBE 時,我會失去谷歌排名嗎? 如果您正確處理重定向,則不會。為每個 URL 實施 301 重定向,維護 XML 站點地圖,並保持標題標籤和元描述一致。期望暫時波動(2-4 週),因為谷歌重新爬取,但排名應該恢復,並且由於改進的 Core Web Vitals 分數,排名通常會上升。

Shopify 是否支持日本稅收計算,包括減稅率? 是的。Shopify 支持日本的消費稅系統,包括 軽減税率(食品和飲料的 8% 減稅率 vs. 標準 10% 稅率)。您可以為每個產品集合配置稅率,Shopify 處理計算,包括符合發票資格的收據要求(インボイス制度)。

遷移到 Shopify 後,如何處理 EC-CUBE 的積分系統? Shopify 沒有與 EC-CUBE 內置 ポイント 功能等效的原生積分系統。您最好的選擇是 Smile.io(支持日語)、LoyaltyLion 或使用 Shopify 元字段和無服務器函數的自定義解決方案。對於現有積分餘額,將它們作為客戶記錄上的元字段遷移,並在 Next.js 結帳中構建兌換流程。

Hydrogen 比 Next.js 更好用於無頭 Shopify 店面嗎? 這取決於。Hydrogen(Shopify 基於 Remix 構建的 React 框架)與 Shopify 緊密集成,並為您提供一些很好的內置商務基元。但 Next.js 擁有更大的生態系統、更多社區資源、Vercel 上更好的 Edge Runtime 支持,如果您曾想交換商務後端,則更具靈活性。對於日本電子商務,Next.js 的中間件功能和 i18n 路由給了它優勢。我們兩者都構建過,對於大多數項目都傾向 Next.js——查看我們的 Next.js 開發功能

在遷移期間,我可以並行運行 EC-CUBE 和新 Shopify 商店嗎? 絕對可以,我們推薦。同時運行兩個系統 2-4 週。使用您的 DNS 或反向代理逐漸轉移流量。這讓您驗證訂單正確流動、支付正確處理以及庫存保持同步,然後完全切割。

關於 EC-CUBE 的郵件雜誌(メールマガジン)功能呢? EC-CUBE 有許多商店依賴的內置電子郵件通訊系統。將訂閱者列表遷移到專用電子郵件營銷平台,如 Klaviyo(具有出色的 Shopify 集成),或如果您需要日語支持和模板,請考慮 Benchmark Email 或 SendGrid。遷移很直接——從 EC-CUBE 的 dtb_customer 表導出電子郵件地址和同意日期,並導入到您的新平台。

實際數據遷移需要多長時間? 遷移腳本執行本身通常很快——大多數商店需要幾個小時。耗時的部分是構建和測試遷移腳本、驗證數據完整性以及處理邊界情況(缺少圖像的產品、無效電子郵件格式的客戶、具有自定義狀態的訂單)。對於具有 3,000 個產品和 50,000 個客戶的商店,預期 2-3 週的遷移開發和測試時間。