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:
@@ -0,0 +1,56 @@
|
||||
class VerifyTransactionRequest {
|
||||
const VerifyTransactionRequest({
|
||||
required this.productCode,
|
||||
required this.appStoreProductId,
|
||||
required this.transactionId,
|
||||
required this.signedTransactionInfo,
|
||||
this.appAccountToken,
|
||||
});
|
||||
|
||||
final String productCode;
|
||||
final String appStoreProductId;
|
||||
final String transactionId;
|
||||
final String signedTransactionInfo;
|
||||
final String? appAccountToken;
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
'productCode': productCode,
|
||||
'appStoreProductId': appStoreProductId,
|
||||
'transactionId': transactionId,
|
||||
'signedTransactionInfo': signedTransactionInfo,
|
||||
if (appAccountToken != null) 'appAccountToken': appAccountToken,
|
||||
};
|
||||
}
|
||||
|
||||
enum VerifyTransactionStatus { granted, alreadyGranted }
|
||||
|
||||
class VerifyTransactionResponse {
|
||||
const VerifyTransactionResponse({
|
||||
required this.status,
|
||||
required this.productCode,
|
||||
required this.transactionId,
|
||||
required this.creditsAdded,
|
||||
required this.newBalance,
|
||||
required this.ledgerEventId,
|
||||
});
|
||||
|
||||
final VerifyTransactionStatus status;
|
||||
final String productCode;
|
||||
final String transactionId;
|
||||
final int creditsAdded;
|
||||
final int newBalance;
|
||||
final String ledgerEventId;
|
||||
|
||||
factory VerifyTransactionResponse.fromJson(Map<String, dynamic> json) {
|
||||
return VerifyTransactionResponse(
|
||||
status: json['status'] == 'already_granted'
|
||||
? VerifyTransactionStatus.alreadyGranted
|
||||
: VerifyTransactionStatus.granted,
|
||||
productCode: json['productCode'] as String,
|
||||
transactionId: json['transactionId'] as String,
|
||||
creditsAdded: json['creditsAdded'] as int,
|
||||
newBalance: json['newBalance'] as int,
|
||||
ledgerEventId: json['ledgerEventId'] as String,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user