我正在使用 James Montemagno 的Plugin.InAppBilling
Xamarin 库来执行 iOS 和 Android 应用内订阅。到目前为止,它基本上工作正常,除了偶尔,仅在 iOS 上,从对andInAppBillingPurchase.PurchaseToken
的调用返回 null 。PurchaseAsync
GetPurchasesAsync
例如,在我的恢复购买逻辑中,我有类似这样的代码:
var purchases = await CrossInAppBilling.Current.GetPurchasesAsync(ItemType.Subscription);
// Sometimes we receive purchases with no PurchaseToken.
// Can't verify the purchase without a token.
var verifiable = purchases.Where(p => !string.IsNullOrWhiteSpace(p.PurchaseToken));
此时,verifiable
有时计数 (0) 与purchases
(1) 不同。
到目前为止,这似乎发生在用户使用商店信用或礼品卡购买时,并且仅在 iOS 上。
另外,我不确定这是否与问题有关,但我没有使用PurchaseAsync
and GetPurchasesAsync
which take的重载IInAppBillingVerifyPurchase
,因为我专门使用服务器端验证(没有客户端验证)。我的工作流程是进行购买,将生成的InAppPurchase
对象添加到队列中进行处理,然后将其作为单独的步骤发送到我们的服务器,以进行验证和与用户帐户的关联。但是,如果这不是一个有效的工作流程,或者如果知道有时 PurchaseToken 数据可以通过IInAppBillingVerifyPurchase.VerifyPurchase
但不附加到InAppBillingPurchase
从上述方法返回的对象上,我当然想知道这一点。(对于它的价值,我已经阅读了文档并且没有看到任何暗示这一点的东西。)
提前感谢您的帮助。