Commit 1d8c2b03 by ethanlamzs

test

1 parent cf893e75
......@@ -86,8 +86,8 @@ class SubscriptionService {
}
// ---------- 购买订阅 ----------
Future<bool> buySubscription(ProductDetails product, String userId , String tbxStuId, String yWOrderId) async {
// ---------- 购买订阅 ----------
Future<bool> buySubscription(ProductDetails product, String userId , String tbxStuId, String yWOrderId) async {
_pendingContexts[product.id] = {'userId': userId,'tbxStuId': tbxStuId,"orderId":yWOrderId};
_orderIdMap[product.id] = yWOrderId; // 按产品 ID 存储
......@@ -201,7 +201,7 @@ class SubscriptionService {
}
// ---------- 服务端验证收据 ----------
Future<void> _verifyReceipt(PurchaseDetails purchaseDetails,String orderid,String userid,String scence) async {
Future<bool> _verifyReceipt(PurchaseDetails purchaseDetails,String orderid,String userid,String scence) async {
debugPrint("[info] _verifyReceipt is checking 3 ["+scence+"] "+purchaseDetails.productID+" orderid:"+orderid+" userid:"+userid);
if (orderid != null && orderid.length > 6) {
debugPrint("[info] _verifyReceipt is start scence ["+scence+"] "+purchaseDetails.productID+" orderid:"+orderid);
......@@ -215,22 +215,20 @@ class SubscriptionService {
_hasActiveSubscription = true;
// 保存到期时间等信息
}
return isValid;
}
return false;
}
// 示例:发送收据到自己的服务器进行二次验证
Future<bool> _sendReceiptToBackend(String userid,String receipt,String orderid) async {
var result = _userAuthRepository.orderCheck(userid,receipt,orderid,"ios",1);
//var data = result['data'] as Map<String, dynamic>?;
//debugPrint(result);
var result = await _userAuthRepository.orderCheck(userid,receipt,orderid,"ios",1);
debugPrint("[info] _sendReceiptToBackend is done");
return true;
return result!=null;
}
// ---------- 辅助方法 ----------
bool _isSubscription(String productId) {
return productId == monthlySubId_1 || productId == monthlySubId_3|| productId == monthlySubId_6|| productId == monthlySubId_12;
......@@ -242,18 +240,19 @@ class SubscriptionService {
}
// ---------- 购买成功处理 ----------
void _handlePurchaseSuccess(PurchaseDetails detail,String orderId,String userId) {
Future<void> _handlePurchaseSuccess(PurchaseDetails detail,String orderId,String userId) async {
// 发送收据到后端验证,携带 userId
_verifyReceipt(detail,orderId??'',userId??'',"purchased");
// 完成交易
_iap.completePurchase(detail);
// 乐观更新本地状态(等后端最终确认再真正解锁功能)
final ok = await _verifyReceipt(detail,orderId??'',userId??'',"purchased");
if(ok){
_hasActiveSubscription = true;
onSuccess?.call('订阅成功');
onStateChanged?.call();
if(detail.pendingCompletePurchase){
await _iap.completePurchase(detail);
}
}else{
// 不complete
// 等待下次重新验证
}
}
// ---------- 恢复成功处理 ----------
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!