Ciyashop – 基于 WooCommerce 的 Android 电商应用项目分析
Ciyashop – 基于 WooCommerce 的 Android 电商应用项目分析
项目概述
Ciyashop 是一个功能完整的原生 Android 电商应用,与 WooCommerce 网站深度集成。通过 WordPress REST API 和 OAuth 1.0a 认证,实现移动端与 WooCommerce 商店的实时数据同步。
- 平台: Android (Android Studio)
- 开发语言: Java
- 后端: WordPress + WooCommerce + PGS Woo API 插件
- API: WordPress REST API + OAuth 1.0a
- 最低 Android 版本: Android 5.0+ (API 21+)
- 版本: 4.4.1
—
核心功能
1. 电商核心功能
- 产品浏览: 分类浏览、产品列表、产品详情
- 购物车: 添加/删除商品、数量调整、购物车持久化
- 结账流程: 地址管理、配送方式、支付方式
- 订单管理: 订单历史、订单详情、订单追踪
- 支付集成: 支持多种支付方式(PayPal、Stripe等)
- 优惠券: 优惠券应用和验证
2. 用户系统
- 用户注册/登录: 邮箱注册、社交登录
- 个人中心: 账户信息、地址管理
- 愿望清单: 收藏商品、愿望清单同步
- 最近浏览: 浏览历史记录
- 积分系统: 奖励积分、积分兑换
- 钱包功能: 电子钱包、充值、交易记录
3. 产品展示
- 产品分类: 多级分类、分类筛选
- 产品搜索: 关键词搜索、筛选器
- 产品详情: 图片画廊、变体选择、评价展示
- 相关产品: 推荐商品、交叉销售
- 快速查看: 产品快速预览
4. 营销功能
- 首页布局: 动态首页、Banner轮播、特色产品
- 促销活动: 特价商品、限时优惠
- 博客集成: 博客文章、内容营销
- 推送通知: Firebase 推送、促销通知
- 社交分享: 产品分享、邀请好友
5. 多供应商/多卖家
- 卖家信息: 卖家资料、卖家产品
- 联系卖家: 站内消息、卖家沟通
- 卖家评价: 卖家评分、评价展示
6. 本地化功能
- 多语言支持: WPML 集成、多语言切换
- 货币切换: 多货币支持
- 国家/地区: 地区选择、本地化配送
7. 其他功能
- 门店查找: 实体店位置、地图导航
- 产品下载: 可下载产品支持
- 产品视频: 视频展示
- 图片查看器: 产品图片放大查看
- Scratch Card: 刮刮卡营销活动
—
项目结构
Ciyashop/
├── app/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/example/ciyashop/
│ │ │ │ ├── activity/ # Activity 类
│ │ │ │ │ ├── HomeActivity.java # 首页
│ │ │ │ │ ├── ProductDetailActivity.java # 产品详情
│ │ │ │ │ ├── CartActivity.java # 购物车
│ │ │ │ │ ├── CheckoutActivity.java # 结账
│ │ │ │ │ ├── MyOrderActivity.java # 我的订单
│ │ │ │ │ ├── CategoryListActivity.java # 分类列表
│ │ │ │ │ ├── SearchFromHomeActivity.java # 搜索
│ │ │ │ │ ├── WishListActivity.java # 愿望清单
│ │ │ │ │ ├── AccountActivity.java # 账户中心
│ │ │ │ │ ├── LogInActivity.java # 登录
│ │ │ │ │ ├── SignUpActivity.java # 注册
│ │ │ │ │ ├── BlogActivity.java # 博客
│ │ │ │ │ ├── StoreFinderActivity.java # 门店查找
│ │ │ │ │ └── ... (共50+个Activity)
│ │ │ │ ├── adapter/ # RecyclerView 适配器
│ │ │ │ │ ├── CategoryAdapter.java
│ │ │ │ │ ├── ProductAdapter.java
│ │ │ │ │ ├── CartAdapter.java
│ │ │ │ │ ├── OrderAdapter.java
│ │ │ │ │ └── ...
│ │ │ │ ├── customview/ # 自定义视图
│ │ │ │ │ ├── bounceview/ # 弹跳效果
│ │ │ │ │ ├── contrycodepicker/ # 国家代码选择
│ │ │ │ │ ├── edittext/ # 自定义EditText
│ │ │ │ │ ├── htmltextview/ # HTML文本显示
│ │ │ │ │ ├── like/ # 点赞动画
│ │ │ │ │ ├── pinchtozoom/ # 图片缩放
│ │ │ │ │ ├── progressbar/ # 进度条
│ │ │ │ │ ├── rangeseekbar/ # 范围选择器
│ │ │ │ │ ├── roundedimageview/ # 圆角图片
│ │ │ │ │ ├── scratchview/ # 刮刮卡
│ │ │ │ │ └── swipeview/ # 滑动视图
│ │ │ │ ├── fcm/ # Firebase 云消息
│ │ │ │ ├── helper/ # 辅助类
│ │ │ │ │ └── DatabaseHelper.java # SQLite数据库
│ │ │ │ ├── interfaces/ # 接口定义
│ │ │ │ ├── javaclasses/ # Java工具类
│ │ │ │ │ └── SyncWishList.java # 愿望清单同步
│ │ │ │ ├── model/ # 数据模型
│ │ │ │ │ ├── Home.java
│ │ │ │ │ ├── CategoryList.java
│ │ │ │ │ ├── Product.java
│ │ │ │ │ ├── Cart.java
│ │ │ │ │ ├── Order.java
│ │ │ │ │ └── ...
│ │ │ │ └── utils/ # 工具类
│ │ │ │ ├── BaseActivity.java
│ │ │ │ ├── Config.java
│ │ │ │ ├── Constant.java
│ │ │ │ ├── RequestParamUtils.java
│ │ │ │ └── Utils.java
│ │ │ ├── res/ # 资源文件
│ │ │ │ ├── layout/ # 布局文件
│ │ │ │ ├── drawable/ # 图片资源
│ │ │ │ ├── values/ # 值资源
│ │ │ │ └── ...
│ │ │ └── assets/ # 资产文件
│ │ │ └── font/ # 字体文件
│ │ └── build.gradle # 模块构建配置
│ └── build.gradle # 应用构建配置
├── gradle/ # Gradle 包装器
├── build.gradle # 项目构建配置
├── settings.gradle # 项目设置
└── ...
后端插件 (pgs-woo-api/): ├── pgs-woo-api.php # 主插件文件 ├── inc/ # 包含文件 │ ├── tgm-plugin-activation/ # TGM 插件激活 │ │ └── core/plugins/ │ │ └── rest-api-oauth1.0.3.0.zip # OAuth 1.0 插件 │ └── … ├── readme.txt # 插件文档 └── wpml-config.xml # WPML 配置
—
核心模块详解
1. 活动层 (Activities)
首页 (HomeActivity)
public class HomeActivity extends BaseActivity
implements OnItemClickListener, OnResponseListner {
// 首页组件
private BannerViewPagerAdapter bannerViewPagerAdapter; // Banner轮播
private CategoryAdapter categoryAdapter; // 分类适配器
private DynamicItemAdapter dynamicItemAdapter; // 动态内容
private RecentViewAdapter recentViewAdapter; // 最近浏览
private TopRatedProductAdapter topRatedProductAdapter; // 热门产品
// 加载首页数据
private void getHomeData() {
PostApi postApi = new PostApi(this, "getHomeData", this);
postApi.callPostApi();
}
}
产品详情 (ProductDetailActivity)
- 产品图片画廊
- 产品信息展示
- 变体选择(颜色、尺寸等)
- 加入购物车
- 产品评价
- 相关产品推荐
购物车 (CartActivity)
- 购物车商品列表
- 数量调整
- 删除商品
- 优惠券应用
- 结算按钮
结账 (CheckoutActivity)
- 配送地址选择
- 配送方式选择
- 支付方式选择
- 订单备注
- 订单确认
2. 适配器层 (Adapters)
各种 RecyclerView 适配器:
- CategoryAdapter: 分类列表
- ProductAdapter: 产品列表
- CartAdapter: 购物车商品
- OrderAdapter: 订单列表
- BannerViewPagerAdapter: Banner轮播
- NavigationDrawerAdapter: 侧边导航
3. 自定义视图 (Custom Views)
丰富的自定义 UI 组件:
- BounceView: 弹跳动画效果
- CountryCodePicker: 国家代码选择器
- HtmlTextView: HTML 文本渲染
- Like Button: 点赞动画按钮
- PinchToZoom: 图片缩放
- RangeSeekBar: 价格范围选择
- RoundedImageView: 圆角图片
- ScratchView: 刮刮卡效果
- SwipeView: 滑动操作
4. 数据模型 (Models)
核心数据模型:
// 首页数据
public class Home {
private List banners;
private List categories;
private List featuredProducts;
private List recentProducts;
private List topRatedProducts;
}
// 产品 public class Product { private int id; private String name; private String price; private String regularPrice; private String salePrice; private List images; private List variations; private List attributes; }
// 购物车 public class Cart { private int productId; private String productName; private int quantity; private String price; private List cartMeta; }
// 订单 public class Order { private int id; private String orderNumber; private String status; private String total; private String dateCreated; private List lineItems; }
5. 网络层 (API Call)
使用自定义 API 库 (Ciyashop Library):
// GET 请求
GetApi getApi = new GetApi(context, "getProducts", this);
getApi.callGetApi();
// POST 请求 PostApi postApi = new PostApi(context, “addToCart”, this); postApi.callPostApi(params);
// 响应回调 public interface OnResponseListner { void onResponse(String response, String methodName); }
6. 数据库层 (SQLite)
本地数据持久化:
public class DatabaseHelper extends SQLiteOpenHelper {
// 购物车表
private static final String TABLE_CART = "cart";
// 最近浏览表
private static final String TABLE_RECENT = "recent";
// 愿望清单表
private static final String TABLE_WISHLIST = "wishlist";
public void addToCart(CartItem item);
public List getCartItems();
public void updateCartItem(int productId, int quantity);
public void deleteCartItem(int productId);
}
7. 工具类 (Utils)
常用工具方法:
public class Utils {
// 价格格式化
public static String formatPrice(String price);
// 日期格式化
public static String formatDate(String date);
// 图片加载
public static void loadImage(Context context, String url, ImageView imageView);
// 网络检测
public static boolean isNetworkAvailable(Context context);
// 显示Toast
public static void showToast(Context context, String message);
}
—
后端插件 (PGS Woo API)
功能概述
WordPress 插件,扩展 WooCommerce REST API,为移动应用提供专用接口。
核心功能
- OAuth 1.0a 认证: 安全的 API 认证
- 首页动态布局: 可配置的首页内容
- 多语言支持: WPML 集成
- 推送通知: Firebase 集成
- 用户管理: 扩展用户资料
- 订单管理: 增强订单接口
API 端点
/wp-json/pgs-woo-api/v1/home # 首页数据
/wp-json/pgs-woo-api/v1/products # 产品列表
/wp-json/pgs-woo-api/v1/categories # 分类列表
/wp-json/pgs-woo-api/v1/cart # 购物车操作
/wp-json/pgs-woo-api/v1/orders # 订单管理
/wp-json/pgs-woo-api/v1/user # 用户资料
/wp-json/pgs-woo-api/v1/wishlist # 愿望清单
—
核心业务逻辑
1. 产品浏览流程
打开应用 → 加载首页 → 获取分类 → 选择分类 → 加载产品列表 → 选择产品 → 显示产品详情
2. 购物车流程
浏览产品 → 加入购物车 → 本地存储 → 打开购物车 → 显示商品 → 调整数量 → 结算
3. 结账流程
购物车 → 选择地址 → 选择配送方式 → 选择支付方式 → 创建订单 → 支付 → 订单确认
4. 用户认证流程
登录/注册 → OAuth 认证 → 获取 Token → 存储本地 → API 请求携带 Token
5. 愿望清单同步
登录用户 → 获取服务器愿望清单 → 合并本地数据 → 同步到服务器
—
核心代码示例
首页数据加载
private void getHomeData() {
if (Utils.isInternetConnected(this)) {
PostApi postApi = new PostApi(this, "getHomeData", this);
postApi.callPostApi();
} else {
// 从缓存加载
loadFromCache();
}
}
@Override public void onResponse(String response, String methodName) { if (methodName.equals(“getHomeData”)) { Gson gson = new Gson(); Home homeData = gson.fromJson(response, Home.class); // 更新UI updateBanner(homeData.getBanners()); updateCategories(homeData.getCategories()); updateProducts(homeData.getFeaturedProducts()); } }
添加到购物车
public void addToCart(Product product, int quantity, List variations) {
// 检查是否已存在
CartItem existingItem = databaseHelper.getCartItem(product.getId());
if (existingItem != null) {
// 更新数量
existingItem.setQuantity(existingItem.getQuantity() + quantity);
databaseHelper.updateCartItem(existingItem);
} else {
// 新增商品
CartItem newItem = new CartItem();
newItem.setProductId(product.getId());
newItem.setProductName(product.getName());
newItem.setQuantity(quantity);
newItem.setPrice(product.getPrice());
newItem.setVariations(variations);
databaseHelper.addToCart(newItem);
}
// 更新购物车数量
updateCartCount();
// 显示提示
Utils.showToast(this, "Added to cart");
}
产品图片查看
// 使用 PinchToZoom 实现图片缩放
pinchToZoomImageView.setImageURI(Uri.parse(imageUrl));
pinchToZoomImageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// 处理缩放手势
return gestureDetector.onTouchEvent(event);
}
});
—
技术栈
Android 端
- Android SDK: Android 开发框架
- AndroidX: 支持库
- Material Design: UI 设计
- Glide: 图片加载
- Gson: JSON 解析
- Firebase: 推送通知、分析
- SQLite: 本地数据库
- OAuth 1.0a: API 认证
后端
- WordPress: CMS 平台
- WooCommerce: 电商插件
- PGS Woo API: 移动应用 API 插件
- WP REST API: WordPress REST API
- OAuth 1.0a Server: 认证插件
- WPML: 多语言插件(可选)
—
依赖库
dependencies {
// AndroidX
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
implementation 'androidx.recyclerview:recyclerview:1.3.0'
// 图片加载
implementation 'com.github.bumptech.glide:glide:4.15.1'
// JSON 解析
implementation 'com.google.code.gson:gson:2.10.1'
// Firebase
implementation 'com.google.firebase:firebase-messaging:23.1.2'
implementation 'com.google.firebase:firebase-analytics:21.2.0'
// 网络请求
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
// 其他
implementation 'androidx.viewpager2:viewpager2:1.0.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
}
—
配置说明
1. API 配置 (Config.java)
public class Config {
// WordPress 站点 URL
public static final String BASE_URL = "https://your-store.com";
// API 路径
public static final String API_URL = BASE_URL + "/wp-json/pgs-woo-api/v1/";
// OAuth 配置
public static final String CONSUMER_KEY = "your_consumer_key";
public static final String CONSUMER_SECRET = "your_consumer_secret";
// Firebase
public static final String FCM_SERVER_KEY = "your_fcm_key";
}
2. 插件安装
- 安装并配置 WooCommerce
- 安装 WP REST API OAuth 1.0a Server 插件
- 安装 PGS Woo API 插件
- 配置 OAuth 应用
- 获取 Consumer Key 和 Secret
—
总结
Ciyashop 是一个企业级的 WooCommerce 移动电商解决方案:
- 功能完整: 涵盖电商所有核心功能
- 原生体验: 原生 Android 应用,性能优秀
- 实时同步: 与 WooCommerce 实时数据同步
- 可定制: 丰富的自定义视图和布局
- 多语言: 支持 WPML 多语言
- 营销工具: 推送通知、优惠券、积分系统
- 扩展性强: 插件架构,易于扩展
适合已有 WooCommerce 网站的商家,快速部署移动电商应用,或者作为独立电商应用开发基础。