public void Handle(PayPalExpressCheckoutPaymentCompleted @event)
 {
     using (var context = _contextFactory.Invoke())
     {
         var orderReport = context.Find <OrderReportDetail>(@event.OrderId);
         orderReport.Payment.TotalAmountCharged = @event.Amount;
         orderReport.Payment.TipAmount          = @event.Tip;
         orderReport.Payment.MeterAmount        = @event.Meter;
         orderReport.Payment.PayPalPayerId      = orderReport.Payment.AuthorizationCode = @event.PayPalPayerId;
         orderReport.Payment.PayPalToken        = @event.Token;
         orderReport.Payment.TransactionId      = @event.TransactionId.ToSafeString().IsNullOrEmpty() ? "" : "Auth: " + @event.TransactionId;
         orderReport.Payment.IsCompleted        = true;
         context.Save(orderReport);
     }
 }
 public void Handle(PayPalExpressCheckoutPaymentCompleted @event)
 {
     using (var context = _contextFactory.Invoke())
     {
         var detail = context.Set <OrderPaymentDetail>().Find(@event.SourceId);
         if ((detail == null) || (detail.Type != PaymentType.PayPal))
         {
             throw new InvalidOperationException("Payment not found");
         }
         detail.IsCompleted       = true;
         detail.PayPalPayerId     = @event.PayPalPayerId;
         detail.AuthorizationCode = @event.PayPalPayerId;
         detail.TransactionId     = @event.TransactionId;
         context.SaveChanges();
     }
 }