┌─────────────────────────────────────────────────────────────┐
│ 1. 页面加载 - 初始化 UseePay SDK │
│ UseePay(publicKey) → elements(options) │
└────────────────────────┬────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 2. 创建并挂载 Express Checkout 元素 │
│ elements.create('expressCheckout', options) │
│ expressCheckoutElement.mount(domId) │
└────────────────────────┬────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 3. ready 事件触发 │
│ → 检查可用的支付方式 (Apple Pay / Google Pay) │
└────────────────────────┬────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 4. 客户点击快捷支付按钮 │
│ → click 事件触发 (1秒内完成) │
│ → 可选:动态更新 lineItems / shippingRates / applePay │
└────────────────────────┬────────────────────────────────────┘
↓
┌───────────────┴───────────────┐
│ 是否需要配送? │
└───────┬───────────────┬───────┘
│ 是 │ 否
↓ ↓
┌──────────────────────┐ │
│ 5a. 客户选择/更改地址 │ │
│ shippingAddressChange│ │
│ (20秒内完成) │ │
│ → 返回配送方式 │ │
└──────────┬───────────┘ │
↓ │
┌──────────────────────┐ │
│ 5b. 客户选择配送方式 │ │
│ shippingRateChange │ │
│ (20秒内完成) │ │
└──────────┬───────────┘ │
└────────┬────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 6. 客户确认支付 - confirm 事件触发 │
│ → 获取 billingDetails 和 shippingAddress │
└────────────────────────┬────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 7. 调用后端 API 创建支付意图 │
│ POST /api/create-payment-intent │
│ → 返回 paymentIntentId 和 clientSecret │
└────────────────────────┬────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 8. 确认支付 │
│ useepay.confirmPayment({ elements, paymentIntentId, │
│ clientSecret }) │
└────────────────────────┬────────────────────────────────────┘
↓
┌───────────────┴───────────────┐
│ 支付结果 │
└───────┬───────────────┬───────┘
│ 成功 │ 失败
↓ ↓
┌──────────────────┐ ┌──────────────────┐
│ 9a. 重定向到 │ │ 9b. 显示错误信息 │
│ 成功页面 │ │ 让客户重试 │
└──────────────────┘ └──────────────────┘