cha*_*ble 4 in-app-purchase in-app-subscription react-native expo
当前的应用程序是 Expo for React Native,它被弹出到裸工作流程中。使用expo-in-app-purchasesIAP。
如何判断订阅是否有效?
当我通过以下方式获取购买历史记录时:
const { results } = InAppPurchases.connectAsync();
如果查看结果,结果会返回以下字段:
现在purchaseState始终是一个整数。我主要看到3(我想我已经看过1一次......)不确定这是否真的告诉我任何有价值的东西,因为它们都是3都是
如果没有手动获取最近的购买并添加 30 天(这是每月订阅)然后查看该日期是否是过去的日期,我不知道如何查找当前用户是否有有效订阅。帮助!
提前致谢!
Apple 向您提供经过签名且经过 Base64 编码的字符串形式的收据。为了查看收据的内容(包括“过期”日期),您需要将此收据连同您的应用程序专用密码发送到 Apple 的收据验证端点。
与此类似的功能对我有用。这会以 JSON 对象的形式检索收据信息,其中包含expires_at_ms,可以将其与今天的日期进行比较,以查看订阅是否已过期。
async validateAppleReceipt(receipt) {
const prodURL = 'https://buy.itunes.apple.com/verifyReceipt'
const stagingURL = 'https://sandbox.itunes.apple.com/verifyReceipt'
const appSecret = '1234...'
const payload = {
"receipt-data": receipt,
"password": appSecret,
"exclude-old-transactions": true,
}
// First, try to validate against production
const prodRes = await axios.post(prodURL, payload)
// If status is 21007, fall back to sandbox
if (prodRes.data && prodRes.data.status === 21007) {
const sandboxRes = await axios.post(stagingURL, payload)
return sandboxRes.data.latest_receipt_info[0]
}
// Otherwise, return the prod data!
return prodRes.data.latest_receipt_info[0]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3003 次 |
| 最近记录: |