Myket.InAppBilling
0.0.6
dotnet add package Myket.InAppBilling --version 0.0.6
NuGet\Install-Package Myket.InAppBilling -Version 0.0.6
<PackageReference Include="Myket.InAppBilling" Version="0.0.6" />
<PackageVersion Include="Myket.InAppBilling" Version="0.0.6" />
<PackageReference Include="Myket.InAppBilling" />
paket add Myket.InAppBilling --version 0.0.6
#r "nuget: Myket.InAppBilling, 0.0.6"
#:package Myket.InAppBilling@0.0.6
#addin nuget:?package=Myket.InAppBilling&version=0.0.6
#tool nuget:?package=Myket.InAppBilling&version=0.0.6
Myket In-App Billing for .NET MAUI
کتابخانه غیررسمی و ساده برای پیادهسازی پرداخت درونبرنامهای مایکت (Myket) در پروژههای .NET MAUI.
این کتابخانه مشکل عدم وجود فایلهای AIDL و پیادهسازیهای پیچیده بایندرها را حل کرده و یک رابط کاربری ساده async/await در اختیار شما قرار میدهد.
ویژگیها
- ✅ اتصال آسان به سرویس پرداخت مایکت
- ✅ خرید محصول (Purchase)
- ✅ مصرف محصول (Consume) برای محصولات مصرفی (سکه، جم و...)
- ✅ بدون نیاز به فایلهای Java یا AIDL خارجی
- ✅ کاملاً منطبق با .NET 8+ و MAUI
- ✅ منطبق با اندروید نسخه 26+
نصب
پکیج را از طریق NuGet به پروژه خود اضافه کنید:
dotnet add package Myket.InAppBilling
راهاندازی (Setup)
۱. تنظیمات AndroidManifest.xml
در فایل Platforms/Android/AndroidManifest.xml مجوزهای زیر را اضافه کنید:
<uses-permission android:name="ir.mservices.market.BILLING" />
<uses-permission android:name="com.android.vending.BILLING" />
<queries>
<package android:name="ir.mservices.market" />
</queries>
۲. تنظیمات MainActivity.cs
برای اینکه نتیجه خرید از اکتیویتی به کتابخانه برگردد، باید متد OnActivityResult را در MainActivity.cs خود بازنویسی (Override) کنید:
using Android.App;
using Android.Content;
using Myket.InAppBilling; // فضای نام کتابخانه
namespace YourAppName
{
[Activity(Label = "YourApp", MainLauncher = true, ...)]
public class MainActivity : MauiAppCompatActivity
{
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
// هدایت نتیجه به کتابخانه مایکت
CrossMyketBilling.Current.OnActivityResult(requestCode, (int)resultCode, data);
}
protected override void OnDestroy()
{
// قطع اتصال سرویس برای جلوگیری از نشت حافظه
CrossMyketBilling.Current.Disconnect();
base.OnDestroy();
}
}
}
نحوه استفاده (Usage)
خرید محصول
using Myket.InAppBilling;
private async void PayWithMyket()
{
// شناسه محصول تعریف شده در پنل توسعهدهندگان مایکت
string productId = "coin_pack_100";
// درخواست خرید
var result = await CrossMyketBilling.Current.PurchaseAsync(productId);
if (result.Status == PurchaseStatus.Purchased)
{
// خرید موفقیت آمیز بود
// result.PurchaseToken و result.OrderId در دسترس هستند
// اگر محصول مصرفی است (مثل سکه)، حتما متد زیر را صدا بزنید:
bool consumed = await CrossMyketBilling.Current.ConsumeAsync(result.PurchaseToken);
if (consumed)
{
// سکه را به کاربر اضافه کنید
await DisplayAlert("تبریک", "خرید انجام شد و سکه اضافه شد", "باشه");
}
}
else if (result.Status == PurchaseStatus.Canceled)
{
await DisplayAlert("توجه", "خرید توسط کاربر لغو شد", "باشه");
}
else
{
await DisplayAlert("خطا", $"خطا در خرید: {result.Message}", "باشه");
}
}
متدهای موجود
| متد | توضیحات |
|---|---|
ConnectAsync() |
اتصال دستی به سرویس مایکت (معمولا خودکار انجام میشود اما برای چک کردن وضعیت مفید است). |
PurchaseAsync(id, payload) |
شروع پروسه خرید. payload اختیاری است. |
ConsumeAsync(token) |
مصرف کردن خرید. برای محصولاتی که باید دوباره قابل خرید باشند الزامی است. |
Disconnect() |
قطع ارتباط با سرویس مایکت. |
نکات مهم
- تست روی دستگاه: پرداخت درونبرنامهای روی شبیهساز (Emulator) کار نمیکند. حتماً روی گوشی واقعی که اپلیکیشن مایکت روی آن نصب است و کاربر در آن لاگین کرده، تست کنید.
- شناسه محصول: شناسه محصول (Product ID) باید دقیقاً با پنل مایکت مطابقت داشته باشد.
- نسخه اندروید: این کتابخانه با Android 5.0 (API 21) به بالا سازگار است.
لایسنس
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0-android34.0 is compatible. net9.0-android was computed. net10.0-android was computed. |
-
net8.0-android34.0
- Microsoft.Maui.Controls (>= 8.0.100)
- Microsoft.Maui.Essentials (>= 8.0.100)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Android 34 and 35 payment problems has been fixed