使用来自 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;
}