Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
MrVeit committed Jul 29, 2024
2 parents 4cbbab7 + b27a28e commit 9607462
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 25 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,5 @@ README.md.meta
/Unigram Payment/Editor Resources/Internal Storage
TextMesh Pro.meta
Resources.meta
/Assets
Assets.meta
21 changes: 12 additions & 9 deletions Unigram Payment/Samples/TestUnigramPaymentTemplate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -115,19 +115,21 @@ private void SessionTokenRefreshed()
SetInteractableStateByButton(_refundStarsButton, false);
}

private void PaymentInvoiceCreated(string url)
private void PaymentInvoiceCreated(string itemPayloadId, string url)
{
_latestInvoiceLink = url;

_debugBar.text = $"{DEBUG_PREFIX} The link to purchase the test item has been successfully generated: {url}";
_debugBar.text = $"{DEBUG_PREFIX} The link to purchase the" +
$" test item {itemPayloadId} has been successfully generated: {url}";

SetInteractableStateByButton(_createInvoiceButton, true);
}

private void PaymentInvoiceCreateFailed()
private void PaymentInvoiceCreateFailed(string itemPayloadId)
{
_debugBar.text = $"{DEBUG_PREFIX} Failed to create a payment link for one of the following reasons:" +
" SDK is not initialized, API server is not started, incorrectly filled in product data.";
_debugBar.text = $"{DEBUG_PREFIX} Failed to create a payment link for" +
$" item {itemPayloadId} for one of the following reasons:" +
$" SDK is not initialized, API server is not started, incorrectly filled in product data.";
}

private void TargetItemPurchased(PaymentReceiptData receipt)
Expand All @@ -142,13 +144,14 @@ private void TargetItemPurchased(PaymentReceiptData receipt)
SetInteractableStateByButton(_refundStarsButton, true);
}

private void TargetItemPurchaseFailed()
private void TargetItemPurchaseFailed(SaleableItem failedPurchaseItem)
{
_debugBar.text = $"{DEBUG_PREFIX} Failed to purchase an item for one of the following reasons: " +
"SDK not initialized, API server not configured, or incorrect item data entered.";
_debugBar.text = $"{DEBUG_PREFIX} Failed to purchase an item {failedPurchaseItem.Name}" +
$" for one of the following reasons: SDK not initialized," +
$" API server not configured, or incorrect item data entered.";
}

private void RefundTransactionFinished(bool isSuccess)
private void RefundTransactionFinished(string transactionId, bool isSuccess)
{
if (isSuccess)
{
Expand Down
Binary file modified Unigram Payment/Samples/UnigramPayment.Demo.unitypackage
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,18 @@ namespace UnigramPayment.Core.Common
{
public interface IUnigramPaymentTransactionCallbacks
{
delegate void OnInvoiceLinkCreate(string url);
delegate void OnInvoiceLinkCreateFail();
delegate void OnInvoiceLinkCreate(string itemPayloadId, string url);
delegate void OnInvoiceLinkCreateFail(string itemPayloadId);
delegate void OnItemPurchase(PaymentReceiptData receipt);
delegate void OnItemPurchaseFail();
delegate void OnRefundTransactionFinish(bool isSuccess);
delegate void OnItemPurchaseFail(SaleableItem failedPurchaseItem);
delegate void OnRefundTransactionFinish(string transactionId, bool isSuccess);

event OnInvoiceLinkCreate OnInvoiceLinkCreated;
event OnInvoiceLinkCreateFail OnInvoiceLinkCreateFailed;

event OnItemPurchase OnItemPurchased;
event OnItemPurchaseFail OnItemPurchaseFailed;

event OnRefundTransactionFinish OnRefundTransactionFinished;
}
}
18 changes: 16 additions & 2 deletions Unigram Payment/Source/Runtime/Core/Bridge/WebAppAPIBridge.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using UnityEngine;
using System.Runtime.InteropServices;
using AOT;
using UnigramPayment.Runtime.Utils.Debugging;
Expand Down Expand Up @@ -134,8 +135,21 @@ public static void OpenTelegramDeepLink(string url)
internal static void OpenPurchaseInvoice(string url,
Action<string, string> onInvoiceSuccessfullyPaid, Action<string> onInvoicePayFailed)
{
_onInvoiceSuccessfullyPaid = onInvoiceSuccessfullyPaid;
_onInvoicePayFailed = onInvoicePayFailed;
_onInvoiceSuccessfullyPaid = (status, paymentReceipt) =>
{
onInvoiceSuccessfullyPaid?.Invoke(status, paymentReceipt);
_onInvoiceSuccessfullyPaid = null;
_onInvoicePayFailed = null;
};

_onInvoicePayFailed = (status) =>
{
onInvoicePayFailed?.Invoke(status);
_onInvoiceSuccessfullyPaid = null;
_onInvoicePayFailed = null;
};

OpenInvoice(url, OnInvoiceSuccessfullyPaid, OnInvoicePayFailed);
}
Expand Down
28 changes: 18 additions & 10 deletions Unigram Payment/Source/Runtime/Core/UnigramPaymentSDK.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ public static UnigramPaymentSDK Instance
[Tooltip("Store all items for purchase, to add new ones call 'Create -> Unigram Payment -> Saleable Item' and add it to the list.")]
[SerializeField, Space] private SaleableItemsStorage _itemsStorage;

private SaleableItem _currentPurchaseItem;

private PaymentReceiptData _lastPaymentReceipt;

/// <summary>
Expand Down Expand Up @@ -136,7 +138,8 @@ public void Initialize()
AuthorizeClient((tokenClaimed) =>
{
OnInitialize(true);
},() =>
},
() =>
{
OnInitialize(false);
});
Expand All @@ -158,18 +161,20 @@ public void CreateInvoice(SaleableItem item)
return;
}

