mirror of
https://github.com/bitwarden/server.git
synced 2025-05-28 14:54:50 -05:00
AppleReceiptNotification class
This commit is contained in:
parent
e4c58b1d5c
commit
7b75e134d8
105
src/Billing/Models/AppleReceiptNotification.cs
Normal file
105
src/Billing/Models/AppleReceiptNotification.cs
Normal file
@ -0,0 +1,105 @@
|
||||
using System;
|
||||
using Bit.Core.Utilities;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace Bit.Billing.Models
|
||||
{
|
||||
public class AppleReceiptNotification
|
||||
{
|
||||
[JsonProperty("notification_type")]
|
||||
public string NotificationType { get; set; }
|
||||
[JsonProperty("environment")]
|
||||
public string Environment { get; set; }
|
||||
[JsonProperty("auto_renew_status")]
|
||||
public string AutoRenewStatus { get; set; }
|
||||
[JsonProperty("auto_renew_product_id")]
|
||||
public string AutoRenewProductId { get; set; }
|
||||
[JsonProperty("auto_renew_status_change_date_ms")]
|
||||
[JsonConverter(typeof(MsEpochConverter))]
|
||||
public DateTime? AutoRenewStatusChangeDate { get; set; }
|
||||
[JsonProperty("latest_receipt")]
|
||||
public string LatestReceipt { get; set; }
|
||||
[JsonProperty("latest_receipt_info")]
|
||||
public AppleReceiptNotificationInfo LatestReceiptInfo { get; set; }
|
||||
[JsonProperty("latest_expired_receipt")]
|
||||
public string LatestExpiredReceipt { get; set; }
|
||||
[JsonProperty("latest_expired_receipt_info")]
|
||||
public AppleReceiptNotificationInfo LatestExpiredReceiptInfo { get; set; }
|
||||
|
||||
public string GetOriginalTransactionId()
|
||||
{
|
||||
if(LatestReceiptInfo != null)
|
||||
{
|
||||
return LatestReceiptInfo.OriginalTransactionId;
|
||||
}
|
||||
return LatestExpiredReceiptInfo?.OriginalTransactionId;
|
||||
}
|
||||
|
||||
public string GetTransactionId()
|
||||
{
|
||||
if(LatestReceiptInfo != null)
|
||||
{
|
||||
return LatestReceiptInfo.TransactionId;
|
||||
}
|
||||
return LatestExpiredReceiptInfo?.TransactionId;
|
||||
}
|
||||
|
||||
public DateTime? GetExpiresDate()
|
||||
{
|
||||
if(LatestReceiptInfo != null)
|
||||
{
|
||||
return LatestReceiptInfo.ExpiresDate;
|
||||
}
|
||||
return LatestExpiredReceiptInfo?.ExpiresDate;
|
||||
}
|
||||
|
||||
public string GetReceiptData()
|
||||
{
|
||||
return string.IsNullOrWhiteSpace(LatestReceipt) ? LatestExpiredReceipt : LatestReceipt;
|
||||
}
|
||||
|
||||
public class AppleReceiptNotificationInfo
|
||||
{
|
||||
[JsonProperty("bid")]
|
||||
public string Bid { get; set; }
|
||||
public string ProductId { get; set; }
|
||||
[JsonProperty("original_purchase_date_ms")]
|
||||
[JsonConverter(typeof(MsEpochConverter))]
|
||||
public DateTime? OriginalPurchaseDate { get; set; }
|
||||
[JsonProperty("expires_date")]
|
||||
[JsonConverter(typeof(MsEpochConverter))]
|
||||
public DateTime? ExpiresDate { get; set; }
|
||||
[JsonProperty("purchase_date_ms")]
|
||||
[JsonConverter(typeof(MsEpochConverter))]
|
||||
public DateTime? PurchaseDate { get; set; }
|
||||
[JsonProperty("subscription_group_identifier")]
|
||||
public string SubscriptionGroupIdentifier { get; set; }
|
||||
[JsonProperty("unique_identifier")]
|
||||
public string UniqueIdentifier { get; set; }
|
||||
[JsonProperty("original_transaction_id")]
|
||||
public string OriginalTransactionId { get; set; }
|
||||
[JsonProperty("transaction_id")]
|
||||
public string TransactionId { get; set; }
|
||||
[JsonProperty("quantity")]
|
||||
public string Quantity { get; set; }
|
||||
[JsonProperty("web_order_line_item_id")]
|
||||
public string WebOrderLineItemId { get; set; }
|
||||
[JsonProperty("item_id")]
|
||||
public string ItemId { get; set; }
|
||||
}
|
||||
|
||||
public class MsEpochConverter : DateTimeConverterBase
|
||||
{
|
||||
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
||||
{
|
||||
writer.WriteRawValue(CoreHelpers.ToEpocMilliseconds((DateTime)value).ToString());
|
||||
}
|
||||
|
||||
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
||||
{
|
||||
return CoreHelpers.FromEpocMilliseconds(long.Parse(reader.Value.ToString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user