feat: 实现 iOS Apple Pay 内购支付功能

前端:
- 集成 in_app_purchase 插件,实现 IAP 支付流程
- 添加支付模块 (payments/) 处理产品获取、购买、验证
- 积分中心页面集成 Apple Pay 购买入口
- 设置页面重构: 关于/隐私/协议直接展示,删除 legal_center 子页面
- 修复欢迎引导页滚动检测阈值问题
- 修复解卦结果页 iOS 侧滑返回手势被阻止的问题
- 邀请码绑定按钮临时禁用(待后端实现)

后端:
- 新增 apple_iap_transactions 表记录交易
- 实现 Apple 服务器端验证 (App Store Server API)
- 支付成功后自动发放积分
- 支持 Sandbox/Production 环境切换
- 添加退款处理和交易状态机

协议:
- 更新积分流水协议,支持 purchase/refund 类型
- 新增 PAYMENT_* 错误码
This commit is contained in:
ZL-Q
2026-04-28 10:45:29 +08:00
parent b453ff7345
commit 87f92987b2
58 changed files with 3741 additions and 336 deletions
+11
View File
@@ -412,6 +412,15 @@ class _EryaoAppState extends State<EryaoApp> {
});
}
void _handleBalanceChanged(int newBalance) {
if (!mounted) {
return;
}
setState(() {
_creditsBalance = newBalance;
});
}
@override
Widget build(BuildContext context) {
return AnimatedBuilder(
@@ -451,6 +460,7 @@ class _EryaoAppState extends State<EryaoApp> {
_refreshProfile(userEmail: state.user!.email);
return HomeScreen(
account: state.user!.email,
userId: state.user!.id,
sessionStore: _sessionStore,
currentLocale: _locale,
profileSettings: _profileSettings,
@@ -467,6 +477,7 @@ class _EryaoAppState extends State<EryaoApp> {
onDeleteHistorySession: _handleHistorySessionDeleted,
onLogout: _authBloc.logout,
onDeleteAccount: _deleteAccount,
onBalanceChanged: _handleBalanceChanged,
);
}