Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: unity-package/in-app-purchasing-unity
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 1.0.4
Choose a base ref
...
head repository: unity-package/in-app-purchasing-unity
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
  • 9 commits
  • 5 files changed
  • 4 contributors

Commits on Jul 30, 2024

  1. Update README.md

    DucNV2000 authored Jul 30, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    fb8c69d View commit details

Commits on Aug 27, 2024

  1. - update

    - rename org
    DucNV2000 committed Aug 27, 2024
    Copy the full SHA
    651ec71 View commit details

Commits on Oct 7, 2024

  1. Update IapDataProduct.cs

    DucNV2000 committed Oct 7, 2024
    Copy the full SHA
    81dab64 View commit details
  2. - update version

    DucNV2000 committed Oct 7, 2024
    Copy the full SHA
    36599bf View commit details

Commits on Oct 14, 2024

  1. Update IapSettingsEditor.cs

    VirtueSky committed Oct 14, 2024
    Copy the full SHA
    4721452 View commit details
  2. - update version

    VirtueSky committed Oct 14, 2024
    Copy the full SHA
    705585a View commit details
  3. Update README.md

    VirtueSky committed Oct 14, 2024
    Copy the full SHA
    1760daa View commit details

Commits on Nov 28, 2024

  1. Update README.md

    VirtueSky authored Nov 28, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    4db1f14 View commit details

Commits on Dec 28, 2024

  1. Copy the full SHA
    65c06c8 View commit details
Showing with 66 additions and 81 deletions.
  1. +12 −20 Editor/IapSettingsEditor.cs
  2. +29 −49 README.md
  3. +4 −0 Runtime/IapDataProduct.cs
  4. +18 −9 Runtime/IapManager.cs
  5. +3 −3 package.json
32 changes: 12 additions & 20 deletions Editor/IapSettingsEditor.cs
Original file line number Diff line number Diff line change
@@ -76,37 +76,29 @@ void GenerateProductImpl()
var productImplPath = $"{pathDefaultScript}/IapProduct.cs";
var str = "namespace VirtueSky.Iap\n{";
str += "\n\tpublic struct IapProduct\n\t{";

str += "\n";
var iapDataProducts = _iapSettings.IapDataProducts;
for (int i = 0; i < _iapSettings.IapDataProducts.Count; i++)
{
var itemName = iapDataProducts[i].Id.Split('.').Last();

str += $"// {itemName.ToUpper()}";
str += $"\n\t\tpublic const string ID_{itemName.ToUpper()} = \"{iapDataProducts[i].Id}\";";

str +=
$"\n\t\tpublic static IapDataProduct Purchase{CultureInfo.CurrentCulture.TextInfo.ToTitleCase(itemName)}()";
str += "\n\t\t{";
str +=
$"\n\t\t\treturn IapManager.PurchaseProduct(IapSettings.Instance.IapDataProducts[{i}]);";
str += "\n\t\t}";
str += "\n";
$"\n\t\tpublic static IapDataProduct Purchase{CultureInfo.CurrentCulture.TextInfo.ToTitleCase(itemName)}() => IapManager.PurchaseProduct(IapSettings.Instance.IapDataProducts[{i}]);";

str +=
$"\n\t\tpublic static bool IsPurchased{CultureInfo.CurrentCulture.TextInfo.ToTitleCase(itemName)}()";
str += "\n\t\t{";
str +=
$"\n\t\t\treturn IapManager.IsPurchasedProduct(IapSettings.Instance.IapDataProducts[{i}]);";
str += "\n\t\t}";
$"\n\t\tpublic static bool IsPurchased{CultureInfo.CurrentCulture.TextInfo.ToTitleCase(itemName)}() => IapManager.IsPurchasedProduct(IapSettings.Instance.IapDataProducts[{i}]);";

str += "\n";

str +=
$"\n\t\tpublic static UnityEngine.Purchasing.Product GetProduct{CultureInfo.CurrentCulture.TextInfo.ToTitleCase(itemName)}()";
str += "\n\t\t{";
str +=
$"\n\t\t\treturn IapManager.GetProduct(IapSettings.Instance.IapDataProducts[{i}]);";
str += "\n\t\t}";
$"\n\t\tpublic static UnityEngine.Purchasing.Product GetProduct{CultureInfo.CurrentCulture.TextInfo.ToTitleCase(itemName)}() => IapManager.GetProduct(IapSettings.Instance.IapDataProducts[{i}]);";

str += $"\n\t\tpublic static float PriceConfig{CultureInfo.CurrentCulture.TextInfo.ToTitleCase(itemName)}() => IapSettings.Instance.IapDataProducts[{i}].price;";
if (iapDataProducts[i].iapProductType == IapProductType.Subscription)
{
str +=
$"\n\t\tpublic static UnityEngine.Purchasing.SubscriptionInfo GetSubscriptionInfo{CultureInfo.CurrentCulture.TextInfo.ToTitleCase(itemName)}() => IapManager.GetSubscriptionInfo(IapSettings.Instance.IapDataProducts[{i}]);";
}
str += "\n";
}

