Files
eSIM-Tools/docs/reference/README_giffgaff_esim.md
Abner 404fc88332 🧹 chore(cleanup): 移除未使用的模块化版本并修复文档问题
- 删除 src/js/modules/giffgaff/ 和 src/js/modules/simyo/ 目录(未完成的重构尝试)
- 移除 webpack.config.js 中未使用的别名配置和入口文件
- 修复文档错链:移除对不存在的 DEVELOPMENT_GUIDE.md 引用
- 修复文档错链:将 CORS_SOLUTION.md 中的 simyo_proxy_server.js 更正为 server.js
- 更新 tests/CLAUDE.md 中 Jest 版本为 30.3.0
- 移除 src/simyo/MODULE_ARCHITECTURE.md 中过时的重构计划
- 精简 docs/reference/ 下的技术文档,移除与根 README 重复的内容
- 删除已弃用的 .serena/ 工具目录
- 更新根 CLAUDE.md 反映清理后的新目录结构
- 删除 3 个引用已删除模块的测试文件

所有测试通过,构建成功,质量检查和安全检查均通过。
2026-05-18 21:58:42 +08:00

2.7 KiB
Raw Blame History

Giffgaff eSIM 工具 - 技术参考

基于 Giffgaff-swap-esim.json Postman 脚本构建的完整 eSIM 设备更换网页工具。

📁 文件说明

主要文件

  • giffgaff_modular.html - eSIM 设备更换工具(生产版本,模块化架构)
  • tests/test_giffgaff_esim.html - 综合测试页面(开发/测试版本)
  • Giffgaff-swap-esim.json - 原始 Postman 脚本(参考文档)
  • giffgaff.html - 原有的简化版本(参考)

参考文件

  • simyo.html - Simyo eSIM 工具(其他运营商参考)
  • Simyo ESIM V2.postman_collection.json - Simyo API 脚本

🔧 技术架构

前端技术栈

  • HTML5 - 语义化结构
  • CSS3 - 响应式设计Bootstrap 5.3.0
  • JavaScript (ES6+) - 现代 JavaScript 特性
  • Font Awesome 6.0.0 - 图标库

API 集成

  • OAuth 2.0 PKCE - 安全认证流程
  • Giffgaff ID API - 用户认证和 MFA
  • Giffgaff GraphQL API - 业务逻辑处理
  • QR Code API - 二维码生成服务(优先 https://qrcode.show/,备选 quickchart.iochart.googleapis.com

关键 API 端点

const apiEndpoints = {
    mfaChallenge: "https://id.giffgaff.com/v4/mfa/challenge/me",
    mfaValidation: "https://id.giffgaff.com/v4/mfa/validation",
    graphql: "https://publicapi.giffgaff.com/gateway/graphql",
    qrcode: "https://qrcode.show/"
};

📝 开发说明

核心组件架构

// 全局状态管理
const appState = {
    accessToken: "",      // OAuth 访问令牌
    codeVerifier: "",     // PKCE 代码验证器
    emailCodeRef: "",     // 邮件验证引用
    emailSignature: "",   // MFA 签名
    memberId: "",         // 会员 ID
    esimSSN: "",         // eSIM 序列号
    lpaString: "",        // LPA 下载字符串
    currentStep: 1        // 当前步骤
};

主要函数说明

  • generateCodeVerifier() - 生成 PKCE 代码验证器
  • generateCodeChallenge() - 生成 PKCE 代码挑战
  • showSection(stepNumber) - 显示指定步骤
  • showStatus(element, message, type) - 显示状态信息
  • generateQRCode(data) - 生成二维码

GraphQL 查询示例

# 获取会员信息
query getMemberProfileAndSim {
    memberProfile {
        id
        memberName
        __typename
    }
    sim {
        phoneNumber
        status
        __typename
    }
}

# 预订 eSIM
mutation reserveESim($input: ESimReservationInput!) {
    reserveESim: reserveESim(input: $input) {
        id
        esim {
            ssn
            activationCode
            __typename
        }
        __typename
    }
}

文档版本: 1.1.0 最后更新: 2026-05-18 维护者: eSIM Tools Team