/// <summary> /// Creates a <see cref="IapPurchaseDocument" /> from a <see cref="IapPurchaseContract" />. /// </summary> /// <returns>The <see cref="IapPurchaseDocument" />.</returns> public static IapPurchaseDocument CreateFromContract(IapPurchaseContract contract) { return(new IapPurchaseDocument { Id = contract.IapPurchaseId, UserId = contract.UserId, ProductId = contract.ProductId, PurchaseDatetime = new DateDocument { Date = contract.PurchaseDatetime }, ExpirationDatetime = new DateDocument { Date = contract.ExpirationDatetime }, GoldIncrement = contract.GoldIncrement }); }
/// <summary> /// Validates the xml signature. /// </summary> /// <param name="receipt">Receipt to validate.</param> /// <returns>A validated or null IapPurchaseContract object.</returns> public IapPurchaseContract ValidateXmlSignature(XmlDocument receipt) { if (receipt == null) { throw new IapValidationException(IapValidationError.NoReceipt, "ValidateXmlSignature: no receipt"); } var iapPurchaseResult = new IapPurchaseContract(); // For actual receipt validation we strongly suggest you follow the example // https://code.msdn.microsoft.com/windowsapps/In-app-purchase-receipt-c3e0bce4 var isValid = true; if (isValid) { DateTime datetime; var productReceipt = receipt.GetElementsByTagName("ProductReceipt"); if (DateTime.TryParse(productReceipt[0].Attributes["PurchaseDate"].Value, out datetime)) { iapPurchaseResult.PurchaseDatetime = datetime; } if (DateTime.TryParse(productReceipt[0].Attributes["ExpirationDate"].Value, out datetime)) { iapPurchaseResult.ExpirationDatetime = datetime; } iapPurchaseResult.IapPurchaseId = productReceipt[0].Attributes["Id"].Value; iapPurchaseResult.ProductId = productReceipt[0].Attributes["ProductId"].Value; } else { throw new IapValidationException(IapValidationError.BadSignature, "ValidateXmlSignature: Bad receipt, signature not valid"); } return(iapPurchaseResult); }
public Task <UserContract> InsertIapPurchase(IapPurchaseContract validatedIapReciept) { throw new NotImplementedException(); }
/// <summary> /// Inserts receipt and adds gold to user. /// </summary> /// <param name="validatedIapReciept">Validated receipt values.</param> /// <returns>User object containing new gold balance.</returns> public Task <UserContract> InsertIapPurchase(IapPurchaseContract validatedIapReciept) { return(_repository.InsertIapPurchase(validatedIapReciept)); }