Cafebazaar.InAppBilling
0.0.6
The package had critical bugs and now this version is a great fix for it.
See the version list below for details.
dotnet add package Cafebazaar.InAppBilling --version 0.0.6
NuGet\Install-Package Cafebazaar.InAppBilling -Version 0.0.6
<PackageReference Include="Cafebazaar.InAppBilling" Version="0.0.6" />
<PackageVersion Include="Cafebazaar.InAppBilling" Version="0.0.6" />
<PackageReference Include="Cafebazaar.InAppBilling" />
paket add Cafebazaar.InAppBilling --version 0.0.6
#r "nuget: Cafebazaar.InAppBilling, 0.0.6"
#:package Cafebazaar.InAppBilling@0.0.6
#addin nuget:?package=Cafebazaar.InAppBilling&version=0.0.6
#tool nuget:?package=Cafebazaar.InAppBilling&version=0.0.6
Cafebazaar In-App Billing for .NET MAUI
کتابخانه غیررسمی و ساده برای پیادهسازی پرداخت درونبرنامهای کافه بازار (Cafebazaar) در پروژههای .NET MAUI.
این کتابخانه مشکل عدم وجود فایلهای AIDL و پیادهسازیهای پیچیده بایندرها را حل کرده و یک رابط کاربری ساده async/await در اختیار شما قرار میدهد.
ویژگیها
- ✅ اتصال آسان به سرویس پرداخت کافه بازار
- ✅ خرید محصول (Purchase)
- ✅ مصرف محصول (Consume) برای محصولات مصرفی (سکه، جم و...)
- ✅ بدون نیاز به فایلهای Java یا AIDL خارجی
- ✅ کاملاً منطبق با .NET 8+ و MAUI
- ✅ منطبق با اندروید نسخه 26+
نصب
پکیج را از طریق NuGet به پروژه خود اضافه کنید:
dotnet add package Cafebazaar.InAppBilling
راهاندازی (Setup)
۱. تنظیمات AndroidManifest.xml
در فایل Platforms/Android/AndroidManifest.xml مجوزهای زیر را اضافه کنید:
<uses-permission android:name="ir.cafebazaar.pardakht.BILLING" />
<uses-permission android:name="com.android.vending.BILLING" />
<queries>
<package android:name="ir.cafebazaar.pardakht" />
</queries>
۲. تنظیمات MainActivity.cs
برای اینکه نتیجه خرید از اکتیویتی به کتابخانه برگردد، باید متد OnActivityResult را در MainActivity.cs خود بازنویسی (Override) کنید:
using Android.App;
using Android.Content;
using Cafebazaar.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);
// هدایت نتیجه به کتابخانه کافه بازار
CrossCafebazaarBilling.Current.OnActivityResult(requestCode, (int)resultCode, data);
}
protected override void OnDestroy()
{
// قطع اتصال سرویس برای جلوگیری از نشت حافظه
CrossCafebazaarBilling.Current.Disconnect();
base.OnDestroy();
}
}
}
نحوه استفاده (Usage)
خرید محصول
using Cafebazaar.InAppBilling;
private async void PayWithCafebazaar()
{
// شناسه محصول تعریف شده در پنل توسعهدهندگان کافه بازار
string productId = "coin_pack_100";
// درخواست خرید
var result = await CrossCafebazaarBilling.Current.PurchaseAsync(productId);
if (result.Status == PurchaseStatus.Purchased)
{
// خرید موفقیت آمیز بود
// result.PurchaseToken و result.OrderId در دسترس هستند
// اگر محصول مصرفی است (مثل سکه)، حتما متد زیر را صدا بزنید:
bool consumed = await CrossCafebazaarBilling.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 | net10.0-android36.0 is compatible. |
-
net10.0-android36.0
- Microsoft.Maui.Controls (>= 10.0.2)
- Microsoft.Maui.Essentials (>= 10.0.20)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Android 26+ support problems has been fixed