QR and payment fixes
This commit is contained in:
@@ -177,14 +177,29 @@ namespace Darkmatter.Fonepay
|
||||
return new QrResult
|
||||
{
|
||||
message = response.message,
|
||||
qrCode = string.IsNullOrEmpty(response.qrMessage)
|
||||
? null
|
||||
: FonepayQRGenerator.GenerateTexture(response.qrMessage),
|
||||
qrCode = TryGenerateQr(response.qrMessage),
|
||||
status = response.status,
|
||||
statusCode = response.statusCode,
|
||||
success = response.success,
|
||||
thirdpartyQrWebSocketUrl = response.thirdpartyQrWebSocketUrl,
|
||||
qrMessage = response.qrMessage,
|
||||
};
|
||||
}
|
||||
|
||||
private static Texture2D TryGenerateQr(string qrMessage)
|
||||
{
|
||||
if (string.IsNullOrEmpty(qrMessage))
|
||||
return null;
|
||||
try
|
||||
{
|
||||
return FonepayQRGenerator.GenerateTexture(qrMessage);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogWarning($"Fonepay QR render failed ({ex.Message}). " +
|
||||
"Use QrResult.qrMessage with an external renderer.");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ namespace Darkmatter.Fonepay
|
||||
internal event Action<bool> OnQrVerified;
|
||||
internal event Action<WebsocketMessage<QRPaymentStatus>> OnPaymentReceived;
|
||||
internal event Action<string> OnRawMessage;
|
||||
internal event Action<Exception> OnClosed;
|
||||
|
||||
private ClientWebSocket _client;
|
||||
private CancellationTokenSource _cts;
|
||||
@@ -51,6 +52,7 @@ namespace Darkmatter.Fonepay
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var buffer = new byte[4096];
|
||||
Exception error = null;
|
||||
|
||||
try
|
||||
{
|
||||
@@ -70,9 +72,9 @@ namespace Darkmatter.Fonepay
|
||||
{
|
||||
// Expected during disconnect.
|
||||
}
|
||||
catch (WebSocketException)
|
||||
catch (WebSocketException ex)
|
||||
{
|
||||
// Network disconnect or broken socket.
|
||||
error = ex;
|
||||
}
|
||||
catch (ObjectDisposedException)
|
||||
{
|
||||
@@ -80,7 +82,11 @@ namespace Darkmatter.Fonepay
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"WebSocket receive error: {ex.Message}");
|
||||
error = ex;
|
||||
}
|
||||
finally
|
||||
{
|
||||
OnClosed?.Invoke(error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user