78 changes: 29 additions & 49 deletions README.md
Original file line number Diff line number Diff line change
@@ -3,16 +3,16 @@
<img alt="Made With Unity" src="https://img.shields.io/badge/made%20with-Unity-57b9d3.svg?logo=Unity">
</a>
<a>
<img alt="License" src="https://img.shields.io/github/license/wolf-package/in-app-purchasing-unity?logo=github">
<img alt="License" src="https://img.shields.io/github/license/unity-package/in-app-purchasing-unity?logo=github">
</a>
<a>
<img alt="Last Commit" src="https://img.shields.io/github/last-commit/wolf-package/in-app-purchasing-unity?logo=Mapbox&color=orange">
<img alt="Last Commit" src="https://img.shields.io/github/last-commit/unity-package/in-app-purchasing-unity?logo=Mapbox&color=orange">
</a>
<a>
<img alt="Repo Size" src="https://img.shields.io/github/repo-size/wolf-package/in-app-purchasing-unity?logo=VirtualBox">
<img alt="Repo Size" src="https://img.shields.io/github/repo-size/unity-package/in-app-purchasing-unity?logo=VirtualBox">
</a>
<a>
<img alt="Last Release" src="https://img.shields.io/github/v/release/wolf-package/in-app-purchasing-unity?include_prereleases&logo=Dropbox&color=yellow">
<img alt="Last Release" src="https://img.shields.io/github/v/release/unity-package/in-app-purchasing-unity?include_prereleases&logo=Dropbox&color=yellow">
</a>
</p>

@@ -23,13 +23,13 @@

### Add the line below to `Packages/manifest.json`

for version `1.0.4`
for version `1.0.8`
```csharp
"com.wolf-package.in-app-purchasing":"https://github.com/wolf-package/in-app-purchasing-unity.git#1.0.4",
"com.wolf-org.in-app-purchasing":"https://github.com/unity-package/in-app-purchasing-unity.git#1.0.8",
```
dependency `extensions-unity-1.0.4`
dependency `extensions-unity-1.0.5`
```csharp
"com.wolf-package.extensions":"https://github.com/wolf-package/extensions-unity.git#1.0.4",
"com.wolf-org.extensions":"https://github.com/unity-package/extensions-unity.git#1.0.5",
```

## Use
@@ -49,39 +49,29 @@ dependency `extensions-unity-1.0.4`

```csharp

public struct IapProduct
public static class IapProduct
{
public const string ID_COIN = "com.test.coin";
public static IapDataProduct PurchaseCoin()
{
return IapManager.PurchaseProduct(IapSettings.Instance.IapDataProducts[0]);
}

public static bool IsPurchasedCoin()
{
return IapManager.IsPurchasedProduct(IapSettings.Instance.IapDataProducts[0]);
}

public static string LocalizedPriceCoin()
{
return IapManager.LocalizedPriceProduct(IapSettings.Instance.IapDataProducts[0]);
}

public const string ID_REMOVEADS = "com.test.removeads";
public static IapDataProduct PurchaseRemoveads()
{
public const string ID_REMOVEADS = "com.test.removeads";
public static IapDataProduct PurchaseRemoveads()
{
return IapManager.PurchaseProduct(IapSettings.Instance.IapDataProducts[0]);
}

public static bool IsPurchasedRemoveads()
{
return IapManager.IsPurchasedProduct(IapSettings.Instance.IapDataProducts[0]);
}

public const string ID_1000GEM = "com.test.1000gem";
public static IapDataProduct Purchase1000Gem()
{
return IapManager.PurchaseProduct(IapSettings.Instance.IapDataProducts[1]);
}
}

public static bool IsPurchasedRemoveads()
{
return IapManager.IsPurchasedProduct(IapSettings.Instance.IapDataProducts[1]);
}

public static string LocalizedPriceRemoveads()
{
return IapManager.LocalizedPriceProduct(IapSettings.Instance.IapDataProducts[1]);
}
public static bool IsPurchased1000Gem()
{
return IapManager.IsPurchasedProduct(IapSettings.Instance.IapDataProducts[1]);
}

}

@@ -91,16 +81,6 @@ dependency `extensions-unity-1.0.4`
- Example 1:
```csharp
public Button buttonRemoveAds;
public TextMeshProUGUI textLocalizedPriceRemoveAds;

