这就是事情,几天来我正试图找出IAP (应用程序中的苹果ios)在hybdrid应用程序中。
一切似乎都在起作用,交易正在触发结束...... 但是当谈到服务器端收据验证时,奇怪的开始了。
正如我所提到的,在应用程序本身中,新事务是使用新的唯一ID进行的。 但是,当我向服务器发送收据并且我的服务器要求苹果进行验证时,信息apple正在返回仅包含第一个已完成的交易,没有当前的指示交易或在第一个交易之后完成的任何其他交易。
有人经历过类似的事吗?
其他信息:
答案 0 :(得分:2)
问题解决了:))
显然,有一种机制可以在cordova-plugin-purchase中缓存收据,这种机制不需要,实际上会导致我的问题。
所以解决方法是致电:
storekit.setAppStoreReceipt(null);
在获取收据之前:
storekit.loadReceipts(function (receipts) {
...
})
将强制插件删除缓存的收据并始终获取最新版本。
答案 1 :(得分:0)
有两种iTunes收据:
SKPaymentTransaction#transactionReceipt
(已弃用)和; appStoreReceiptURL
您最有可能使用transactionReceipt
属性。
cordova-plugin-purchase
似乎实现了appStoreReceiptURL
here,可以通过IAP.onPurchase方法进行访问。
编辑:
在仔细查看插件代码之后,应该有一个全局storekit
对象公开loadReceipts
方法,如此
storekit.loadReceipts(function (receipts) {
console.log('Receipt for appStore = ' + receipts.appStoreReceipt);
console.log('Receipt for ' + productId + ' = ' + receipts.forProduct(productId));
});
它是您要发送到服务器的receipts.appStoreReceipt
属性。