You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从In-App Billing Plugin 4.0.2迁移到6.7.0?迁移报错求助

In-App Billing Plugin 4.0.2迁移到6.7.0的Verify.cs报错解决

问题背景

从In-App Billing Plugin 4.0.2迁移到6.7.0版本,已用Microsoft.Maui.Essentials替代Xamarin.Essentials,且移除了Xamarin.Essentials和Xamarin.Forms的NuGet包,此时Verify.cs文件出现两个错误:

  • Error CS0234: 命名空间“Xamarin”中不存在类型或命名空间名称“Forms”(是否缺少程序集引用?)
  • InAppBillingImplementation不包含InAppBillingSecurity的定义

原Verify.cs代码

using System.Threading.Tasks;
using Plugin.InAppBilling;
using AndroidProject;
using SharedCode;
  
[assembly: Xamarin.Forms.Dependency(typeof(Verify))]
namespace AndroidProject
{
    public class Verify : IInAppBillingVerifyPurchase
    {
        const string key1 = @"...";
        const string key2 = @"...";
        const string key3 = @"...";

        public string SignedDataverify = "Test", Signatureverify = "Test";
        public Task<bool> VerifyPurchase(string signedData, string signature, string productId = null, string transactionId = null)
        {
            var key1Transform = InAppBillingImplementation.InAppBillingSecurity.TransformString(key1, 1);
            var key2Transform = InAppBillingImplementation.InAppBillingSecurity.TransformString(key2, 2);
            var key3Transform = InAppBillingImplementation.InAppBillingSecurity.TransformString(key3, 3);
            SignedDataverify = signedData;
            Signatureverify = signature;
            return Task.FromResult(InAppBillingImplementation
                .InAppBillingSecurity.VerifyPurchase(key1Transform + key2Transform + key3Transform, signedData, signature));
        }
    }
}

疑问清单

  • 使用6.7.0版本是否仍需Xamarin.Forms NuGet包?
  • 能否搭配Microsoft.Maui.Essentials?
  • InAppBillingSecurity问题的原因是什么?
  • 原验签代码是否还能使用?
  • 能否直接删除Verify.cs?

问题解答

  1. 是否需要Xamarin.Forms NuGet包?
    不需要。报错是因为代码里用了Xamarin.Forms.Dependency特性,这是Xamarin.Forms的依赖注入标记,MAUI中已经改用Microsoft.Maui.Controls.Dependency,或者直接用MAUI内置的依赖注入系统注册验证类,没必要再引用Xamarin.Forms。

  2. 能否搭配Microsoft.Maui.Essentials?
    完全可以。In-App Billing Plugin 6.x版本已经适配MAUI,和Microsoft.Maui.Essentials没有兼容性冲突,两者可以正常搭配使用。

  3. InAppBillingSecurity问题的原因?
    6.x版本对插件内部结构做了重构,InAppBillingImplementation.InAppBillingSecurity这个嵌套类被移除或迁移到了新的命名空间下。现在官方推荐使用Plugin.InAppBilling.Security.InAppBillingSecurity这个独立静态类来处理验签,或者直接采用Google官方的验签逻辑实现。

  4. 原验签代码是否还能使用?
    不能直接沿用,需要修改。你可以把原来调用InAppBillingImplementation.InAppBillingSecurity的地方替换为Plugin.InAppBilling.Security.InAppBillingSecurity(6.x版本中该类已移至这个命名空间);如果TransformString方法也被移除,需要自行实现字符串转换逻辑,或者按照官方文档的新方式处理公钥。

  5. 能否直接删除Verify.cs?
    如果不需要客户端验签(推荐服务器端验签),可以删除;但如果需要客户端验签,就不能删除,得修改代码使其符合6.x版本的接口要求,继续实现IInAppBillingVerifyPurchase接口完成验签逻辑。


内容的提问来源于stack exchange,提问作者John_Kub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:10:25