/// <summary>
/// set text localized price for RemoveAds product
/// </summary>
void SetupTextPrice()
{
textLocalizedPriceRemoveAds.text = IapProduct.LocalizedPriceRemoveads();
}

/// <summary>
/// refresh ui button remove ads
/// disable buttonRemoveAds if RemoveAds product has been purchased
@@ -200,7 +180,7 @@ When the restore is successful, it will automatically call the successful purcha
public void OnClickRestorePurchase()
{
#if UNITY_IOS
IapManager.Instance.RestorePurchase();
IapManager.RestorePurchase();
#endif
}

4 changes: 4 additions & 0 deletions Runtime/IapDataProduct.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using UnityEngine;

namespace VirtueSky.Iap
{
@@ -12,6 +13,9 @@ public class IapDataProduct
#endif
public IapProductType iapProductType;

[Tooltip("Price config for UI or tracking")]
public float price;

[NonSerialized] public Action purchaseSuccessCallback;
[NonSerialized] public Action purchaseFailedCallback;

27 changes: 18 additions & 9 deletions Runtime/IapManager.cs
Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@ public class IapManager : MonoBehaviour, IDetailedStoreListener

private IStoreController _controller;
private IExtensionProvider _extensionProvider;
private bool IsInitialized { get; set; }
public static bool IsInitialized { get; private set; }
private IapSettings iapSettings;

private void Awake()
@@ -65,7 +65,7 @@ void InitImpl()
builder.Configure<IGooglePlayConfiguration>();

UnityPurchasing.Initialize(this, builder);
IsInitialized = true;

}


@@ -179,13 +179,14 @@ public void OnInitialized(IStoreController controller, IExtensionProvider extens
_controller = controller;
_extensionProvider = extensions;

#if UNITY_ANDROID && !UNITY_EDITOR
foreach (var product in _controller.products.all)
{
if (product != null && !string.IsNullOrEmpty(product.transactionID))
_controller.ConfirmPendingPurchase(product);
}
#endif
// #if UNITY_ANDROID && !UNITY_EDITOR
// foreach (var product in _controller.products.all)
// {
// if (product != null && !string.IsNullOrEmpty(product.transactionID))
// _controller.ConfirmPendingPurchase(product);
// }
// #endif
IsInitialized = true;
}

public void OnPurchaseFailed(Product product, PurchaseFailureDescription failureDescription)
@@ -238,6 +239,12 @@ ProductType ConvertProductType(IapProductType iapProductType)
}

#region Internal API
private SubscriptionInfo InternalGetSubscriptionInfo(IapDataProduct product)
{
if (_controller == null || ConvertProductType(product.iapProductType) != ProductType.Subscription || !_controller.products.WithID(product.Id).hasReceipt) return null;
var subscriptionManager = new SubscriptionManager(InternalGetProduct(product), null);
return subscriptionManager.getSubscriptionInfo();
}

private IapDataProduct InternalPurchaseProduct(string id)
{
@@ -294,6 +301,8 @@ public static IapDataProduct PurchaseProduct(IapDataProduct product) =>

public static Product GetProduct(string id) => _instance.InternalGetProduct(id);
public static Product GetProduct(IapDataProduct product) => _instance.InternalGetProduct(product);
public static SubscriptionInfo GetSubscriptionInfo(IapDataProduct iapDataProduct) =>
_instance.InternalGetSubscriptionInfo(iapDataProduct);
#if UNITY_IOS
public static void RestorePurchase() => _instance.InternalRestorePurchase();
#endif
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "com.wolf-package.in-app-purchasing",
"name": "com.wolf-org.in-app-purchasing",
"displayName": "UnityCommon-IAP",
"description": "Support for unity in-app-purchasing",
"version": "1.0.4",
"version": "1.0.8",
"unity": "2021.3",
"category": "virtuesky",
"license": "MIT",
@@ -19,6 +19,6 @@
],
"dependencies": {
"com.unity.purchasing": "4.12.0",
"com.wolf-package.extensions": "https://github.com/wolf-package/extensions-unity.git#1.0.4"
"com.wolf-org.extensions": "https://github.com/wolf-org/extensions-unity.git#1.0.5"
}
}