public static PaymentBase CreateMaskedClone(this PaymentBase obj) { PaymentBase clone = obj.DeepClone(); clone.Card?.Mask(); return(clone); }
public PaymentKey(PaymentBase entity) { this.Entity = entity; if (entity != null) { this.paymentCode = entity.PaymentCode; } }
public static bool FromOperationResponse(Operation.OperationBody operation, stellar_dotnet_sdk.KeyPair source, PaymentResults pResult, byte[] transactionHash, out PaymentBase payment) { payment = null; int asset; //check supported deposit operations is overkill, but we need to keep SupportedDepositOperations up to date bool result = false; if (!SupportedDepositOperations.Contains(operation.Discriminant.InnerValue)) { return(false); } switch (operation.Discriminant.InnerValue) { case OperationTypeEnum.PAYMENT: if (!TryGetAsset(operation.PaymentOp.Asset, out asset)) { return(result); } var amount = operation.PaymentOp.Amount.InnerValue; var destKeypair = stellar_dotnet_sdk.KeyPair.FromPublicKey(operation.PaymentOp.Destination.Ed25519.InnerValue); if (Global.Constellation.Vault.Equals((RawPubKey)destKeypair.PublicKey)) { payment = new Deposit { Destination = new RawPubKey() { Data = source.PublicKey }, Amount = amount, Asset = asset, TransactionHash = transactionHash } } ; else if (Global.Constellation.Vault.Equals((RawPubKey)source.PublicKey)) { payment = new Withdrawal { TransactionHash = transactionHash } } ; if (payment != null) { payment.PaymentResult = pResult; result = true; } break; case OperationTypeEnum.PATH_PAYMENT_STRICT_SEND: case OperationTypeEnum.PATH_PAYMENT_STRICT_RECEIVE: //TODO: handle path payment break; case OperationTypeEnum.ACCOUNT_MERGE: //TODO: handle account merge break; } return(result); }
public ActionResult CheckoutCompletedPage(ContentModel model) { var currentCart = CurrentCart.Create(SnuffoSettings.STORE_NAME); if (currentCart.ItemsCount == 0) { return(Redirect($"/{CurrentUser.LanguageCode}/cart/")); } try { var order = currentCart.GetOrder(); var checkoutOrder = OrderMapper.Map <CheckoutOrder>(order); string baseUrl = WebUtils.GetApplicationUrlPath(HttpContext.ApplicationInstance.Context); checkoutOrder.CallBackUrlOnPaymentSucceed = $"{baseUrl}{CurrentUser.LanguageCode}/checkout-completed"; checkoutOrder.CallBackUrlOnPaymentFailed = $"{baseUrl}{CurrentUser.LanguageCode}/checkout-cancelled"; checkoutOrder.OrderDetails.AddRange(OrderMapper.Map <List <CheckoutOrderDetail> >(order.ProductOrderDetails)); checkoutOrder.OrderDetails.AddRange(OrderMapper.Map <List <CheckoutOrderDetail> >(order.TicketOrderDetails)); var payment = PaymentBase.CreatePayment(checkoutOrder); if (payment.PaymentMethod == CS.PaymentMethod.PayPal) { PayPalPayment paypal = payment as PayPalPayment; paypal.IsSandbox = string.Equals(order.PaymentMethod["Mode"], "sandbox"); paypal.ClientId = order.PaymentMethod["ClientId"]; paypal.ClientSecret = order.PaymentMethod["ClientSecret"]; } if (Request.QueryString.Count == 0) { var response = payment.DoPayment(); order.PaymentTransactionId = response.PaymentTransactionId; // Save the order currentCart.SaveOrder(order); return(Redirect(response.PaymentServiceUrl)); } order.PayerId = Request.QueryString["PayerID"]; if (payment.RequestPaymentStatus(order.PaymentTransactionId, order.PayerId, out string message) != PaymentStatus.Success) { order.PaymentError = message; // Save order order.OrderStatusId = OrderStatus.Cancelled.Id; currentCart.SaveOrder(order); return(Redirect($"/{CurrentUser.LanguageCode}/checkout-cancelled/")); } // Tickets are sent immediately order.OrderStatusId = (order.ProductOrderDetails.IsNullOrEmpty()) ? OrderStatus.Sent.Id : OrderStatus.Started.Id; order.Paid = true; order.PaidAmount = order.CalculateTotal(); currentCart.CompleteOrder(order); if (order.ProductOrderDetails.Any()) { // Send order confirmation mail. MailController.Instance(Request, model.Content, CurrentUser.LanguageCode).ConfirmOrderMail(order).Send(); } if (order.TicketOrderDetails.Any()) // tickets bought { MailController.Instance(Request, model.Content, CurrentUser.LanguageCode).SendTicketsPDF(order).Send(); } } catch (OrderAlreadyProcessedException) { // Clear cart. currentCart.ClearCart(); } return(CurrentTemplate(model)); }