public ActivateReservationResponse Activate(global::Nop.Core.Domain.Orders.Order order) { var reservation = order.AuthorizationTransactionId; if (!string.IsNullOrEmpty(order.CaptureTransactionId)) { throw new KlarnaCheckoutException("The payment has already been captured. Order Id: " + order.Id); } try { var configuration = new Configuration(Country.Code.SE, Language.Code.SV, Currency.Code.SEK, Encoding.Sweden) { Eid = _klarnaSettings.EId, Secret = _klarnaSettings.SharedSecret, IsLiveMode = !_klarnaSettings.TestMode }; var api = new Api(configuration); return(api.Activate(reservation)); } catch (Exception ex) { throw new KlarnaCheckoutException("Error activating Klarna reservation for order " + order.Id, ex); } }
public void Acknowledge(global::Nop.Core.Domain.Orders.Order order) { try { var entity = _klarnaRepository.Table.First(x => x.OrderGuid == order.OrderGuid); var resourceUri = new Uri(entity.KlarnaResourceUri); var apiOrder = Fetch(resourceUri); var klarnaOrder = KlarnaCheckoutOrder.FromApiOrder(apiOrder); if (klarnaOrder.Status == KlarnaCheckoutOrder.StatusCheckoutComplete) { var updateData = new KlarnaCheckoutOrder { Status = KlarnaCheckoutOrder.StatusCreated, MerchantReference = new MerchantReference { OrderId1 = order.Id.ToString(CultureInfo.InvariantCulture), OrderId2 = order.OrderGuid.ToString() } }; var dictData = updateData.ToDictionary(); apiOrder.Update(dictData); order.AuthorizationTransactionId = klarnaOrder.Reservation; _orderService.UpdateOrder(order); } } catch (Exception ex) { throw new KlarnaCheckoutException("Error acknowledging Klarna order. Order Id: " + order.Id, ex); } }
public void FullRefund(global::Nop.Core.Domain.Orders.Order order) { try { var configuration = new Klarna.Api.Configuration(Country.Code.SE, Language.Code.SV, Currency.Code.SEK, Encoding.Sweden) { Eid = _klarnaSettings.EId, Secret = _klarnaSettings.SharedSecret, IsLiveMode = !_klarnaSettings.TestMode }; var api = new Api(configuration); var result = api.CreditInvoice(order.CaptureTransactionId); _logger.Information(string.Format(CultureInfo.InvariantCulture, "KlarnaCheckout: Order refunded. InvoiceNumber: {0}, AppliedTo: {1}", result, result), customer: order.Customer); order.OrderNotes.Add(new OrderNote { Note = string.Format(CultureInfo.CurrentCulture, "KlarnaCheckout: Order has been refunded. Invoice Number: {0}; Refund applied to: {1}", order.CaptureTransactionId, result), CreatedOnUtc = DateTime.UtcNow, DisplayToCustomer = false }); _orderService.UpdateOrder(order); } catch (Exception ex) { throw new KlarnaCheckoutException("An error occurred when refunding order " + order.Id, ex); } }