_currentPurchaseItem = item;

StartCoroutine(BotAPIBridge.CreateInvoice(item, (invoiceLink) =>
{
LastInvoiceLink = invoiceLink;
if (LastInvoiceLink == null)
{
OnInvoiceLinkCreateFail();
OnInvoiceLinkCreateFail(item.Id);
return;
}
OnInvoiceLinkCreate(LastInvoiceLink);
OnInvoiceLinkCreate(item.Id, LastInvoiceLink);
}));
}

Expand All @@ -189,7 +194,7 @@ public void OpenInvoice(string invoiceUrl)
{
if (receipt == null)
{
OnItemPurchaseFail();
OnItemPurchaseFail(_currentPurchaseItem);
return;
}
Expand All @@ -199,7 +204,7 @@ public void OpenInvoice(string invoiceUrl)
}
else if (status is PaymentStatus.cancelled or PaymentStatus.failed)
{
OnItemPurchaseFail();
OnItemPurchaseFail(_currentPurchaseItem);
}
});
}
Expand All @@ -217,7 +222,7 @@ public void Refund(PaymentReceiptData receipt)

StartCoroutine(BotAPIBridge.RefundPayment(telegramId, receipt.TransactionId, (isSuccess) =>
{
OnRefundTransactionFinish(isSuccess);
OnRefundTransactionFinish(LastRefundedTransaction, isSuccess);
UnigramPaymentLogger.Log($"Refund process finished with result: {isSuccess}");
}));
Expand Down Expand Up @@ -327,12 +332,15 @@ private void CreateInstance()
private void OnSessionTokenRefresh() => OnSessionTokenRefreshed?.Invoke();
private void OnSessionTokenRefshFail() => OnSessionTokenRefreshFailed?.Invoke();

private void OnInvoiceLinkCreate(string invoiceUrl) => OnInvoiceLinkCreated?.Invoke(invoiceUrl);
private void OnInvoiceLinkCreateFail() => OnInvoiceLinkCreateFailed?.Invoke();
private void OnInvoiceLinkCreate(string itemId,
string invoiceUrl) => OnInvoiceLinkCreated?.Invoke(itemId, invoiceUrl);
private void OnInvoiceLinkCreateFail(string itemId) => OnInvoiceLinkCreateFailed?.Invoke(itemId);

private void OnItemPurchase(PaymentReceiptData receipt) => OnItemPurchased?.Invoke(receipt);
private void OnItemPurchaseFail() => OnItemPurchaseFailed?.Invoke();
private void OnItemPurchaseFail(SaleableItem failedPurchaseItem) =>
OnItemPurchaseFailed?.Invoke(failedPurchaseItem);

private void OnRefundTransactionFinish(bool isSuccess) => OnRefundTransactionFinished?.Invoke(isSuccess);
private void OnRefundTransactionFinish(string transactionId,
bool isSuccess) => OnRefundTransactionFinished?.Invoke(transactionId, isSuccess);
}
}

0 comments on commit 9607462

Please sign in to comment.