
Swift
使用 Firebase Firestore 和 Cloud Functions 可以简化应用内购买收据的验证过程,确保用户的支付信息安全可靠。本文将介绍如何使用 Swift 和 Node.JS 来实现这一功能。
1. 设置 Firestore 数据库首先,我们需要在 Firebase 控制台中创建一个 Firestore 数据库。打开控制台,点击“创建数据库”按钮,选择适合你项目的模式(测试模式或生产模式)。完成设置后,你将获得一个项目 ID,我们稍后会用到它。2. 配置 Firebase SDK在 Xcode 中,打开你的 Swift 项目,使用 CocoaPods 或 Swift Package Manager 导入 Firebase SDK。确保已经安装了 Firebase/Firestore 和 Firebase/Functions 组件。在 AppDelegate.Swift 文件中,导入 Firebase 和 FirebaseCore 模块,然后在 didFinishLaunchingWithOptions 方法中添加以下代码来初始化 Firebase:Swiftimport Firebaseimport FirebaseCoreFirebaseApp.configure()3. 编写 Swift 代码我们将使用 Swift 来处理应用内购买收据并将其发送到 Cloud Functions 进行验证。在你的 Swift 项目中,创建一个新的 Swift 文件,命名为 "InAppPurchaseManager.Swift"。首先,导入 Firebase 模块和 StoreKit 模块:
Swiftimport Firebaseimport StoreKit接下来,我们创建一个 InAppPurchaseManager 类,用于处理应用内购买流程。在该类中,我们需要实现 SKPaymentTransactionObserver 协议和 SKProductsRequestDelegate 协议。在类的开头添加以下代码:
Swiftclass InAppPurchaseManager: NSObject, SKPaymentTransactionObserver, SKProductsRequestDelegate { static let shared = InAppPurchaseManager() private var productRequest: SKProductsRequest? private override init() { super.init() SKPaymentQueue.default().add(self) } // 实现协议方法...}现在,我们需要实现 SKPaymentTransactionObserver 协议的两个方法,用于处理购买流程的不同状态。在 InAppPurchaseManager 类中添加以下代码:Swiftfunc paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { for transaction in transactions { switch transaction.transactionState { case .purchased: // 处理购买成功的逻辑 verifyPurchase(with: transaction) case .fAIled: // 处理购买失败的逻辑 case .restored: // 处理恢复购买的逻辑 case .deferred: // 处理购买延迟的逻辑 case .purchasing: // 处理购买中的逻辑 @unknown default: break } }}func verifyPurchase(with transaction: SKPaymentTransaction) { // 发送购买收据到 Cloud Functions 进行验证 guard let receiptURL = Bundle.mAIn.appStoreReceiptURL, let receiptData = try? Data(contentsOf: receiptURL).base64EncodedString() else { return } let request = [ "receiptData": receiptData, "productId": transaction.payment.productIdentifier ] // 使用 Firestore 提交验证请求 let db = Firestore.firestore() let docRef = db.collection("purchaseVerifications").document() docRef.setData(request) { error in if let error = error { print("Error verifying purchase: \(error.localizedDescription)") } else { print("Purchase verification successful!") } }}4. 创建 Cloud Function下面是我们将用于验证应用内购买收据的 Node.JS Cloud Function 代码。我们将使用 express 框架来创建一个简单的 HTTP 服务器,以便接收来自 Swift 代码发送的验证请求。首先,创建一个新的 Node.JS 项目并初始化它。然后,使用 npm 安装必要的依赖项:npm install express cors firebase-admin在项目根目录下创建一个新的 JavaScript 文件,命名为 "index.JS"。在该文件中添加以下代码:
Javascriptconst functions = require('firebase-functions');const express = require('express');const cors = require('cors');const admin = require('firebase-admin');admin.initializeApp();const app = express();app.use(cors({ origin: true }));app.post('/', async (req, res) => { try { const { receiptData, productId } = req.body; // 在此处添加验证逻辑 res.status(200).send({ message: 'Purchase verification successful!' }); } catch (error) { console.error('Error verifying purchase:', error); res.status(500).send({ error: 'Purchase verification fAIled.' }); }});exports.verifyPurchase = functions.https.onRequest(app);5. 部署 Cloud Function使用 Firebase CLI 将 Cloud Function 部署到 Firebase 云端。在终端中导航到你的项目根目录,并运行以下命令:firebase deploy --only functions等待部署完成后,你将获得一个 Cloud Function 的 URL,我们稍后会用到它。6. 更新 Swift 代码回到你的 Swift 项目中,在 "InAppPurchaseManager.Swift" 文件的 verifyPurchase 方法中,将以下代码添加到 Firestore 请求的 setData 方法之前:
Swiftlet url = URL(string: "YOUR_CLOUD_FUNCTION_URL")!var request = URLRequest(url: url)request.httpMethod = "POST"request.setValue("application/JSon", forHTTPHeaderField: "Content-Type")let requestData = try? JSONSerialization.data(withJSONObject: request, options: [])request.httpBody = requestDatalet task = URLSession.shared.dataTask(with: request) { data, response, error in if let error = error { print("Error verifying purchase: \(error.localizedDescription)") } else if let data = data { let responseString = String(data: data, encoding: .utf8) print("Purchase verification response: \(responseString ?? "")") }}task.resume()将 "YOUR_CLOUD_FUNCTION_URL" 替换为你在步骤 5 中部署的 Cloud Function 的 URL。7. 测试应用内购买验证现在,你可以在你的应用中测试应用内购买验证功能了。当用户进行购买操作时,我们的 Swift 代码会将购买收据发送到 Cloud Functions 进行验证。Cloud Functions 将根据你的验证逻辑执行相应的操作,并返回验证结果给 Swift 代码。通过使用 Firebase Firestore 和 Cloud Functions,我们可以轻松地实现应用内购买收据的验证功能。通过将 Swift 代码和 Node.JS 代码结合我们可以在客户端和服务器端之间实现安全可靠的数据传输。这种方法不仅简化了验证过程,还提供了可扩展性和灵活性,使我们能够轻松地处理购买验证的各种情况。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号