使用来自 Xamarin 的应用内插件的数据验证 AppStore 的应用内购买
Verifying In-App Purchase with AppStore using data from In-App Plugin for Xamarin
在我的 Xamarin Forms 5 应用中,我正在使用应用内购买 plugin. I'm now trying to verify this purchase in my ASP.NET backend API by calling the AppStore API。
购买完成后,我收到的响应对象如下所示:
AppStore API documentation 表示我需要进行的 POST
调用的请求正文应包括以下属性:
我想弄清楚我需要发送的 receipt-data
类型应该是 byte
.
到目前为止,我尝试发送我在响应对象中收到的 PurchaseToken
属性 - 使用应用程序内插件 - 请参见上面的第一张图片。那失败了。然后我使用以下转换将 PurchaseToken
值转换为字节数组,但也失败了。
var byteValue = Encoding.ASCII.GetBytes(purchaseTokenValue);
我不断从 AppStore API 获取 { "status": 21002 }
,这显然意味着根据 this post.
格式错误
有人为 purchase verification using the data from the In-App Billing plugin 调用过 AppStore API 吗?我会很感激这里的一些指示。谢谢!
更新:
我还安装了测试版插件(6.3.2 Beta)。即使响应对象已更改,我仍然看不到有关收据的任何数据,例如receipt-data
.
最终的解决方案如下。首先,我升级到最新的 (pre-release) Beta 版插件。在我的例子中,最终是 6.3.2-beta
.
在iOS的情况下,收据数据不会出现在我们为购买获得的交易对象中。我提供的代码包括购买电话和平台特定步骤,以便每个人都清楚:
// First, make the purchase call and get transaction data
var purchase = await billing.PurchaseAsync(productId, ItemType.Subscription);
// We then handle platform specific steps
if (Device.RuntimePlatform == Device.Android)
{
// Must call AcknowledgePurchaseAsync else the purchase will be refunded
await billing.AcknowledgePurchaseAsync(purchase.PurchaseToken);
}
else if(Device.RuntimePlatform == Device.iOS)
{
// Grab receipt data
var receiptData = CrossInAppBilling.Current.ReceiptData;
}
在我的 Xamarin Forms 5 应用中,我正在使用应用内购买 plugin. I'm now trying to verify this purchase in my ASP.NET backend API by calling the AppStore API。
购买完成后,我收到的响应对象如下所示:
AppStore API documentation 表示我需要进行的 POST
调用的请求正文应包括以下属性:
我想弄清楚我需要发送的 receipt-data
类型应该是 byte
.
到目前为止,我尝试发送我在响应对象中收到的 PurchaseToken
属性 - 使用应用程序内插件 - 请参见上面的第一张图片。那失败了。然后我使用以下转换将 PurchaseToken
值转换为字节数组,但也失败了。
var byteValue = Encoding.ASCII.GetBytes(purchaseTokenValue);
我不断从 AppStore API 获取 { "status": 21002 }
,这显然意味着根据 this post.
有人为 purchase verification using the data from the In-App Billing plugin 调用过 AppStore API 吗?我会很感激这里的一些指示。谢谢!
更新:
我还安装了测试版插件(6.3.2 Beta)。即使响应对象已更改,我仍然看不到有关收据的任何数据,例如receipt-data
.
最终的解决方案如下。首先,我升级到最新的 (pre-release) Beta 版插件。在我的例子中,最终是 6.3.2-beta
.
在iOS的情况下,收据数据不会出现在我们为购买获得的交易对象中。我提供的代码包括购买电话和平台特定步骤,以便每个人都清楚:
// First, make the purchase call and get transaction data
var purchase = await billing.PurchaseAsync(productId, ItemType.Subscription);
// We then handle platform specific steps
if (Device.RuntimePlatform == Device.Android)
{
// Must call AcknowledgePurchaseAsync else the purchase will be refunded
await billing.AcknowledgePurchaseAsync(purchase.PurchaseToken);
}
else if(Device.RuntimePlatform == Device.iOS)
{
// Grab receipt data
var receiptData = CrossInAppBilling.Current.ReceiptData;
}