ChadCSong

苹果订阅相关

...@@ -24,4 +24,19 @@ class OrderApi extends BaseApi { ...@@ -24,4 +24,19 @@ class OrderApi extends BaseApi {
24 return json.decode(value.data); 24 return json.decode(value.data);
25 }); 25 });
26 } 26 }
27 +
28 + Future<dynamic> verifyOrder(String orderId, String type, String token, {Map<String, dynamic>? others}) {
29 + var data = {
30 + "order_sn": orderId,
31 + "pay_type": type,
32 + "token": token,
33 + "others": others ?? {},
34 + };
35 + return post("pay", data: data).then((value) {
36 + if (TextUtil.isEmpty(value.data)) {
37 + return {};
38 + }
39 + return value.data;
40 + });
41 + }
27 } 42 }
......
...@@ -4,8 +4,12 @@ import 'package:Parlando/apis/api_order.dart'; ...@@ -4,8 +4,12 @@ import 'package:Parlando/apis/api_order.dart';
4 import 'package:Parlando/membership/models/membership_entity.dart'; 4 import 'package:Parlando/membership/models/membership_entity.dart';
5 import 'package:common_utils/common_utils.dart'; 5 import 'package:common_utils/common_utils.dart';
6 import 'package:in_app_purchase/in_app_purchase.dart'; 6 import 'package:in_app_purchase/in_app_purchase.dart';
7 +import 'package:in_app_purchase_android/in_app_purchase_android.dart';
8 +import 'package:in_app_purchase_storekit/in_app_purchase_storekit.dart';
7 9
8 class PaymentSdk { 10 class PaymentSdk {
11 + var currentOrder;
12 +
9 PaymentSdk._privateConstructor(); 13 PaymentSdk._privateConstructor();
10 14
11 static final PaymentSdk _instance = PaymentSdk._privateConstructor(); 15 static final PaymentSdk _instance = PaymentSdk._privateConstructor();
...@@ -59,6 +63,7 @@ class PaymentSdk { ...@@ -59,6 +63,7 @@ class PaymentSdk {
59 onFailed?.call(); 63 onFailed?.call();
60 return; 64 return;
61 } 65 }
66 + currentOrder = orderId;
62 final PurchaseParam purchaseParam = PurchaseParam(productDetails: details, applicationUserName: orderId); 67 final PurchaseParam purchaseParam = PurchaseParam(productDetails: details, applicationUserName: orderId);
63 if (_isConsumable(details)) { 68 if (_isConsumable(details)) {
64 InAppPurchase.instance.buyConsumable(purchaseParam: purchaseParam); 69 InAppPurchase.instance.buyConsumable(purchaseParam: purchaseParam);
...@@ -97,7 +102,30 @@ class PaymentSdk { ...@@ -97,7 +102,30 @@ class PaymentSdk {
97 } 102 }
98 103
99 void _deliverProduct(PurchaseDetails purchaseDetails) { 104 void _deliverProduct(PurchaseDetails purchaseDetails) {
105 + String type = "";
106 + Map<String, dynamic> otherField = {};
107 + if (purchaseDetails is GooglePlayPurchaseDetails) {
108 + currentOrder = purchaseDetails.billingClientPurchase.obfuscatedAccountId;
109 + type = "google";
110 + otherField["google"] = {
111 + "originalJson": purchaseDetails.billingClientPurchase.originalJson,
112 + };
113 + }
114 + if (purchaseDetails is AppStorePurchaseDetails) {
115 + type = "apple";
116 + otherField["apple"] = {
117 + "transactionIdentifier": purchaseDetails.skPaymentTransaction.transactionIdentifier,
118 + "originalTransactionIdentifier":
119 + purchaseDetails.skPaymentTransaction.originalTransaction?.transactionIdentifier ?? "",
120 + };
121 + }
122 + var serverVerifyStr = purchaseDetails.verificationData.serverVerificationData;
123 + var verifySource = purchaseDetails.verificationData.source;
124 + otherField["source"] = verifySource;
125 + OrderApi.request.verifyOrder(currentOrder, type, serverVerifyStr, others: otherField).then((value) {
126 + if (value != null) {}
100 onPaySuccess?.call(); 127 onPaySuccess?.call();
128 + });
101 } 129 }
102 130
103 void _handleInvalidPurchase(PurchaseDetails purchaseDetails) { 131 void _handleInvalidPurchase(PurchaseDetails purchaseDetails) {
......